/*
 * Creado el 18-dic-03
 */
package es.ejie.frmk.infraestructura.logs.base;

import java.util.HashMap;
import java.util.Map;

/**
 * @author UFRM004
 */
public class Q70ConstantesLogs
{
	private Q70ConstantesLogs(){}

	public static final String DATE_FORMAT ="yyyy/MM/dd HH:mm:ss SSS";
	public static final String TIMESTAMP = "TIMESTAMP";
	//propiedad de la configuración que indica donde escribe el log.
	public static final String DESTINO = "DESTINO";
	//posibilidades implementadas
	public static final String TARGET_SIZE_BACKUP_FILE = "FICHERO_BACKUP_VOLUMEN";
	public static final String TARGET_DATE_BACKUP_FILE = "FICHERO_BACKUP_TIEMPO";
	public static final String TARGET_DATABASE = "BASE_DATOS";
	public static final String TARGET_CONSOLE = "CONSOLA";

	//Propiedad que indica los campos a escribir 
	//provinientes del has asociado al current thread (commonDataManager)
	//private final String ATRIBUTOS_GENERICOS ="ATRIBUTOS_GENERICOS";
	public static final String ACTIVO = "ACTIVO";
	public static final String SI = "SI";
	public static final String NO = "NO";
	
	//propiedades que contienen los datos para configurar el log
	public static final int LOG_NAME_SIZE =17;
	public static final String TABLA = "TABLA";
	public static final String DATASOURCE = "DATASOURCE";
	public static final String FICHERO = "FICHERO";
	public static final String PATRON_FRECUENCIA = "PATRON_FRECUENCIA";
	public static final String TAMANO_MAXIMO = "TAMANO_MAXIMO";
	public static final String BUFFERSIZE = "BUFFERSIZE";
	//Contiene el codigo de aplicacion del log para identificar el log/traza que se esta configurando
	public static final String CODIGO_APLICACION = "CODIGO_APLICACION";	

	public static final String ID_COMPONENTE = "LOGS";

	public static final String ATRIBUTOS_GENERICOS = "ATRIBUTOS_GENERICOS";
	public static final String ATRIBUTOS_MENSAJE = "ATRIBUTOS_MENSAJE";
	
	public static final String LOG_REMOTO_ACTIVO = "LOG_REMOTO_ACTIVO";
	public static final String LOG_REMOTO_URL = "LOG_REMOTO_URL";
	public static final String PATH_LOG_REMOTO_ACTIVO = "/CONFIGURACION/LOG_REMOTO_ACTIVO";
	public static final String PATH_LOG_REMOTO_URL = "/CONFIGURACION/LOG_REMOTO/LOG_REMOTO_URL";
	
	public static final String ERROR_CONFIGURACION_LOG = "El log debe ser configurado antes de usarse";
	public static final String ERROR_CONFIGURACION_TRAZA = "La traza debe ser configurada antes de usarse";
	public static final String LOG_INCIDENCIAS = "LOG_INCIDENCIAS";
	public static final String LOG_ACCESOS = "LOG_ACCESOS";
	public static final String LOG_NAVEGACION = "LOG_NAVEGACION";
	public static final String LOG_TRANSACCIONES = "LOG_TRANSACCIONES";
	public static final String LOG_CONECTORES = "LOG_CONECTORES";
	public static final String TRAZA = "TRACER";
	public static final String LOG = "LOGGER";

	//tipos de acceso
	public static final String TIPO_ACCESO_LECTURA = "LECTURA";
	public static final String TIPO_ACCESO_MODIFICACION = "MODIFICACION";
	public static final String TIPO_ACCESO_BORRADO = "BORRADO";
	public static final String TIPO_ACCESO_INSERT = "INSERT";
	public static final String TIPO_ACCESO_CREATE = "CREATE";

	//tipos de respuesta de navegación
	public static final String RESPUESTA_NAVEGACION_OK = "OK";
	public static final String RESPUESTA_NAVEGACION_ERROR = "ERROR";
	public static final String RESPUESTA_NAVEGACION_ANOMALA = "NAV ANOMALA";
	//tiops de navegacion
	public static final String TIPO_NAVEGACION_ENTRADA = "ENTRADA";
	public static final String TIPO_NAVEGACION_SALIDA = "SALIDA";

	//tipos de respuesta transaccion
	public static final String RESPUESTA_TX_OK = "OK";
	public static final String RESPUESTA_TX_ERROR = "ERROR";
	//Resultado de la transacción
	public static final String RESULTADO_TX_BEGIN = "BEGIN";
	public static final String RESULTADO_TX_INITIATED = "INITIATED";
	public static final String RESULTADO_TX_COMMIT = "COMMIT";
	public static final String RESULTADO_TX_ROLLBACK = "ROLLBACK";
	public static final String RESULTADO_TX_NA = "NA";

	//tipos de respuesta de connectores
	public static final String RESULTADO_CONECTORES_OK = "OK";
	public static final String RESULTADO_CONECTORES_ERROR = "ERROR";

	//GLOBALES
	public static final String APLICACION = "APLICACION";
	public static final String SIZE_APLICACION= "(15)";
	public static final String COD_PAIS = "COD_PAIS";
	public static final String SIZE_COD_PAIS = "(2)";
	public static final String CANAL = "CANAL";
	public static final String SIZE_CANAL = "(10)";
	public static final String COD_ENTIDAD = "COD_ENTIDAD";
	public static final String SIZE_COD_ENTIDAD = "(15)";
	public static final String ID_USUARIO = "ID_USUARIO";
	public static final String SIZE_ID_USUARIO = "(25)";
	public static final String ID_SESION = "ID_SESION";
	public static final String SIZE_ID_SESION = "(25)";
	public static final String COD_OPERACION = "COD_OPERACION";
	public static final String SIZE_COD_OPERACION = "(10)";
	public static final String NUM_OPERACION = "NUM_OPERACION";
	public static final String SIZE_NUM_OPERACION = "(10)";
	public static final String COD_PAGINA = "COD_PAGINA";
	public static final String SIZE_COD_PAGINA = "(10)";
	public static final String NUM_PAGINA = "NUM_PAGINA";
	public static final String SIZE_NUM_PAGINA = "(10)";

	//MENSAJE
	public final static String COD_FUNCION = "COD_FUNCION";
	//public final static String DATASOURCE = "DATASOURCE";
	public final static String TABLA_ACCEDIDA = "TABLA_ACCEDIDA";
	public final static String TIPO_ACCESO = "TIPO_ACCESO";
	public final static String COD_RESPUESTA = "COD_RESPUESTA";
	public final static String TIPO_CONECTOR = "TIPO_CONECTOR";
	public final static String MENSAJE_ENVIADO = "MENSAJE_ENVIADO";
	public final static String CODIGO_RESPUESTA = "CODIGO_RESPUESTA";
	public final static String RESULTADO_TRANSACCION = "RESULTADO_TRANSACCION";
	public final static String DATOS_RESPUESTA = "DATOS_RESPUESTA";
	public final static String TIPO_SALIDA = "TIPO";
	public final static String COMPONENTE = "COMPONENTE";
	public final static String EXCEPCION = "EXCEPCION";
	public final static String GRAVEDAD = "GRAVEDAD";
	public final static String PILA = "PILA";
	public final static String COD_FUNCION_NEGOCIO = "COD_FUNCION_NEGOCIO";
	public final static String METODO_FUNCION_NEGOCIO = "METODO_FUNCION_NEGOCIO";
	public final static String DATOS_FUNCION_NEGOCIO = "DATOS_FUNCION_NEGOCIO";
	public static final String NIVEL = "NIVEL";
	public static final String MENSAJE = "MENSAJE";
	public static final String SQL = "SQL";
	public final static String DEFAULT = "DEFAULT";

	public final static String DELIMITER = ",";

	public final static String SIZE_COD_FUNCION = "(15)";
	public final static String SIZE_DATASOURCE = "(15)";
	public final static String SIZE_TABLA_ACCEDIDA = "(30)";
	public final static String SIZE_TIPO_ACCESO = "(12)";
	public final static String SIZE_COD_RESPUESTA = "(10)";
	public final static String SIZE_TIPO_CONECTOR = "(15)";
	public final static String SIZE_MENSAJE_ENVIADO = "(255)";
	public final static String SIZE_CODIGO_RESPUESTA = "(10)";
	public final static String SIZE_RESULTADO_TRANSACCION = "(10)";
	public final static String SIZE_DATOS_RESPUESTA = "(255)";
	public final static String SIZE_TIPO_SALIDA = "(10)";
	public final static String SIZE_COMPONENTE = "(25)";
	public final static String SIZE_EXCEPCION = "(100)";
	public final static String SIZE_GRAVEDAD = "(10)";
	public final static String SIZE_PILA = "(0)";
	public final static String SIZE_COD_FUNCION_NEGOCIO = "(25)";
	public final static String SIZE_METODO_FUNCION_NEGOCIO = "(25)";
	public final static String SIZE_DATOS_FUNCION_NEGOCIO = "(100)";
	public static final String SIZE_NIVEL = "(10)";
	public static final String SIZE_MENSAJE = "(255)";
	public static final String SIZE_SQL = "(255)";
	public final static String SIZE_DEFAULT = "(15)";

	public final static String GENERIC_COLUMNS_INCIDENCIAS =
			APLICACION
			+ SIZE_APLICACION
			+ DELIMITER 
			+ COD_PAIS
			+ SIZE_COD_PAIS
			+ DELIMITER
			+ CANAL
			+ SIZE_CANAL
			+ DELIMITER
			+ COD_ENTIDAD
			+ SIZE_COD_ENTIDAD
			+ DELIMITER
			+ ID_USUARIO
			+ SIZE_ID_USUARIO
			+ DELIMITER
			+ ID_SESION
			+ SIZE_ID_SESION
			+ DELIMITER
			+ COD_OPERACION
			+ SIZE_COD_OPERACION
			+ DELIMITER
			+ NUM_OPERACION
			+ SIZE_NUM_OPERACION;
	//COD_PAIS,CANAL,COD_ENTIDAD,ID_USUARIO,ID_SESION,COD_OPERACION,NUM_OPERACION
	public final static String GENERIC_COLUMNS__ACCESOS =
			APLICACION
			+ SIZE_APLICACION
			+ DELIMITER 
			+ COD_PAIS
			+ DELIMITER
			+ CANAL
			+ SIZE_CANAL
			+ DELIMITER
			+ COD_ENTIDAD
			+ SIZE_COD_ENTIDAD
			+ DELIMITER
			+ ID_USUARIO
			+ SIZE_ID_USUARIO
			+ DELIMITER
			+ ID_SESION
			+ SIZE_ID_SESION
			+ DELIMITER
			+ COD_OPERACION
			+ SIZE_COD_OPERACION
			+ DELIMITER
			+ NUM_OPERACION
			+ SIZE_NUM_OPERACION;

	public final static String GENERIC_COLUMNS_NAVEGACION =
			APLICACION 
			+ SIZE_APLICACION
			+ DELIMITER 
			+ COD_PAIS
			+ SIZE_COD_PAIS
			+ DELIMITER
			+ CANAL
			+ SIZE_CANAL
			+ DELIMITER
			+ COD_ENTIDAD
			+ SIZE_COD_ENTIDAD
			+ DELIMITER
			+ ID_USUARIO
			+ SIZE_ID_USUARIO
			+ DELIMITER
			+ ID_SESION
			+ SIZE_ID_SESION
			+ DELIMITER
			+ COD_OPERACION
			+ SIZE_COD_OPERACION
			+ DELIMITER
			+ NUM_OPERACION
			+ SIZE_NUM_OPERACION
			+ DELIMITER
			+ COD_PAGINA
			+ SIZE_COD_PAGINA
			+ DELIMITER
			+ NUM_PAGINA
			+ SIZE_NUM_PAGINA;

	public final static String GENERIC_COLUMNS_TRANSACCIONES =
			APLICACION
			+ SIZE_APLICACION
			+ DELIMITER 
			+ COD_PAIS
			+ SIZE_COD_PAIS
			+ DELIMITER
			+ CANAL
			+ SIZE_CANAL
			+ DELIMITER
			+ COD_ENTIDAD
			+ SIZE_COD_ENTIDAD
			+ DELIMITER
			+ ID_USUARIO
			+ SIZE_ID_USUARIO
			+ DELIMITER
			+ ID_SESION
			+ SIZE_ID_SESION
			+ DELIMITER
			+ COD_OPERACION
			+ SIZE_COD_OPERACION
			+ DELIMITER
			+ NUM_OPERACION
			+ SIZE_NUM_OPERACION;

	public final static String GENERIC_COLUMNS_CONECTORES =
			APLICACION
			+ SIZE_APLICACION
			+ DELIMITER 
			+ COD_PAIS
			+ SIZE_COD_PAIS
			+ DELIMITER
			+ CANAL
			+ SIZE_CANAL
			+ DELIMITER
			+ COD_ENTIDAD
			+ SIZE_COD_ENTIDAD
			+ DELIMITER
			+ ID_USUARIO
			+ SIZE_ID_USUARIO
			+ DELIMITER
			+ ID_SESION
			+ SIZE_ID_SESION
			+ DELIMITER
			+ COD_OPERACION
			+ SIZE_COD_OPERACION
			+ DELIMITER
			+ NUM_OPERACION
			+ SIZE_NUM_OPERACION;

	public final static String GENERIC_COLUMNS_DEFAULT =
			APLICACION
			+ SIZE_APLICACION
			+ DELIMITER 
			+ COD_PAIS
			+ DELIMITER
			+ CANAL
			+ SIZE_CANAL
			+ DELIMITER
			+ COD_ENTIDAD
			+ SIZE_COD_ENTIDAD
			+ DELIMITER
			+ ID_USUARIO
			+ SIZE_ID_USUARIO
			+ DELIMITER
			+ ID_SESION
			+ SIZE_ID_SESION
			+ DELIMITER
			+ COD_OPERACION
			+ SIZE_COD_OPERACION
			+ DELIMITER
			+ NUM_OPERACION
			+ SIZE_NUM_OPERACION
			+ DELIMITER
			+ COD_PAGINA
			+ SIZE_COD_PAGINA
			+ DELIMITER
			+ NUM_PAGINA
			+ SIZE_NUM_PAGINA;

	public final static String GENERIC_COLUMNS_TRACER =
			APLICACION
			+ SIZE_APLICACION
			+ DELIMITER 
			+ COD_PAIS
			+ DELIMITER
			+ CANAL
			+ SIZE_CANAL
			+ DELIMITER
			+ COD_ENTIDAD
			+ SIZE_COD_ENTIDAD
			+ DELIMITER
			+ ID_USUARIO
			+ SIZE_ID_USUARIO
			+ DELIMITER
			+ ID_SESION
			+ SIZE_ID_SESION
			+ DELIMITER
			+ COD_OPERACION
			+ SIZE_COD_OPERACION
			+ DELIMITER
			+ NUM_OPERACION
			+ SIZE_NUM_OPERACION
			+ DELIMITER
			+ COD_PAGINA
			+ SIZE_COD_PAGINA
			+ DELIMITER
			+ NUM_PAGINA
			+ SIZE_NUM_PAGINA;

	public final static String MESSAGE_COLUMNS_ACCESOS =
		COD_FUNCION
			+ SIZE_COD_FUNCION
			+ DELIMITER
			+ DATASOURCE
			+ SIZE_DATASOURCE
			+ DELIMITER
			+ TABLA_ACCEDIDA
			+ SIZE_TABLA_ACCEDIDA
			+ DELIMITER
			+ SQL
			+ SIZE_SQL
			+ DELIMITER
			+ TIPO_ACCESO
			+ SIZE_TIPO_ACCESO
			+ DELIMITER
			+ COD_RESPUESTA
			+ SIZE_COD_RESPUESTA;

	public final static String MESSAGE_COLUMNS_INCIDENCIAS =
		COMPONENTE
			+ SIZE_COMPONENTE
			+ DELIMITER
			+ EXCEPCION
			+ SIZE_EXCEPCION
			+ DELIMITER
			+ GRAVEDAD
			+ SIZE_GRAVEDAD
			+ DELIMITER
			+ PILA
			+ SIZE_PILA;

	public final static String MESSAGE_COLUMNS_NAVEGACION =
		COD_RESPUESTA + SIZE_COD_RESPUESTA + DELIMITER + TIPO_SALIDA + SIZE_TIPO_SALIDA;

	public final static String MESSAGE_COLUMNS_TRANSACCIONES =
		COD_FUNCION_NEGOCIO
			+ SIZE_COD_FUNCION_NEGOCIO
			+ DELIMITER
			+ METODO_FUNCION_NEGOCIO
			+ SIZE_METODO_FUNCION_NEGOCIO
			+ DELIMITER
			+ DATOS_FUNCION_NEGOCIO
			+ SIZE_DATOS_FUNCION_NEGOCIO
			+ DELIMITER
			+ COD_RESPUESTA
			+ SIZE_COD_RESPUESTA
			+ DELIMITER
			+ RESULTADO_TRANSACCION
			+ SIZE_RESULTADO_TRANSACCION
			+ DELIMITER
			+ DATOS_RESPUESTA
			+ SIZE_DATOS_RESPUESTA;

	public final static String MESSAGE_COLUMNS_CONECTORES =
		COD_FUNCION
			+ SIZE_COD_FUNCION
			+ DELIMITER
			+ TIPO_CONECTOR
			+ SIZE_TIPO_CONECTOR
			+ DELIMITER
			+ MENSAJE_ENVIADO
			+ SIZE_MENSAJE_ENVIADO
			+ DELIMITER
			+ CODIGO_RESPUESTA
			+ SIZE_CODIGO_RESPUESTA
			+ DELIMITER
			+ RESULTADO_TRANSACCION
			+ SIZE_RESULTADO_TRANSACCION
			+ DELIMITER
			+ DATOS_RESPUESTA
			+ SIZE_DATOS_RESPUESTA;

	public final static String MESSAGE_COLUMNS_TRACER =
		COMPONENTE + SIZE_COMPONENTE + DELIMITER + 
		NIVEL + SIZE_NIVEL + DELIMITER + 
		MENSAJE + SIZE_MENSAJE;
	
	
	public final static String SELECT_COLUMNS_ACCESOS =
		COD_FUNCION
			+ DELIMITER
			+ DATASOURCE
			+ DELIMITER
			+ TABLA_ACCEDIDA
			+ DELIMITER
			+ SQL
			+ DELIMITER
			+ TIPO_ACCESO
			+ DELIMITER
			+ COD_RESPUESTA;
	
	public final static String SELECT_COLUMNS_INCIDENCIAS =
		COMPONENTE
			+ DELIMITER
			+ EXCEPCION
			+ DELIMITER
			+ GRAVEDAD
			+ DELIMITER
			+ PILA;

	public final static String SELECT_COLUMNS_NAVEGACION =
		COD_RESPUESTA + DELIMITER + TIPO_SALIDA;

	public final static String SELECT_COLUMNS_TRANSACCIONES =
		COD_FUNCION_NEGOCIO
			+ DELIMITER
			+ METODO_FUNCION_NEGOCIO
			+ DELIMITER
			+ DATOS_FUNCION_NEGOCIO
			+ DELIMITER
			+ COD_RESPUESTA
			+ DELIMITER
			+ RESULTADO_TRANSACCION
			+ DELIMITER
			+ DATOS_RESPUESTA;

	public final static String SELECT_COLUMNS_CONECTORES =
		COD_FUNCION
			+ DELIMITER
			+ TIPO_CONECTOR
			+ DELIMITER
			+ MENSAJE_ENVIADO
			+ DELIMITER
			+ CODIGO_RESPUESTA
			+ DELIMITER
			+ RESULTADO_TRANSACCION
			+ DELIMITER
			+ DATOS_RESPUESTA;

	public final static String SELECT_COLUMNS_TRACER =
		COMPONENTE + DELIMITER + 
		NIVEL + DELIMITER + 
		MENSAJE;

	public final static String MESSAGE_COLUMNS_DEFAULT = "MENSAJE";

	private static Map defaultGenericColumns = new HashMap();
	private static Map defaultMessageColumns = new HashMap();
	static {

		defaultGenericColumns.put(Q70ConstantesLogs.LOG_INCIDENCIAS, Q70ConstantesLogs.GENERIC_COLUMNS_INCIDENCIAS);
		defaultGenericColumns.put(Q70ConstantesLogs.LOG_ACCESOS, Q70ConstantesLogs.GENERIC_COLUMNS__ACCESOS);
		defaultGenericColumns.put(Q70ConstantesLogs.LOG_NAVEGACION, Q70ConstantesLogs.GENERIC_COLUMNS_NAVEGACION);
		defaultGenericColumns.put(Q70ConstantesLogs.LOG_TRANSACCIONES, Q70ConstantesLogs.GENERIC_COLUMNS_TRANSACCIONES);
		defaultGenericColumns.put(Q70ConstantesLogs.LOG_CONECTORES, Q70ConstantesLogs.GENERIC_COLUMNS_CONECTORES);
		defaultGenericColumns.put(Q70ConstantesLogs.TRAZA, Q70ConstantesLogs.GENERIC_COLUMNS_TRACER);
		defaultGenericColumns.put(Q70ConstantesLogs.DEFAULT, Q70ConstantesLogs.GENERIC_COLUMNS_DEFAULT);

		defaultMessageColumns.put(Q70ConstantesLogs.LOG_INCIDENCIAS, Q70ConstantesLogs.MESSAGE_COLUMNS_INCIDENCIAS);
		defaultMessageColumns.put(Q70ConstantesLogs.LOG_ACCESOS, Q70ConstantesLogs.MESSAGE_COLUMNS_ACCESOS);
		defaultMessageColumns.put(Q70ConstantesLogs.LOG_NAVEGACION, Q70ConstantesLogs.MESSAGE_COLUMNS_NAVEGACION);
		defaultMessageColumns.put(Q70ConstantesLogs.LOG_TRANSACCIONES, Q70ConstantesLogs.MESSAGE_COLUMNS_TRANSACCIONES);
		defaultMessageColumns.put(Q70ConstantesLogs.LOG_CONECTORES, Q70ConstantesLogs.MESSAGE_COLUMNS_CONECTORES);
		defaultMessageColumns.put(Q70ConstantesLogs.TRAZA, Q70ConstantesLogs.MESSAGE_COLUMNS_TRACER);
		defaultMessageColumns.put(Q70ConstantesLogs.DEFAULT, Q70ConstantesLogs.MESSAGE_COLUMNS_DEFAULT);

	}

	public static String getDefaultMessageColumns(String logName)
	{
		return (String)defaultMessageColumns.get(logName);
	}

	public static String getDefaultGenericColumns(String logName)
	{
		return (String)defaultGenericColumns.get(logName);
	}

}
