package com.ejie.ab63.service.generarPublicacion;

import javax.jws.WebMethod;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import com.ejie.ab63.clientesWS.publicacionWebService.Notificacion;
import com.ejie.ab63.clientesWS.publicacionWebService.NotificacionPortBindingQSService1;

public class PublicarMensaje extends SpringBeanAutowiringSupport {

	private static final Logger logger = LoggerFactory.getLogger(PublicarMensaje.class);

	/**
	 * Envío al boletín mediante JMS
	 * 
	 * @param evento
	 * 
	 * @param idPeticionEnvio
	 *            Identificador del envío
	 * @return int
	 * @throws Exception
	 *             Excepción
	 */
	@WebMethod
	public static int envioMensajeJMS(String mensaje, String tipologia, String evento) throws Exception {
		PublicarMensaje.logger.info("Entramos en envioMensajeJMS");

		try {
			// PROPIEDADES DINAMICAS
			PublicarMensaje.logger.info("Generando XML");

			// INSTANCIAR EL CLIENTE DEL SERVICIO
			NotificacionPortBindingQSService1 service = new NotificacionPortBindingQSService1();
			Notificacion port = service.getNotificacionPortBindingQSPort1();

			StringBuilder sb = new StringBuilder();
			// sb.append("<![CDATA[").append(mensaje).append("]]>");
			sb.append(mensaje);

			XMLGregorianCalendar eventTimeStamp = DatatypeFactory.newInstance().newXMLGregorianCalendar();
			PublicarMensaje.logger.info("Texto del mensaje: " + sb.toString());
			PublicarMensaje.logger.info("tipologia: " + tipologia);
			PublicarMensaje.logger.info("evento: " + evento);
			PublicarMensaje.logger.info("eventTimeStamp: " + eventTimeStamp.getMillisecond());

			// INVOCAR AL WS
			String msgId = port.notificarEvento("AB63", null, evento, tipologia, null, null, null, sb.toString());

			// IDENTIFICADOR DEL EVENTO EN EL ENRUTADOR
			PublicarMensaje.logger.info("Acuse de recibo : ", msgId);

		} catch (Exception e) {
			PublicarMensaje.logger.info("Error publicando mensaje: ", e.getMessage());
			return 1;
		}
		return 0;

	}
}
