Package Funcion

Source Code of Funcion.ParsearXML

//http://www.javahispano.org/contenidos/es/xml_desde_java_hecho_fcil_jdom/
package Funcion;
import Tipos.CopiaTablero;
import Tipos.Elemento;
import Tipos.MiBoton;
import Tipos.MiColeccion;
import Tipos.MisElementos;

import Tipos.Tablero;
import java.awt.Color;
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;

public class ParsearXML {
    //static String pathConfiguracion="C:\\";
    public static Tablero t = Tablero.getInstance();
    String file;
    File fichero=null;
    public ParsearXML(String XMLfile){
        file= XMLfile;
    }
    public ParsearXML(File mifile){
        fichero= mifile;
    }
   
    // Verifica que el Driver es de tipo DRatonVirtual
    public int devolverTipoDriver() {
        try {
            SAXBuilder builder=new SAXBuilder(false);
            //usar el parser Xerces y no queremos
            //que valide el documento
            //Document doc=builder.build(pathConfiguracion + file);
            Document doc=builder.build(fichero);
            // construyo el arbol en memoria desde el fichero
            // que se lo pasar� por parametro.
            Element raiz=doc.getRootElement();
            //cojo el elemento raiz
            System.out.println("El driver es de tipo: "+
                    raiz.getAttributeValue("tipo"));
            if (!raiz.getAttributeValue("tipo").equals("DRatonVirtual"))
                return(-1);
            else
                return(0);
        }catch (Exception e){
            //e.printStackTrace();
            return(-1);
        }
    }
   
    // Abre una configuracion almacenada previamente
    // devuelve 1 si todo ha sido correcto, 0 si ha habido algun error
    // Guarda los parametros en una copia del Tablero, por si ha habido errores
    public int abrirConfiguracion() {
        try {
           
            SAXBuilder builder=new SAXBuilder(false);
            //usar el parser Xerces y no queremos que valide el documento
            //Document doc=builder.build(pathConfiguracion + file);
           
            Document doc=builder.build(fichero);
            // construyo el arbol en memoria desde el fichero
            //cojo el elemento raiz
            Element raiz=doc.getRootElement();
           
            Element elems=raiz.getChild("elementos");
            System.out.println("El driver es de tipo: "+ raiz.getAttributeValue("tipo"));
            List elementos=elems.getChildren("elemento");
            // cogere todos los elementos
           
            System.out.println("Formada por:"+ elementos.size() + " elementos");
            if (elementos.size()>0){
                MisElementos mise = new MisElementos();
                Iterator elem = elementos.iterator();
                while (elem.hasNext()){
                    Element e= (Element)elem.next();
                    Element nombre =e.getChild("nombre");
//                    System.out.println("nombre elemento: "+ nombre.getText());
                   
                    Element imagen =e.getChild("imagen");
                    // System.out.println("imagen elemento: "+ imagen.getText());
                   
                    Element sonido =e.getChild("sonido");
                   //  System.out.println("sonido elemento: "+ sonido.getText());
                    mise.Add(new Elemento(nombre.getText(),imagen.getText(),sonido.getText()));

                }
                // almaceno los elementos
                CopiaTablero.elementos=mise;
                // Muestro todos los elementos
//                for (int i=0; i< CopiaTablero.elementos.size(); i++){
//                    System.out.println("Elemento "+ i +  " nombre: " + CopiaTablero.elementos.get(i).nombre +" im: "
//                            + CopiaTablero.elementos.get(i).nombreImagen + " sonido: " + CopiaTablero.elementos.get(i).nombreSonido);
//                }
            }
            // botones
               
            Element botones= raiz.getChild("botones");
            // altura
            Element altura= botones.getChild("altura");
            CopiaTablero.altoBoton= Integer.parseInt(altura.getText().trim());
            System.out.println("Altura boton: " + CopiaTablero.altoBoton);
           
            // anchura
            Element anchura= botones.getChild("anchura");
            CopiaTablero.anchoBoton= Integer.parseInt(anchura.getText().trim());
            System.out.println("Ancho boton: " + CopiaTablero.anchoBoton);
           
            // color de los botones tengo q mirar a ver si es este
            Element colorFondo= botones.getChild("colorFondo");
            CopiaTablero.colorBot= new Color(Integer.parseInt(colorFondo.getText().trim()));
            System.out.println("Color botones: " + CopiaTablero.colorBotones);
           
            // simetria
            int simetriaI;
            Element simetria= botones.getChild("simetria");
            simetriaI= Integer.parseInt(simetria.getValue().trim());
            if (simetriaI==0){
                CopiaTablero.simetria=false;
               
            }
            else{
                CopiaTablero.simetria=true;
            }
            System.out.println("VALOR SIMETRIA: " + CopiaTablero.simetria);
            // cojo todos los botones
           
           
            List listaBotones=botones.getChildren("boton");
            // cogere todos los botones
           
            System.out.println("Formada por:"+ listaBotones.size() + " botones");
            if (listaBotones.size()>0){
               
                MiColeccion mc = new MiColeccion();
                mc.clear();
               
                Iterator bot = listaBotones.iterator();
                int j=0;
                while (bot.hasNext()){
                    Element b= (Element)bot.next();
                    Element nombre =b.getChild("nombre");
//                    System.out.println("nombre elemento: "+ nombre.getText());
                   
                    // obtengo el elemento de ese boton
                    Elemento el= CopiaTablero.elementos.Item(nombre.getText());
                    mc.Add(new MiBoton(el.nombre, j, el.nombreImagen));
                    System.out.println("A�ado boton: " + j + ", : " + el.nombre);
                    j++;   
                }
//                // almaceno los botones
                CopiaTablero.coleccion = new MiColeccion();
                CopiaTablero.coleccion.clear();
                CopiaTablero.coleccion= mc;
                System.out.println("Tama�o coleccion final: " + CopiaTablero.coleccion.size());
                // Muestro todos los botones
//                for (int i=0; i< CopiaTablero.coleccion.size(); i++){
//                    System.out.println("Boton "+ i +  " nombre: " + CopiaTablero.coleccion.get(i).getName() + " tabulador: "
//                            + CopiaTablero.coleccion.get(i).tabIndex + " imagen: " + CopiaTablero.coleccion.get(i).getIcon().toString());
//                }
               
            // forma
                Element forma= raiz.getChild("forma");
                // tipo
                Element tipoForma= forma.getChild("tipo");
                CopiaTablero.tipoTablero=Integer.parseInt(tipoForma.getValue().trim());
               
                // fila
                Element fila= forma.getChild("fila");
                CopiaTablero.filas=Integer.parseInt(fila.getValue().trim());
               
                // columna
                Element columna= forma.getChild("columna");
                CopiaTablero.columnas=Integer.parseInt(columna.getValue().trim());
               
            // movimiento
                Element movimiento= raiz.getChild("movimiento");
                // tipo
                Element tipoMov= movimiento.getChild("tipo");
                CopiaTablero.tipoMovimiento=Integer.parseInt(tipoMov.getValue().trim());
               
                // relacion
                Element relacion= movimiento.getChild("relacion");
                CopiaTablero.relacionVel=Integer.parseInt(relacion.getValue().trim());
               
            // barrido
                Element barrido= raiz.getChild("barrido");
                // tipo
                Element tipoBar= barrido.getChild("tipo");
                CopiaTablero.barrido=Integer.parseInt(tipoBar.getValue().trim());
               
                // forma
                Element formaBar= barrido.getChild("forma");
                CopiaTablero.tipoBarrido=Integer.parseInt(formaBar.getValue().trim());
               
               
               
                // color
                Element color= barrido.getChild("color");
                CopiaTablero.colorB= new Color(Integer.parseInt(color.getText().trim()));
                // pasadas
                Element pasadas= barrido.getChild("pasadas");
                CopiaTablero.pasadas=Integer.parseInt(pasadas.getValue().trim());
               
                // min
                Element minScan= barrido.getChild("min");
                CopiaTablero.minScan=Integer.parseInt(minScan.getValue().trim());
                       
                // max
                Element maxScan= barrido.getChild("max");
                CopiaTablero.maxScan=Integer.parseInt(maxScan.getValue().trim());
               
                // velocidad
                Element velocidad= barrido.getChild("velocidad");
                int velocidadScan=Integer.parseInt(velocidad.getValue().trim());
               
                if ((CopiaTablero.minScan <= velocidadScan) && (CopiaTablero.maxScan >= velocidadScan)){
                    CopiaTablero.speedScan= velocidadScan;
                }
                else {
                    CopiaTablero.speedScan= (int)((CopiaTablero.maxScan - CopiaTablero.minScan)/2);
                }
               
               
            // opacidad
            Element opacidad= raiz.getChild("opacidad");
            Element valor= opacidad.getChild("valor");
            CopiaTablero.opacidad=Integer.parseInt(valor.getValue().trim());
               
               
               
               
            // transparencia
                int tr;
                Element transparencia= raiz.getChild("transparencia");
                Element valorT= transparencia.getChild("valor");
                tr= Integer.parseInt(valorT.getValue().trim());
                if (tr==0) CopiaTablero.transparencia=false;
                else CopiaTablero.transparencia=true;
               
             // barra
                int barr;
                Element barra= raiz.getChild("barra");
                Element presente= barra.getChild("presente");
                barr= Integer.parseInt(presente.getValue().trim());
                if (barr==0) CopiaTablero.barra=false;
                else CopiaTablero.barra=true;  
            
             // cursor
                Element cursor= raiz.getChild("cursor");
                // min
                Element minCursor= cursor.getChild("min");
                CopiaTablero.minCursor=Integer.parseInt(minCursor.getValue().trim());
                       
                // max
                Element maxCursor= cursor.getChild("max");
                CopiaTablero.maxCursor=Integer.parseInt(maxCursor.getValue().trim());

               
               
                Element velocidadC= cursor.getChild("velocidad");
                int speed= Integer.parseInt(velocidadC.getValue().trim());
                if ((CopiaTablero.minCursor <= speed) && (CopiaTablero.maxCursor >= speed)){
                    CopiaTablero.speedCursor= speed;
                }
                else {
                    CopiaTablero.speedCursor= (int)((CopiaTablero.maxCursor - CopiaTablero.minCursor)/2);
                }
                  
               
               
               
               
           
            // silencio
                int sil;
                Element silencio= raiz.getChild("silencio");
                Element activado= silencio.getChild("activado");
                sil= Integer.parseInt(activado.getValue().trim());
                if (sil==0) CopiaTablero.sonido=false;
                else CopiaTablero.sonido=true;
               
           // estilo
                Element estilo= raiz.getChild("estilo");
                Element tipoE= estilo.getChild("tipo");
                CopiaTablero.tipoEstilo=Integer.parseInt(tipoE.getValue().trim());    
               
//           // cultura
                Element cultura= raiz.getChild("cultura");
                Element tipoC= cultura.getChild("tipo");
                String idioma= tipoC.getValue();
                System.out.println("Idioma : " + idioma);
                CopiaTablero.Idiomas=new Locale(tipoC.getValue());
              
          
           // entradas
                Element entradas= raiz.getChild("entradas");
             // teclado
                Element teclado= entradas.getChild("teclado");
                // uso
                Element usoT= teclado.getChild("uso");
                CopiaTablero.uso_teclado=Integer.parseInt(usoT.getValue().trim());    
               
                // seleccion
                Element seleccionT= teclado.getChild("seleccion");
                CopiaTablero.teclaSeleccion=seleccionT.getText();
                System.out.println("Tecla para seleccionar en copia tablero: " + CopiaTablero.teclaSeleccion);
               
                // barrido
                Element barridoT= teclado.getChild("barrido");
                CopiaTablero.teclaBarrido= barridoT.getText();
               
               
            // raton
                Element raton= entradas.getChild("raton");
                // uso
                Element usoR= raton.getChild("uso");
                CopiaTablero.uso_raton=Integer.parseInt(usoR.getValue().trim());    
               
                // seleccion
                Element seleccionR= raton.getChild("seleccion");
                CopiaTablero.botonSeleccion=Integer.parseInt(seleccionR.getValue().trim());
               
                // barrido
                Element barridoR= raton.getChild("barrido");
                CopiaTablero.botonBarrido= Integer.parseInt(barridoR.getValue().trim());  
               
           
           // microfono
                Element microfono= entradas.getChild("microfono");
                // uso
                Element usoM= microfono.getChild("uso");
                CopiaTablero.uso_microfono=Integer.parseInt(usoM.getValue().trim());    
               
                // seleccion
                Element seleccionM= microfono.getChild("seleccion");
                Element volumenS= seleccionM.getChild("volumen");
                CopiaTablero.volumenSeleccion=Float.parseFloat(volumenS.getValue().trim());
                Element sampleS= seleccionM.getChild("sample");
                CopiaTablero.sampleRateSeleccion=Float.parseFloat(sampleS.getValue().trim());
               
               
                // barrido
                Element barridoM= microfono.getChild("barrido");
                Element volumenB= barridoM.getChild("volumen");
                CopiaTablero.volumenBarrido=Float.parseFloat(volumenB.getValue().trim());
                Element sampleB= barridoM.getChild("sample");
                CopiaTablero.sampleRateBarrido=Float.parseFloat(sampleB.getValue().trim());
               
               
               
            }
           
            return(0);
            }
           
       
    catch (Exception e){
            e.printStackTrace();
            return(-1);
        }
    }
   
    // Guarda la configuracion actual
    // devuelve 1 si todo ha sido correcto, 0 si ha habido algun error
    public int guardarConfiguracion() {
        //Creamos un elemento root
        Element root=new Element("Driver");
        root.setAttribute("tipo","DRatonVirtual");
       
        //Creamos hijo elementos
        Element elementos=new Element("elementos");
        Element elemento=null;
        String elem;
        for (int i=0; i< t.elementos.size(); i++ ){
            elemento= new Element("elemento");
            Element nombre=new Element("nombre").setText(t.elementos.get(i).nombre);
            Element imagen=new Element("imagen").setText(t.elementos.get(i).nombreImagen);
            Element sonido=new Element("sonido").setText(t.elementos.get(i).nombreSonido);
            elemento.addContent(nombre);
            elemento.addContent(imagen);
            elemento.addContent(sonido);
            elementos.addContent(elemento);
            elemento= null;
        }
       
        root.addContent(elementos);
        // Creamos hijo botones
        Element botones=new Element("botones");
        Element altura=new Element("altura").setText(((Integer)t.altoBoton).toString());
        Element anchura=new Element("anchura").setText(((Integer)t.anchoBoton).toString());
        Element colorFondo=new Element("colorFondo").setText(((Integer)t.colorBot.getRGB()).toString());
        int sim= (t.simetria) ? 1 : 0;
        Element simetria=new Element("simetria").setText(((Integer)sim).toString());
        botones.addContent(altura);
        botones.addContent(anchura);
        botones.addContent(colorFondo);
        botones.addContent(simetria);
       
        Element boton=null;
        for (int i=0; i< t.coleccion.size(); i++ ){
            boton= new Element("boton");
            Element nombreBot=new Element("nombre").setText(t.coleccion.get(i).getName());
            boton.addContent(nombreBot);
            botones.addContent(boton);
            boton= null;
        }
        root.addContent(botones);
       
        // forma
        Element forma=new Element("forma");
        Element tipo=new Element("tipo").setText(((Integer)t.tipoTablero).toString());
        Element fila=new Element("fila").setText(((Integer)t.filas).toString());
        Element columna=new Element("columna").setText(((Integer)t.columnas).toString());
        forma.addContent(tipo);
        forma.addContent(fila);
        forma.addContent(columna);
        root.addContent(forma);
       
        // movimiento
        Element movimiento=new Element("movimiento");
        Element tipoM=new Element("tipo").setText(((Integer)t.tipoMovimiento).toString());
        Element relacion=new Element("relacion").setText(((Integer)t.relacionVel).toString());
        movimiento.addContent(tipoM);
        movimiento.addContent(relacion);
        root.addContent(movimiento);
       
        // barrido
        Element barrido=new Element("barrido");
        Element tipoB=new Element("tipo").setText(((Integer)t.barrido).toString());
        Element formaB=new Element("forma").setText(((Integer)t.tipoBarrido).toString());
        Element velocidad=new Element("velocidad").setText(((Integer)((int)t.speedScan)).toString());
        Element color=new Element("color").setText(((Integer)(t.colorB.getRGB())).toString());
        Element pasadas=new Element("pasadas").setText(((Integer)((int)t.pasadas)).toString());
        Element minScan=new Element("min").setText(((Integer)t.minScan).toString());
        Element maxScan=new Element("max").setText(((Integer)t.maxScan).toString());
      
       
        barrido.addContent(tipoB);
        barrido.addContent(formaB);
        barrido.addContent(velocidad);
        barrido.addContent(color);
        barrido.addContent(pasadas);
        barrido.addContent(minScan);
        barrido.addContent(maxScan);
        root.addContent(barrido);
       
        //opacidad
        Element opacidad=new Element("opacidad");
        Element valor=new Element("valor").setText(((Integer)t.opacidad).toString());
        opacidad.addContent(valor);
        root.addContent(opacidad);
       
        // transparencia
        Element transparencia=new Element("transparencia");
        int valT= (t.transparencia) ? 1 : 0;
        Element valorT=new Element("valor").setText(((Integer)valT).toString());
        transparencia.addContent(valorT);
        root.addContent(transparencia);
       
        //barra
        Element barra=new Element("barra");
        int pres= (t.barra) ? 1 : 0;
        Element presente=new Element("presente").setText(((Integer)pres).toString());
        barra.addContent(presente);
        root.addContent(barra);
       
        // cursor
        Element cursor=new Element("cursor");
        Element velocidadC=new Element("velocidad").setText(((Integer)t.speedCursor).toString());
        cursor.addContent(velocidadC);
        Element minCursor=new Element("min").setText(((Integer)t.minCursor).toString());
        cursor.addContent(minCursor);
       
        Element maxCursor=new Element("max").setText(((Integer)t.maxCursor).toString());
        cursor.addContent(maxCursor);
       
        root.addContent(cursor);
       
        //silencio
        Element silencio=new Element("silencio");
        int sil= (t.sonido) ? 1 : 0;
        Element activado=new Element("activado").setText(((Integer)sil).toString());
        silencio.addContent(activado);
        root.addContent(silencio);
       
        //estilo
        Element estilo=new Element("estilo");
        Element tipoE=new Element("tipo").setText(((Integer)t.tipoEstilo).toString());
        estilo.addContent(tipoE);
        root.addContent(estilo);
       
       
        //cultura
        Element cultura=new Element("cultura");
        Element idioma=new Element("tipo").setText(t.Idiomas.toString());
        cultura.addContent(idioma);
        root.addContent(cultura);
       
        // entradas
       
        // teclado
        Element entradas=new Element("entradas");
        Element teclado=new Element("teclado");
        Element uso=new Element("uso").setText(((Integer)t.uso_teclado).toString());
        Element seleccion=new Element("seleccion").setText(t.teclaSeleccion);
        Element barridoEntradas=new Element("barrido").setText(t.teclaBarrido);
        teclado.addContent(uso);
        teclado.addContent(seleccion);
        teclado.addContent(barridoEntradas);
        entradas.addContent(teclado);
        uso=null; seleccion=null; barridoEntradas=null;
       
        // raton
        Element raton=new Element("raton");
        uso=new Element("uso").setText(((Integer)t.uso_raton).toString());
        seleccion=new Element("seleccion").setText(((Integer)t.botonSeleccion).toString());
        barridoEntradas=new Element("barrido").setText(((Integer)t.botonBarrido).toString());
        raton.addContent(uso);
        raton.addContent(seleccion);
        raton.addContent(barridoEntradas);
        entradas.addContent(raton);
        uso=null; seleccion=null; barridoEntradas=null;
       
       
        // microfono
        Element microfono=new Element("microfono");
        uso=new Element("uso").setText(((Integer)t.uso_microfono).toString());
        seleccion=new Element("seleccion");
        Element volumen=new Element("volumen").setText(((Float)t.volumenSeleccion).toString());
        Element sample=new Element("sample").setText(((Float)t.sampleRateSeleccion).toString());
       
        seleccion.addContent(volumen);
        seleccion.addContent(sample);
        volumen=null; sample=null;
       
        barridoEntradas=new Element("barrido");
        volumen=new Element("volumen").setText(((Float)t.volumenBarrido).toString());
        sample=new Element("sample").setText(((Float)t.sampleRateBarrido).toString());
        barridoEntradas.addContent(volumen);
        barridoEntradas.addContent(sample);
       
        microfono.addContent(uso);
        microfono.addContent(seleccion);
        microfono.addContent(barridoEntradas);
        entradas.addContent(microfono);
       
        root.addContent(entradas);
       
        System.out.println("Antes de crear documento");
        Document doc=new Document(root);//Creamos el documento
       
        //Vamos a almacenarlo en un fichero y ademas lo sacaremos por pantalla
        try{
            XMLOutputter out=new XMLOutputter(Format.getPrettyFormat());
            //XMLOutputter out=new XMLOutputter("  ",true);
            System.out.println("Nombre fich:"+  file);
            //FileOutputStream fileO=new FileOutputStream(pathConfiguracion + file);
            if (file.endsWith(".xml")){
                System.out.println("Acaba en xml");
            }
            else{
                System.out.println("NOOOOOO Acaba en xml");
                file += ".xml";
            }
            FileOutputStream fileO=new FileOutputStream(file);
            out.output(doc,fileO);
            fileO.flush();
            fileO.close();
            out.output(doc,System.out);
        } catch(Exception e){
            e.printStackTrace();
            return(0);
        }
        return(1);
    }
   
}

TOP

Related Classes of Funcion.ParsearXML

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.