Compare commits

2 Commits
main ... xml

Author SHA1 Message Date
bb03819e98 Implementar cargar y guardar 2023-05-23 01:26:31 +02:00
84a6b95e1b Inicio XML 2023-05-23 00:36:51 +02:00
3 changed files with 33 additions and 49 deletions

View File

@@ -6,7 +6,7 @@ public class App {
Manager manager = new Manager();
do {
System.out.println("=======================");
System.out.println("Agenda de contactos TXT");
System.out.println("Agenda de contactos XML");
System.out.println("=======================");
System.out.println("1. Nuevo contacto");
System.out.println("2. Buscar por nombre");

View File

@@ -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<Persona> personas;
int limite;
public Manager() {
personas = new ArrayList<Persona>();
limite = 5;
JAXBContext contexto = JAXBContext.newInstance(Persona.class);
cargar();
}
public void cargar() {
BufferedReader in = null;
Unmarshaller um = contexto.createUnmarshaller();
int num = 0;
for (int i = 0; i < limite; i++) {
String archivo = "contacto_" + i + ".xml";
try {
in = new BufferedReader(new FileReader(fileName));
Persona persona = (Persona) um.unmarshal(new File(carpeta, archivo));
personas.add(persona);
num++;
} 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 {
try {
in.close();
} catch (Exception e) {
System.out.println("Error al cerrar el archivo " + e.getMessage());
}
}
}
public void guardar() {
System.out.println("Guarda datos");
BufferedWriter out = null;
Marshaller m = contexto.createMarshaller();
// Guarda siempre ordenado
Collections.sort(personas);
for (int i = 0; i < personas.size(); i++) {
String archivo = "contacto_" + i + ".xml";
try {
out = new BufferedWriter(new FileWriter(fileName));
for (Persona persona : personas) {
out.write(persona.getNombre() + "," + persona.getTelefono());
out.newLine();
}
m.marshal(personas.get(i), new File(carpeta, archivo));
} 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());
}
}
}
}
@@ -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("------------------------------");
}

View File

@@ -1,5 +1,10 @@
package agenda;
import java.xml.bind.annotation.*;
@XmlRootElement(name = "persona")
@XmlType(propOrder = { "nombre", "telefono" })
@XmlAccessorType(XmlAccessType.FIELD)
public class Persona implements Comparable {
private String nombre;
private String telefono;
@@ -30,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;