package es.ejie.frmk.infraestructura.traza;

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.logs.base.Q70ConfiguracionLog;
import es.ejie.frmk.infraestructura.logs.base.Q70ConstantesLogs;
import es.ejie.frmk.infraestructura.utilidades.configurador.Q70Administrable;


/**
 * @version: 2.0   Fecha: 20-feb-2006
 */
public class Q70MBeanTraza extends Q70MBeanBase implements Q70MBeanTrazaMBean{

	public Q70MBeanTraza() {
		super();
	}
	
	/**
	 * @see es.ejie.frmk.control.arranque.Q70MBeanBase#doConfiguracionComponente(java.lang.Object)
	 */
	protected void doConfiguracionComponente(Object configuracion) throws Q70FrameworkException{
		try {
			Q70ConfiguracionLog configAux = (Q70ConfiguracionLog)configuracion;
			configAux.setProperty(Q70ConstantesLogs.CODIGO_APLICACION, getAplicacion());
			((Q70TrazaServidorInterface)getClaseComponente()).setConfiguracionLog(configAux);
		} catch (Exception e) {
			System.err.println("Se ha producido un error en el método doConfiguracionComponente de la clase Q70MBeanTraza");
			throw new Q70FrameworkException(Q70ConstantesLogs.TRAZA,this.getClass().toString(),"doConfiguracionComponente","Se ha producido un error en el método doConfiguracionComponente.",e);
		}
	}
	
	/**
	 * @see es.ejie.frmk.control.arranque.Q70MBeanBase#anadirComponenteFactoria()
	 */
	protected void anadirComponenteFactoria() {
		Q70Factoria.setTraza(getClaseComponente());
	}

	/**
	 * @see es.ejie.frmk.control.arranque.Q70MBeanBase#setComponenteAplicacion(es.ejie.frmk.infraestructura.utilidades.configurador.Q70Administrable)
	 */
	protected void setComponenteAplicacion(Q70Administrable claseComponente) {
		Q70Traza.getSingleton().setComponenteAplicacion((Q70TrazaServidorInterface)claseComponente);		
	}

	/**
	 * @return el ID de componente Traza
	 */
	private String getTipoComponente() {
		return Q70FactoriaConstantes.ID_GESTOR_TRAZA;
	}

	/**
	 * @see es.ejie.frmk.control.arranque.Q70MBeanInterface#getNombreMBean()
	 */
	public ObjectName getNombreMBean() throws MalformedObjectNameException {
		Hashtable atributos = doMapaAtributos(getTipoComponente(), this.getClass().getName(), getAplicacion());
		return new ObjectName(getDominioMBean(),atributos);
	}
}