
package datos;

import encapsuladores.Idioma;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;


public class IdiomasXML {
    
    public List<Idioma> getListaIdiomas() throws JDOMException, IOException { 
        List<Idioma> listaIdiomas = new ArrayList();
        
        // Document document = new SAXBuilder().build("D:\\Java_XML\\repositorio_idiomas.xml");
        // Document document = new SAXBuilder().build("xml\\repositorio_idiomas.xml");        
        Document document = new SAXBuilder().build("xml/repositorio_idiomas.xml");      // xml es un directorio en el raiz del Proyecto
        Element raiz = document.getRootElement();
        
        List idiomas = raiz.getChildren("idioma");
        for (int i=0; i<idiomas.size(); i++) {
            Idioma idioma = new Idioma();
            Element elementIdioma = (Element)idiomas.get(i);
            idioma.setNumero(elementIdioma.getAttributeValue("numero"));
            idioma.setNombre(elementIdioma.getChild("nombre").getText());
            listaIdiomas.add(idioma);
        }
        
        return listaIdiomas;
    }    
           
    
    public int[] getNumeroCadenas() throws JDOMException, IOException {
        
        int[] numerosCadenas = new int[3];
                 
        Document document = new SAXBuilder().build("xml/repositorio_idiomas.xml");      // xml es un directorio en el raiz del Proyecto
        Element raiz = document.getRootElement();
        List idiomas = raiz.getChildren("idioma");
        
        Element elementIdioma = (Element)idiomas.get(0);   // Extraemos el primer idioma
                                                           // dado que todos los idiomas tienen el mismo numero de cadenas
        Element opcionesMenu = elementIdioma.getChild("opciones_menu");          
        List listaOpciones = opcionesMenu.getChildren("opcion");
        numerosCadenas[0] = listaOpciones.size();
        
        Element mensajesIntroduccion = elementIdioma.getChild("mensajes_introduccion");          
        List listaMensajesIntroduccion = mensajesIntroduccion.getChildren("mensaje_introduccion");
        numerosCadenas[1] = listaMensajesIntroduccion.size();
        
        Element mensajesError = elementIdioma.getChild("mensajes_error");          
        List listaMensajesError = mensajesError.getChildren("mensaje_error");
        numerosCadenas[2] = listaMensajesError.size();            
    
       return numerosCadenas;
    }        
    
    
    public void leerCadenas(String idioma, Object[] aglutinaArraysCadenas) throws JDOMException, IOException {
        
        String[] opcionesDeMenu = (String[])aglutinaArraysCadenas[0]; 
        String[] mensajesDeIntroduccion = (String[])aglutinaArraysCadenas[1];
        String[] mensajesDeError = (String[])aglutinaArraysCadenas[2];
         
        SAXBuilder builder = new SAXBuilder();         
        // Document doc = builder.build("D:\\Java_XML\\repositorio_idiomas.xml");
        // Document doc = builder.build("xml\\repositorio_idiomas.xml");    
        Document doc = builder.build("xml/repositorio_idiomas.xml");      // xml es un directorio en el raiz del Proyecto
        Element raiz = doc.getRootElement();
        List idiomas = raiz.getChildren("idioma");
        
        boolean encontradoIdioma = false;
        Iterator iteratorIdiomas = idiomas.iterator();
        while (iteratorIdiomas.hasNext() && !encontradoIdioma)
          {                         
                //   IDIOMA
            Element elementIdioma = (Element)iteratorIdiomas.next();  
            String numeroIdioma = elementIdioma.getAttributeValue("numero");           
            
            if (numeroIdioma.compareTo(idioma) == 0){
                encontradoIdioma = true;
                int i;
                                //   OPCIONES MENU
                Element opcionesMenu = elementIdioma.getChild("opciones_menu");          
                List listaOpciones = opcionesMenu.getChildren("opcion");                   
                Iterator iteratorOpciones = listaOpciones.iterator();  
                i = 0;
                while (iteratorOpciones.hasNext())
                  {  
                    Element opcion = (Element)iteratorOpciones.next();
                    opcionesDeMenu[i] = opcion.getText();
                    i++;
                  }    
                
                                //   MENSAJES INTRODUCCION
                Element mensajesIntroduccion = elementIdioma.getChild("mensajes_introduccion");          
                List listaMensajesIntroduccion = mensajesIntroduccion.getChildren("mensaje_introduccion");                    
                Iterator iteratorMensajesIntroduccion = listaMensajesIntroduccion.iterator();    
                i = 0;
                while (iteratorMensajesIntroduccion.hasNext())
                  {  
                    Element mensajeIntroduccion = (Element)iteratorMensajesIntroduccion.next();
                    mensajesDeIntroduccion[i] = mensajeIntroduccion.getText();
                    i++;
                  }       
                
                                //   MENSAJES ERROR
                Element mensajesError = elementIdioma.getChild("mensajes_error");          
                List listaMensajesError = mensajesError.getChildren("mensaje_error");                  
                Iterator iteratorMensajesError = listaMensajesError.iterator();   
                i = 0;
                while (iteratorMensajesError.hasNext())
                  {  
                    Element mensajeError = (Element)iteratorMensajesError.next();
                    mensajesDeError[i] = mensajeError.getText();
                    i++;
                  }  
            }
          }          
    
    }
}
