Browse Source

Nuevo proyecto para el ejercicio

master
michaelpaliz 1 year ago
commit
d91d6bd116
19 changed files with 280 additions and 0 deletions
  1. +6
    -0
      .classpath
  2. +8
    -0
      .idea/.gitignore
  3. +6
    -0
      .idea/misc.xml
  4. +8
    -0
      .idea/modules.xml
  5. +17
    -0
      .project
  6. +11
    -0
      Ejercicio11.iml
  7. +18
    -0
      README.md
  8. BIN
      out/production/Ejercicio11/Controlador/FuncionesXML.class
  9. BIN
      out/production/Ejercicio11/Main.class
  10. BIN
      out/production/Ejercicio11/Modulo/Persona.class
  11. BIN
      out/production/Ejercicio11/Modulo/Personas.class
  12. BIN
      out/production/Ejercicio11/persona.bin
  13. BIN
      persona.bin
  14. +1
    -0
      personas.xml
  15. +96
    -0
      src/Controlador/FuncionesXML.java
  16. +37
    -0
      src/Main.java
  17. +38
    -0
      src/Modulo/Persona.java
  18. +34
    -0
      src/Modulo/Personas.java
  19. BIN
      src/persona.bin

+ 6
- 0
.classpath View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="out/production/Ejercicio11"/>
</classpath>

+ 8
- 0
.idea/.gitignore View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

+ 6
- 0
.idea/misc.xml View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_18" default="true" project-jdk-name="corretto-18" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

+ 8
- 0
.idea/modules.xml View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/Ejercicio11.iml" filepath="$PROJECT_DIR$/Ejercicio11.iml" />
</modules>
</component>
</project>

+ 17
- 0
.project View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Ejercicio11</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

+ 11
- 0
Ejercicio11.iml View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

+ 18
- 0
README.md View File

@ -0,0 +1,18 @@
<h2>EJERCICIO 11 </h2>
<p>El ejercicio consiste en guardar objetos almacenados en un fichero .bin y trasladarlos o trasformarlos en un fichero xml</p>
<p>En mi caso creo una clase donde gestiona los tres basicos componentes para manipular el fichero.</p>
<ul>
<li> <strong>lecturaFichero</strong></li>
<li> <strong>escrituraFichero</strong></li>
<li><strong>crearFichero</strong></li>
</ul>
<p>Resultado</p>
```java
[Persona{id=1, nombre='Michael', edad=21}
, Persona{id=2, nombre='Jhoan', edad=19}
, Persona{id=3, nombre='Ricardo', edad=18}
]
```

BIN
out/production/Ejercicio11/Controlador/FuncionesXML.class View File


BIN
out/production/Ejercicio11/Main.class View File


BIN
out/production/Ejercicio11/Modulo/Persona.class View File


BIN
out/production/Ejercicio11/Modulo/Personas.class View File


BIN
out/production/Ejercicio11/persona.bin View File


BIN
persona.bin View File


+ 1
- 0
personas.xml View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><people><person edad="18" id="3" nombre="Ricardo"/></people>

+ 96
- 0
src/Controlador/FuncionesXML.java View File

@ -0,0 +1,96 @@
package Controlador;
import Modulo.Persona;
import Modulo.Personas;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
import java.util.List;
public class FuncionesXML {
private final File fichero;
private final Personas personas;
public FuncionesXML(Personas personas, File fichero) {
this.personas = personas;
this.fichero = fichero;
}
public void crearXML(List<Persona> listadoPersonas, File nombreFicheroNuevo){
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
//root elements
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("people");
doc.appendChild(rootElement);
Element persona = doc.createElement("person");
for (Persona p : listadoPersonas) {
rootElement.appendChild(persona);
//set attribute to element
persona.setAttribute("id", String.valueOf(p.getId()));
persona.setAttribute("nombre", p.getNombre());
persona.setAttribute("edad", String.valueOf(p.getEdad()));
}
//write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(nombreFicheroNuevo);
transformer.transform(source, result);
System.out.println("Done!");
}catch(ParserConfigurationException | TransformerException pce){
pce.printStackTrace();
}
}
public Object lecturaFichero() {
Object object = null;
try (FileInputStream fileInputStream = new FileInputStream(fichero);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream)){
object = objectInputStream.readObject();
} catch(IOException e){
e.printStackTrace();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
return object;
}
public boolean escribirFichero(Object obj){
try (FileOutputStream fileOutputStream = new FileOutputStream(fichero);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream)
){
objectOutputStream.writeObject(obj);
objectOutputStream.flush();
return true;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

+ 37
- 0
src/Main.java View File

@ -0,0 +1,37 @@
import Controlador.FuncionesXML;
import Modulo.Persona;
import Modulo.Personas;
import java.io.*;
import java.util.List;
public class Main {
private static Personas datos;
private static File fichero;
public static void main(String[] args) {
cargarDatos();
FuncionesXML funcionesXML = new FuncionesXML(datos, fichero);
if (funcionesXML.escribirFichero(datos)){
Personas personas = (Personas) funcionesXML.lecturaFichero();
System.out.println(personas.toString());
List<Persona> listadoPersonas = personas.getPersonas();
funcionesXML.crearXML(listadoPersonas,new File("personas.xml"));
}else{
System.out.println("Error");
}
}
public static void cargarDatos(){
fichero = new File("persona.bin");
datos = new Personas();
datos.add(new Persona("Michael", 21));
datos.add(new Persona("Jhoan", 19));
datos.add(new Persona("Ricardo", 18));
}
}

+ 38
- 0
src/Modulo/Persona.java View File

@ -0,0 +1,38 @@
package Modulo;
import java.io.Serializable;
public class Persona implements Serializable {
private static int contador = 0;
private final int id;
private final String nombre;
private final int edad;
public Persona(String nombre, int edad) {
this.id = ++contador;
this.nombre = nombre;
this.edad = edad;
}
public int getId() {
return id;
}
public String getNombre() {
return nombre;
}
public int getEdad() {
return edad;
}
@Override
public String toString() {
return "Persona{" +
"id=" + id +
", nombre='" + nombre + '\'' +
", edad=" + edad +
'}' + "\n";
}
}

+ 34
- 0
src/Modulo/Personas.java View File

@ -0,0 +1,34 @@
package Modulo;
import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class Personas implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
private final List<Persona> personas;
public Personas() {
personas = new ArrayList<>();
}
public void add(Persona persona){
personas.add(persona);
}
public List<Persona> getPersonas() {
return personas;
}
@Override
public String toString() {
return personas.toString();
}
}

BIN
src/persona.bin View File


Loading…
Cancel
Save