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

import gestor.utiles.*;
import java.io.*;
import java.util.*;

public class GestorSubMenus {

   public SubMenu principal;
   CargadorMenuIni cargadorPrincipal = null;
   
   public GestorSubMenus() {
   }

   public void cargar(File fichero) {
      boolean usandoNuevoIni = false;
      
      if(fichero.getName().toLowerCase().equals("menu.ini")) {
         cargarNuevoIni(fichero);
         usandoNuevoIni = true;
      } else if (fichero.getName().toLowerCase().endsWith("ini")) {
         cargarIni(fichero);
      } else {
         cargarXml(fichero);
      }
      if(Global.gestorIdiomas.numeroIdiomas > 1) {
         try {
            if(usandoNuevoIni) {
               cargarNuevasTraducciones();
            } else {
               Global.gestorIdiomas.cargarTraduccionMenus();
               cargarTraducciones(principal);
            }
         } catch(Exception exc) {
            System.out.println("Error en traducción en SubMenús");
            System.out.println("Compruebe la correción de los archivos Submenus.ini");
         }
      }
   }

   void cargarTraducciones(SubMenu menu) {
      ArrayList[] trads = Global.gestorIdiomas.submenus;
      for (int i = 0; i < menu.menus.size(); i++) {
         SubMenu submenu = menu.menus.get(i);
         for(int j=1;j<Global.gestorIdiomas.numeroIdiomas;j++) {
            submenu.nombres[j] = (String)trads[j].get(i);
         }
      }
   }
   
   public void cargarIni(File submenu) {
      try {
         BufferedReader bf = new BufferedReader(new FileReader(submenu));
         String linea;
         principal = new SubMenu("principal");
         while ((linea = bf.readLine()) != null) {
            linea = linea.trim();
            if(linea.startsWith("#h") || linea.startsWith("#H")) {
               principal.nuevoHueco();
            }else if (linea.length() > 2) {
               String[] ps = Global.split(linea, ',');
               ps[0] = Configuracion.instanciaUnica().sustituye(ps[0]);
               principal.nuevoSubmenu(ps);
            } else {
               principal.nuevaCola(linea.trim().toUpperCase());
            }
         }
         principal.crearServicios();
      } catch (Exception ex) {
      }
   }

   // nuevo sistema de colas/menus en un solo fichero
   public void cargarNuevoIni(File menu) {
      CargadorMenuIni cargador = new CargadorMenuIni();
      cargador.cargarIni(menu);
      CargadorMenuIni.datosMenu dmPrincipal = cargador.buscarMenu("principal");
      principal = new SubMenu("principal");
      principal.crearSubmenu(cargador, dmPrincipal);
      principal.crearServicios();
      cargadorPrincipal = cargador;
   }

   void cargarNuevasTraducciones() {
      for(int i=1; i< Global.gestorIdiomas.numeroIdiomas; i++) {
         CargadorMenuIni cargadorTrad = new CargadorMenuIni();
         cargadorTrad.cargarIni(new File(Global.gestorIdiomas.idiomas[i] + "\\menu.ini"));
         cargadorPrincipal.addTraduccion(cargadorTrad);
      }
   }
   

   // este está todavía por desarrollar
   public void cargarXml(File submenu) {

   }
}
