Java tutorial
/* * 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"); } } }