package es.ejie.frmk.infraestructura.logs.base;

import es.ejie.frmk.infraestructura.logs.base.interfaces.Q70LogServidorInterface;

/**
 * Clase Fachada que crea una nueva instancia, en caso de que no exista, o
 * retorna la que tenemos. Asigna el componente delegado desde el MBean y su
 * comportamiento.
 * @version 2.0 Fecha: 20-feb-06
 */
public class Q70GestorLogs {
	private static Q70GestorLogs tracer;

	private Q70LogServidorInterface componenteAplicacion = Q70GestorLogsServidor.getSingleton();

	/** 
	 * Método estático que devuelve la única instancia de la clase <code>Q70GestorLogs</code>.
	 * @return Instancia de Q70GestorLogs
	 */
	public static Q70GestorLogs getSingleton()
	{
		if (tracer == null)
			doNew();
		return tracer;
	}

	// TODO Jgrey Se le puede hacer a todos los componente getSingleton()
	synchronized private static void doNew()
	{
		if (tracer == null)
			tracer = new Q70GestorLogs();
	}

	/**
	 * Establece el componente de logs de aplicación correspondiente
	 * @param componenteAplicacion componente de aplicación
	 */
	protected void setComponenteAplicacion(Q70LogServidorInterface componenteAplicacion)
	{
		this.componenteAplicacion = componenteAplicacion;
	}

	/**
	 * Obtiene el componente de aplicación de logs 
	 * @return Q70LogServidorInterface
	 */
	public Q70LogServidorInterface getComponenteAplicacion()
	{
		return componenteAplicacion;
	}
}
