diff --git a/src/agenda/Manager.java b/src/agenda/Manager.java index 7ee3a1c..63b1b71 100644 --- a/src/agenda/Manager.java +++ b/src/agenda/Manager.java @@ -1,74 +1,49 @@ package agenda; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.FileReader; -import java.io.FileWriter; +import java.util.*; +import java.io.*; +import javax.xml.bind.*; +import javax.xml.bind.annotation.*; public class Manager { - String fileName = "contactos.txt"; + String carpeta = "datos"; ArrayList personas; int limite; public Manager() { personas = new ArrayList(); limite = 5; + JAXBContext contexto = JAXBContext.newInstance(Persona.class); cargar(); } public void cargar() { - BufferedReader in = null; - try { - in = new BufferedReader(new FileReader(fileName)); - } catch (Exception e) { - // Si no existe el fichero no carga nada - System.out.println("La agenda está vacía"); - return; - } - try { - int num = 0; - String linea = in.readLine(); - while (linea != null) { - String[] datos = linea.split(","); - personas.add(new Persona(datos[0], datos[1])); - num++; - linea = in.readLine(); - } - System.out.println("Se han cargado " + num + " contactos"); - } catch (Exception e) { - System.out.println("Error cargando el archivo " + e.getMessage()); - } finally { + Unmarshaller um = contexto.createUnmarshaller(); + int num = 0; + for (int i = 0; i < limite; i++) { + String archivo = "contacto_" + i + ".xml"; try { - in.close(); + Persona persona = (Persona) um.unmarshal(new File(carpeta, archivo)); + personas.add(persona); + num++; } catch (Exception e) { - System.out.println("Error al cerrar el archivo " + e.getMessage()); + // Si no existe el fichero no carga nada } } + System.out.println("Se han cargado " + num + " contactos"); } public void guardar() { System.out.println("Guarda datos"); - BufferedWriter out = null; + Marshaller m = contexto.createMarshaller(); // Guarda siempre ordenado Collections.sort(personas); - try { - out = new BufferedWriter(new FileWriter(fileName)); - for (Persona persona : personas) { - out.write(persona.getNombre() + "," + persona.getTelefono()); - out.newLine(); - } - } catch (Exception e) { - System.out.println("Error guardando el archivo " + e.getMessage()); - } finally { - if (out != null) { - try { - out.close(); - } catch (Exception e) { - System.out.println("Error al cerrar el archivo " + e.getMessage()); - } + for (int i = 0; i < personas.size(); i++) { + String archivo = "contacto_" + i + ".xml"; + try { + m.marshal(personas.get(i), new File(carpeta, archivo)); + } catch (Exception e) { + System.out.println("Error guardando el archivo " + e.getMessage()); } } } @@ -120,7 +95,7 @@ public class Manager { System.out.println("Nombre - Teléfono"); Collections.sort(personas); for (Persona persona : personas) { - System.out.println(persona.getNombre() + " " + persona.getTelefono()); + System.out.println(persona); } System.out.println("------------------------------"); } diff --git a/src/agenda/Persona.java b/src/agenda/Persona.java index 209015b..315155f 100644 --- a/src/agenda/Persona.java +++ b/src/agenda/Persona.java @@ -35,6 +35,10 @@ public class Persona implements Comparable { this.telefono = telefono; } + public String toString() { + return nombre + " " + telefono; + } + @Override public int compareTo(Object temp) { Persona persona = (Persona) temp;