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

public class AlmacenStrings {

   LinkedHashMap<String, String> hash;
   String miFichero = null;

   public AlmacenStrings() {
      hash = new LinkedHashMap<>();
   }

   public void cargar(String fichero) {
      try {
         BufferedReader bf = null;
         File origen = new File(fichero);
         if (origen.exists()) {
            bf = new BufferedReader(new FileReader(fichero));
            cargar(bf, hash);
            miFichero = fichero;
         }
      } catch (Exception exc) {
         System.out.println(exc.getMessage());
      }
   }

   void cargar(BufferedReader bf, HashMap<String, String> mapa) throws IOException {
      String linea;
      while ((linea = bf.readLine()) != null) {
         add(linea, mapa);
      }
      bf.close();
   }

   void add(String linea, HashMap<String, String> mapa) {
      linea = linea.trim();
      if (linea.length() == 0 || linea.startsWith("#")) {
         return;
      }
      String pp[] = linea.split("=");
      String clave = pp[0].trim().toLowerCase();
      String valor = "";
      if (pp.length > 1) {
         valor = pp[1].trim();
         if (valor.startsWith("\"")) {
            valor = valor.replaceFirst("^\"", "");
         }
         if (valor.endsWith("\"")) {
            valor = valor.replaceFirst("\"$", "");
         }
         if (valor.indexOf("\\n") > 0) {
            valor = valor.replaceAll("\\\\n", "\n");
         }
      }
      mapa.put(clave, valor);
   }

   public String valor(String clave) {
      return "";
   }

   public boolean guardar() {
      if (miFichero == null) {
         return false;
      }
      try {
         PrintWriter pw = new PrintWriter(new FileOutputStream(miFichero, false));
         for(String s : hash.keySet()) {
            pw.println(s + " = " + hash.get(s));
         }
         pw.close();
         return true;
      } catch (Exception exc) {
         System.out.println(exc.getMessage());
         return false;
      }
   }
}
