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

import es.ejie.frmk.Q70FactoriaConstantes;
import es.ejie.frmk.infraestructura.logs.accesos.Q70LogAccesosServidor;
import es.ejie.frmk.infraestructura.logs.base.Q70ConstantesLogs;
import es.ejie.frmk.infraestructura.logs.base.interfaces.Q70Log;
import es.ejie.frmk.infraestructura.logs.conectores.Q70LogConectoresServidor;
import es.ejie.frmk.infraestructura.logs.incidencias.Q70LogIncidenciasServidor;
import es.ejie.frmk.infraestructura.logs.navegacion.Q70LogNavegacionServidor;
import es.ejie.frmk.infraestructura.logs.transacciones.Q70LogTransaccionesServidor;
import es.ejie.frmk.infraestructura.utilidades.concurrencia.Q70Lock;


/**
 * Esta clase es la encargada de crear una nueva instancia, en caso de que no exista, o retornar la que usamos.
 * Además no devuelve una instancia al tipo de log (navegacion, conector, transaccion o incidencia) que estamos
 * preguntando 
 * @version 1.0   Fecha: 22-feb-06
 */
public class Q70GestorLogsServidor extends Q70GestorLogsBase{

	private static Q70GestorLogsServidor instancia = null;

	private Q70GestorLogsServidor() {
		super();
		setLock (new Q70Lock(Q70FactoriaConstantes.ID_GESTOR_LOGS));
	}
	
	/** 
	 * Método estático que devuelve la única instancia de la clase <code>Q70GestorLogsServidor</code>.
	 * @return Instancia de Q70GestorLogsServidor
	 */
	public static Q70GestorLogsServidor getSingleton() {
		if (instancia == null) {
			instancia = new Q70GestorLogsServidor();
		}
		return instancia;
	}

	protected void doDestruir() {
		instancia = null;
	}
	
	protected String getNombreLog(String logName, Q70ConfiguracionLogs configuracionLogs) {
		return logName;
	}
	
	protected Object getTipoLog(String logNameConfiguracion, Q70Log log)
	{
		if (logNameConfiguracion.equals(Q70ConstantesLogs.LOG_ACCESOS)){
			Q70LogAccesosServidor.getSingleton().setLog(log);
			return Q70LogAccesosServidor.getSingleton();
		}else if (logNameConfiguracion.equals(Q70ConstantesLogs.LOG_CONECTORES)){
			Q70LogConectoresServidor.getSingleton().setLog(log);
			return Q70LogConectoresServidor.getSingleton();
		}else if (logNameConfiguracion.equals(Q70ConstantesLogs.LOG_INCIDENCIAS)){
			Q70LogIncidenciasServidor.getSingleton().setLog(log);
			return Q70LogIncidenciasServidor.getSingleton();
		}else if (logNameConfiguracion.equals(Q70ConstantesLogs.LOG_NAVEGACION)){
			Q70LogNavegacionServidor.getSingleton().setLog(log);
			return Q70LogNavegacionServidor.getSingleton();
		}else if (logNameConfiguracion.equals(Q70ConstantesLogs.LOG_TRANSACCIONES)){
			Q70LogTransaccionesServidor.getSingleton().setLog(log);
			return Q70LogTransaccionesServidor.getSingleton();
		}
		return log;
	}
}