/*
 * Creado el 12-feb-04
 *
 * Para cambiar la plantilla para este archivo generado vaya a
 * Ventana&gt;Preferencias&gt;Java&gt;Generación de código&gt;Código y comentarios
 */
package es.ejie.frmk.control.excepciones;

import java.io.InputStream;
import java.util.HashMap;

import es.ejie.frmk.Q70Factoria;
import es.ejie.frmk.control.arranque.Q70GestorArranqueConfiguracion;
import es.ejie.frmk.infraestructura.traza.Q70TraceLevel;
import es.ejie.frmk.infraestructura.traza.Q70TrazaInterface;
import es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurable;
import es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurador;

/**
 * @version 1.0
 * Fecha: 12-feb-04
 */
public class Q70ConfiguradorExcepciones implements Q70Configurable {

	private String fichero = null;
	private HashMap hm = null;
	private String paginaError = null;
	
	private static final String ERROR_PAGE = "errorPage";
	
	private static final String COMPONENTE = "GESTOR_EXCEPCIONES_SERVIDOR";
	
	/**
	 * Constructor del <code>ConfiguradorExcepciones</code>.
	 * 
	 * @param <code>String</code> nombre del fichero XML de configuración
	 */
	public Q70ConfiguradorExcepciones (String ficheroXML)
	{
		this.fichero=ficheroXML;
	}

	/**
	 * Método que genera la configuración del componente 
	 */
	public void lanzarConfigurador () throws Q70FrameworkException{
		InputStream fis = Q70GestorArranqueConfiguracion.getApplicationConfigAsStream(fichero);
		Q70Configurador conf =	new Q70Configurador(this, fis);
		try
		{
			conf.generateConfiguration();
		}
		catch (Exception e)
		{
			Q70TrazaInterface traza = Q70Factoria.getTraza();
			if (traza.isTraceActive()){
				traza.trace(COMPONENTE, Q70TraceLevel.ERROR, "Se ha producido un error en el método lanzarConfigurador de la clase Q70ConfiguradorExcepciones");
			}
			throw new Q70FrameworkException(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 strNombre, String strNivel, String strPath) {
		if (strNivel.equals("/lista")) {
			hm = new HashMap();
		}
	}

	/**
	 * @see es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurable#finLista(java.lang.String, java.lang.String, java.lang.String)
	 */
	public void endList(String strNombre, String strNivel, String strPath) {
		if (strNivel.equals("/lista")){
			Q70GestorDeExcepciones.getSingleton().setErrorPages(hm);
		}
	}

	/**
	 * @see es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurable#inicioEstructura(java.lang.String, java.lang.String, java.lang.String)
	 */
	public void beginStructure(String strNombre, String strNivel,	String strPath) {
	}

	/**
	 * @see es.ejie.frmk.infraestructura.utilidades.configurador.Q70Configurable#finEstructura(java.lang.String, java.lang.String, java.lang.String)
	 */
	public void endStructure(String strNombre,	String strNivel, String strPath) {
		if (strNivel.equals("/lista/estructura")){
			hm.put(strNombre,paginaError);
		}
	}

	/**
	 * @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 strNombre, String strValor, String strNivel,	String strPath) {
		if (strNivel.equals("/lista/estructura/propiedad")){
			if (strNombre.equals(ERROR_PAGE)){
				paginaError = strValor;
			}
		}
	}

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

}
