package es.ejie.frmk.infraestructura.sms;

import java.util.HashMap;
import java.util.Hashtable;

import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;

import es.ejie.frmk.Q70Factoria;
import es.ejie.frmk.Q70FactoriaConstantes;
import es.ejie.frmk.control.arranque.Q70MBeanBase;
import es.ejie.frmk.control.excepciones.Q70FrameworkException;
import es.ejie.frmk.infraestructura.traza.Q70TraceLevel;
import es.ejie.frmk.infraestructura.traza.Q70TrazaInterface;
import es.ejie.frmk.infraestructura.utilidades.configurador.Q70Administrable;

/**
 * Clase pasarela que asigna la configuración de la pasarela URL de SMS por defecto.
 * También gestiona el componente de SMS.
 * @version 2.0 Fecha: 07-jun-06
 */
public class Q70MBeanGestorSMS extends Q70MBeanBase implements Q70MBeanGestorSMSMBean {

	/**
	 * Constructor de clase
	 */
	public Q70MBeanGestorSMS()
	{
		super();
	}
	
	/**
	 * Devuelve el identificador de Gestor de SMS
	 * @return
	 */
	public String getTipoComponente()
	{
		return Q70FactoriaConstantes.ID_GESTOR_SMS;
	}
	
	/**
	 * Añadir el componente al pool de componentes
	 */
	public void anadirComponenteFactoria()
	{
		Q70Factoria.setGestorSMS(getClaseComponente());
	}
	
	/**
	 * Asigna los valores por defecto del fichero de configuracionSMS.xml
	 * @param configuracion
	 */
	public void doConfiguracionComponente(Object configuracion) throws Q70FrameworkException {
		try {
			((Q70GestorSMSServidorInterface)getClaseComponente()).setUrlPasarelaSMS((String)((HashMap)configuracion).get("urlSMS"));
			((Q70GestorSMSServidorInterface)getClaseComponente()).setPrefijoSMS((String)((HashMap)configuracion).get("prefijoSMS"));
		} catch (Exception e) {
			Q70TrazaInterface traza = Q70Factoria.getTraza();
			if (traza.isTraceActive()) {
				traza.trace(Q70Constantes.ID_COMPONENTE, Q70TraceLevel.ERROR, "Se ha producido un error en el método doConfiguracionComponente de la clase Q70MBeanGestorSMS");
			}
			throw new Q70FrameworkException(Q70Constantes.ID_COMPONENTE,this.getClass().toString(),"doConfiguracionComponente","Se ha producido un error en el método doConfiguracionComponente.",e);
		}
	}
	
	/**
	 * @param claseComponente
	 */
	public void setComponenteAplicacion (Q70Administrable claseComponente)
	{
		Q70GestorSMS.getSingleton().setComponenteDelegado((Q70GestorSMSServidorInterface)claseComponente);
	}

	/**
	 * @return ObjectName (nombre del Bean)
	 * @exception MalformedObjectNameException
	 */
	public ObjectName getNombreMBean() throws MalformedObjectNameException {
		Hashtable atributos = doMapaAtributos(getTipoComponente(), this.getClass().getName(), getAplicacion());
		return new ObjectName(getDominioMBean(),atributos);
	}
}
