negocio.Metodos.java Source code

Java tutorial

Introduction

Here is the source code for negocio.Metodos.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import com.google.gson.Gson;
import datos.Alquilado;
import datos.Coche;
import datos.Franquicia;
import datos.Vendido;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import util.Constantes;

/**
 *
 * @author andrea
 */
public class Metodos {

    private String rutaJDOM;
    private String rutaFicheros;

    /*para que estn cargadas las rutas 
     leo las properties en el constructor*/
    public Metodos() {
        leerProperties();
    }

    private void leerProperties() {
        FileReader fr = null;
        Properties p;
        try {
            p = new Properties();
            fr = new FileReader(Constantes.properties);
            p.load(fr);
            rutaJDOM = p.getProperty(Constantes.rutaJDOM);
            rutaFicheros = p.getProperty(Constantes.rutaFicheros);
        } catch (FileNotFoundException ex) {
            //Logger.getLogger(Ventana.class.getName()).log(Level.SEVERE, null, ex);

        } catch (IOException ex) {
            //Logger.getLogger(Ventana.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (fr != null) {
                try {
                    fr.close();
                } catch (IOException ex) {
                    //Logger.getLogger(Ventana.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }

    public ArrayList<File> listarArchivos(File carpeta) {
        ArrayList<File> al = new ArrayList<>();
        /*creo el archivo con el path*/
        File f = new File(carpeta.getPath());
        /*si el archivo seleccionado no tiene hijos dentro devuelve null asi que 
         mientra no sea null devuelve la lista de los hijos*/
        if (f.listFiles() != null) {
            /*recorro el array de los hijos y
             por cada uno aado una entrada al arraylist*/
            for (File f1 : f.listFiles()) {
                al.add(f1);
            }
        }
        return al;
    }

    public Document inicializarDocumento() {
        Document doc = new Document(new Element("raiz"));
        Element totales = new Element("totales");
        totales.addContent(new Element("enStock").setText(""));
        totales.addContent(new Element("vendidos").setText(""));
        totales.addContent(new Element("alquilados").setText(""));
        totales.addContent(new Element("TotalFacturado").setText(""));
        doc.getRootElement().addContent(totales);
        doc.getRootElement().addContent(new Element("franquicias"));
        return doc;
    }

    public Franquicia leerJaxb(String nombreFichero) {
        JAXBContext jc;
        Franquicia franquicia = null;
        try {
            jc = JAXBContext.newInstance(Franquicia.class);
            Unmarshaller u = jc.createUnmarshaller();
            franquicia = (Franquicia) u.unmarshal(new File(rutaFicheros + "/JAXB/" + nombreFichero));
        } catch (JAXBException ex) {
            System.out.println("Error al cargar Franquicia JAXB");
        }
        return franquicia;
    }

    public Franquicia leerJson(String nombreFichero) {
        Gson gs = new Gson();
        FileReader fr;
        Franquicia f = null;
        try {
            fr = new FileReader(rutaFicheros + "/JSON/" + nombreFichero);
            f = gs.fromJson(fr, Franquicia.class);
        } catch (FileNotFoundException ex) {
            System.out.println("No existe el archivo");
        }
        return f;
    }

    public Franquicia leerObject(String nombreFichero) {
        FileInputStream fis = null;
        ObjectInputStream ois = null;
        Franquicia f = null;
        Franquicia f1;
        try {
            fis = new FileInputStream(rutaFicheros + "/OBJECT/" + nombreFichero);
            ois = new ObjectInputStream(fis);
            f1 = (Franquicia) ois.readObject();
            f = f1;
        } catch (FileNotFoundException ex) {
            System.out.println("No existe el archivo");
        } catch (IOException | ClassNotFoundException ex) {
            //Logger.getLogger(FicherosDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                fis.close();
                ois.close();
            } catch (IOException ex) {
                System.out.println("Error al leer Object");
            }
        }
        return f;
    }

    public void guardarJSON(Franquicia f) {
        Gson gs = new Gson();
        FileWriter fw = null;
        try {
            fw = new FileWriter(rutaFicheros + "/JSON/" + f.getId());
            gs.toJson(f, fw);
            fw.close();
        } catch (IOException ex) {
            System.out.println("Error al escribir JSON");
        }

    }

    public void guardarJAXB(Franquicia f) {
        try {
            JAXBContext jc;
            jc = JAXBContext.newInstance(Franquicia.class);
            Marshaller m = jc.createMarshaller();
            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            m.marshal(f, new File(rutaFicheros + "/JAXB/" + f.getId()));
        } catch (JAXBException ex) {
            System.out.println("Error al guardar en JaxB");
        }
    }

    public void guardarObject(Franquicia franquicia) {
        File f = new File(rutaFicheros + "/OBJECT/" + franquicia.getId());
        FileOutputStream fos;
        try {
            fos = new FileOutputStream(f);
            ObjectOutputStream ous = new ObjectOutputStream(fos);
            ous.writeObject(franquicia);
            ous.close();
            fos.close();
        } catch (Exception ex) {
            System.out.println("Error al escribir Objeto");
        }
    }

    public Element deFranquiciaAElement(Franquicia f) {
        Element franquicia = new Element("franquicia");
        franquicia.setAttribute("id", "" + f.getId());
        Element enStock = new Element("enStock");
        for (Coche c : f.getEnStock()) {
            Element coche = new Element("coche");
            coche.setAttribute("matricula", c.getMatricula());
            coche.addContent(new Element("marca").setText(c.getMarca()));
            coche.addContent(new Element("modelo").setText(c.getModelo()));
            enStock.addContent(coche);
        }
        franquicia.addContent(enStock);
        //estos slo si existen
        Element ventas = new Element("vendidos");
        if (f.getVendidos() != null) {
            for (Vendido v : f.getVendidos()) {
                Element coche = new Element("coche");
                coche.setAttribute("matricula", v.getMatricula());
                coche.setAttribute("precio", v.getPrecio() + "");
                ventas.addContent(coche);
            }
            franquicia.addContent(ventas);
        }

        Element alquiler = new Element("alquilados");
        if (f.getAlquilados() != null) {
            for (Alquilado a : f.getAlquilados()) {
                Element coche = new Element("coche");
                coche.setAttribute("matricula", a.getMatricula());
                coche.setAttribute("precio", a.getPrecio() + "");
                alquiler.addContent(coche);
            }
            franquicia.addContent(alquiler);
        }
        return franquicia;
    }

    public Franquicia deElementAFranquicia(Element f) {
        Franquicia franquicia = new Franquicia();
        franquicia.setId(Integer.parseInt(f.getAttributeValue("id")));
        ArrayList<Coche> enStock = new ArrayList<>();
        Element eStock = f.getChild("enStock");
        for (Element eCoche : eStock.getChildren()) {
            Coche coche = new Coche();
            coche.setMarca(eCoche.getChildText("marca"));
            coche.setModelo(eCoche.getChildText("modelo"));
            coche.setMatricula(eCoche.getAttributeValue("matricula"));
            enStock.add(coche);
        }

        ArrayList<Alquilado> alquilados = new ArrayList<>();
        Element eAlquilados = f.getChild("alquilados");
        for (Element eCoche : eAlquilados.getChildren()) {
            Alquilado coche = new Alquilado();
            coche.setMatricula(eCoche.getAttributeValue("matricula"));
            coche.setPrecio(Integer.parseInt(eCoche.getAttributeValue("precio")));
            alquilados.add(coche);
        }

        ArrayList<Vendido> vendidos = new ArrayList<>();
        Element eVendidos = f.getChild("vendidos");
        for (Element eCoche : eVendidos.getChildren()) {
            Vendido coche = new Vendido();
            coche.setMatricula(eCoche.getAttributeValue("matricula"));
            coche.setPrecio(Integer.parseInt(eCoche.getAttributeValue("precio")));
            vendidos.add(coche);
        }

        franquicia.setEnStock(enStock);
        franquicia.setAlquilados(alquilados);
        franquicia.setVendidos(vendidos);

        return franquicia;
    }

    public ArrayList<Franquicia> leerFranquicias(String nombreFichero) {
        SAXBuilder saxBuilder = new SAXBuilder();
        ArrayList<Franquicia> franquicias = new ArrayList<>();
        /*se crea el file*/
        File file = new File(nombreFichero);
        try {
            //se convierte a document
            Document documento = saxBuilder.build(file);
            Element rootNode = documento.getRootElement();
            List<Element> elementosFranquicia = rootNode.getChildren("franquicia");
            Franquicia f;
            for (Element franquicia : elementosFranquicia) {
                f = new Franquicia(Integer.parseInt(franquicia.getAttributeValue("id")),
                        franquicia.getAttributeValue("formato"));
                franquicias.add(f);
            }
        } catch (JDOMException | IOException e) {
            System.out.println("Error al leer franquicias");
        }
        return franquicias;
    }

    public void escribirXML(Document doc) {
        XMLOutputter xmlOutput = new XMLOutputter();
        xmlOutput.setFormat(Format.getPrettyFormat());
        try {
            /*escribimos el documento en el file*/
            xmlOutput.output(doc, new FileWriter(rutaJDOM));
        } catch (IOException ex) {
            System.out.println("Error al escribir el documento");
        }
    }
}