/* 
* Copyright 2016 Agencia Estatal de Administración Tibutaria
*
* Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto
* sean aprobadas por la Comisión Europea– versiones
* posteriores de la EUPL (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en:
*  
* https://joinup.ec.europa.eu/software/page/eupl
*  
* Salvo cuando lo exija la legislación aplicable o se acuerde
* por escrito, el programa distribuido con arreglo a la
* Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
* DE NINGÚN TIPO, ni expresasni implícitas.
*
* Véase la Licencia en el idioma concreto que rige los permisos y 
* limitaciones que establece la Licencia.
*/ 


package servidor.datos;

import java.sql.*;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;

import servidor.utiles.*;

public class TablaConfiSer extends Tabla_Base {
   protected Hashtable <String,String> parametros;
   
   public TablaConfiSer(Connection conexion) {
	  super(conexion, "confiSer");
	  parametros = cargarTabla();
   }
   
public Hashtable<String,String>  cargarTabla() {
	Hashtable<String,String> ht=new Hashtable<String,String>();
  try {
	 Connection conexion = BaseDatos.bd().conexion;
	 ResultSet rs;
	 Statement stmt = conexion.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
	 rs = stmt.executeQuery("SELECT * FROM confiSer");
	 rs.beforeFirst();
	 while(rs.next()) {
		 ht.put(rs.getString("parametro").toLowerCase(),rs.getString("valor"));
	 }
	 rs.close();
  } catch(Exception exc) {
	  Global.log.warning("Error al cargar los parametros\n" + exc.getMessage());
  }
  return ht;
}



public void salvarTabla() {
	Hashtable<String,String> parTabla=cargarTabla();
	
	  try {
		  for (Enumeration<String> parActual = parametros.keys(); parActual.hasMoreElements();){
			 String nomPar=parActual.nextElement();
			 if  (!parTabla.containsKey(nomPar)){
				 this.SQL("insert into confiSer (parametro,valor) values ('" + normalizaPar(nomPar)+ "','" + normalizaPar(parametros.get(nomPar))+"')");
			 }
			 parTabla.put(nomPar, parametros.get(nomPar)); 
			 
		  }
		  for (Enumeration<String> parActual = parTabla.keys(); parActual.hasMoreElements();){
				 String nomPar=parActual.nextElement();
				 this.SQL("UPDATE confiSer set valor='"+normalizaPar(parTabla.get(nomPar))+"' where parametro='"+normalizaPar(nomPar)+"'");
		 }
		 
	  } catch(Exception exc) {
		  Global.log.severe("Error al cargar los parametros\n" + exc.getMessage());
	  }
}

public Hashtable<String,String> getParametros(){
	return parametros;
}

	 
	


String normalizaPar(String strPar){
	return strPar.trim().toLowerCase();
}

public void creaParametro(String nombre, String valor){
	parametros.put(normalizaPar(nombre), normalizaPar(valor));
	
}

}
