package es.ejie.frmk.infraestructura.seguridad;
import java.io.InputStream;

import es.ejie.frmk.Q70Factoria;
import es.ejie.frmk.control.arranque.Q70GestorArranqueConfiguracionServidor;
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.Q70Configurable;

/**
 * @version 1.0
 * Fecha: 19-dic-03
 */
public class Q70Configurador implements Q70Configurable {

	String fichero;
	
	/**
	 * @param ficheroXML nombre del fichero XML de configuración
	 */
	public Q70Configurador(String ficheroXML) {
		this.fichero=ficheroXML;
	}

	/**
	 * método que genera la configuración
	 */
	public void lanzarConfigurador() throws Q70FrameworkException{
		InputStream fis = Q70GestorArranqueConfiguracionServidor.getResourceAsStream(fichero);
		es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurador cu =	new es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurador(this, fis);
		try
		{
			cu.generateConfiguration();
		}
		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 lanzarConfigurador de la clase Q70Configurador");
			}
			throw new Q70FrameworkException(Q70Constantes.ID_COMPONENTE,this.getClass().toString(),"lanzarConfigurador","Se ha producido un error en el método lanzarConfigurador.",e);
		}
	}

	/**
	 * @see es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurable#inicioConfiguracion()
	 */
	public void beginConfiguration() {
	}

	/**
	 * @see es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurable#finConfiguracion()
	 */
	public void endConfiguration() {
	}

	/**
	 * @see es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurable#inicioLista(java.lang.String, java.lang.String, java.lang.String)
	 */
	public void beginList(String nombre, String nivel, String path) {
	}
	
	/**
	 * @see es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurable#finLista(java.lang.String, java.lang.String, java.lang.String)
	 */
	public void endList(String nombre, String nivel, String path) {
	}
	
	/**
	 * @see es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurable#inicioEstructura(java.lang.String, java.lang.String, java.lang.String)
	 */
	public void beginStructure(String nombre, String nivel, String path) {
	}
	
	/**
	 * @see es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurable#finEstructura(java.lang.String, java.lang.String, java.lang.String)
	 */
	public void endStructure(String nombre, String nivel, String path) {
	}

	/**
	 * @see es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurable#inicioPropiedad(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
	 */
	public void beginProperty(String nombre, String valor, String nivel, String path) {
		if (nivel.equals("/propiedad")) {
			if (nombre.equals(Q70Constantes.URL_LOGON)){
				 Q70GestorSeguridad.getSingleton().setLogonPage(valor);
			}
			if (nombre.equals(Q70Constantes.CACHEAR_FUNCIONES)){
				if(valor.equals("true") || valor.equals("false"))
				 	Q70GestorSeguridad.getSingleton().setCacheable(valor);
			}
		}
	}

	/**
	 * @see es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurable#finPropiedad(java.lang.String, java.lang.String, java.lang.String)
	 */
	public void endProperty(String nombre, String nivel, String path) {
	}
}
