/* 
* 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 gestor.utiles;

import java.io.*;
import java.util.*;
import java.util.jar.*;

public final class TraductorPrincipal extends AlmacenStrings {

   LinkedHashMap<String, String> jarMap;

   public TraductorPrincipal() {
      jarMap = new LinkedHashMap<>();
      cargarJar();
   }

   @Override
   public void cargar(String fichero) {
      super.cargar(fichero);
      comprobarTablaExterna();
   }

   void cargarJar() {
      try {
         JarFile jar = new JarFile("Autoservicio.jar");
         JarEntry entrada = jar.getJarEntry("recursos/traduccion.txt");
         if (entrada == null) {
            return;
         }
         BufferedReader bf = new BufferedReader(new InputStreamReader(jar.getInputStream(entrada)));
         cargar(bf, jarMap);
      } catch (IOException exc) {
         System.out.println(exc.getMessage());
      }
   }

   void comprobarTablaExterna() {
      boolean guardarTabla = false;
      for(String key: jarMap.keySet()) {
         if (!hash.containsKey(key)) {
            hash.put(key, jarMap.get(key));
            guardarTabla = true;
         }
      }
      if (guardarTabla) {
         guardar();
         javax.swing.JOptionPane.showMessageDialog(null, "Se han añadido claves al fichero 'Traducción.txt'.\n" +
                 "Si ha traducido dicho fichero compruebe las nuevas entradas.\n" +
                 "Si utiliza traducción múltiple, consolide todos los fichero 'Traducción.txt'.");
      }
   }

   @Override
   public String valor(String clave) {
      clave = clave.toLowerCase();
      String s = hash.get(clave);
      if (s == null) {
         s = jarMap.get(clave);
         if (s == null) {
            s = "";
         }
      }
      return s;
   }
}
