/* 
* 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 administrador;

import administrador.utiles.ConfiguracionBase;
import java.util.*;

public class Configuracion extends ConfiguracionBase {

   private final String nombreFichero = "ConfiguracionAdministrador.ini";
   public String nombreServidor;
   public boolean usandoUDP = false;
   public String IpServidorLocal = "";
   public int puertoServidor;
   public String IpServidorLocalSec = "";
   public int puertoServidorSec;
   public String nombreServidorLocal;
   public int tiempoAlerta;
   public boolean recibirMensajes;
   public boolean recibirMensajesAutoservicio = true;
   public boolean alertaOperadores = true;
   private static Configuracion _yo = null;
   public String nombreParaMostrar;
   public boolean ocultarPasoAutomatico = false;

   public ArrayList<ScriptCandidato> scriptsCandidato = new ArrayList<>();
    
   public static Configuracion instanciaUnica() {
      if (_yo == null) {
         _yo = new Configuracion();
      }
      return _yo;
   }

   private Configuracion() {
      super();
   }

   public boolean cargar() {
      super.cargar(nombreFichero);
      nombreServidor = valor("nombreServidor","");
      if(!nombreServidor.equals("")) usandoUDP = true;
      IpServidorLocal = valor("servidorLocal", IpServidorLocal);
      puertoServidor = valor("puerto", 5000);
      IpServidorLocalSec = valor("servidorLocalSec", "");
      if (IpServidorLocalSec.equals("")) {
         IpServidorLocalSec = IpServidorLocal;
      }
      puertoServidorSec = valor("puertoSec", 5000);
      if (puertoServidorSec == 0) {
         puertoServidorSec = puertoServidor;
      }
      nombreServidorLocal = valor("nombreServidorLocal", "").trim();
      recibirMensajes = valor("recibirMensajes", true);
      recibirMensajesAutoservicio = valor("recibirMensajesAutoservicio", recibirMensajesAutoservicio);
      nombreServidorLocal = nombreServidorLocal.replaceAll(" ", "_");
      tiempoAlerta = valor("tiempoAlerta", 15) * 60;
      alertaOperadores = valor("mostrarAlertaOperadores", alertaOperadores);
      nombreParaMostrar = valor("nombreParaMostrar", "");
      ocultarPasoAutomatico = valor("OcultarPasoAutomatico", ocultarPasoAutomatico);
       for (Dato d : data.values()) {
           String clave = d.clave.toLowerCase();
           if(clave.startsWith("script")) {
               String v = d.valor;
               String[] p = administrador.utiles.Global.split(v, ';');
               ScriptCandidato sc = new ScriptCandidato(p[1],p[0]);
               scriptsCandidato.add(sc);
           }
       }        
      
      return true;
   }

   public class ScriptCandidato {
        public String path;
        public String menuTxt;
        public ScriptCandidato(String p, String m) {
            path = p;
            menuTxt = m;
        }
    }
}
