From d91d6bd116037eb248f2674fa9bf770b898da0ad Mon Sep 17 00:00:00 2001 From: michaelpaliz Date: Mon, 21 Nov 2022 13:02:34 +0100 Subject: [PATCH] Nuevo proyecto para el ejercicio --- .classpath | 6 ++ .idea/.gitignore | 8 ++ .idea/misc.xml | 6 ++ .idea/modules.xml | 8 ++ .project | 17 ++++ Ejercicio11.iml | 11 ++ README.md | 18 ++++ .../Controlador/FuncionesXML.class | Bin 0 -> 5066 bytes out/production/Ejercicio11/Main.class | Bin 0 -> 1640 bytes .../Ejercicio11/Modulo/Persona.class | Bin 0 -> 1226 bytes .../Ejercicio11/Modulo/Personas.class | Bin 0 -> 953 bytes out/production/Ejercicio11/persona.bin | Bin 0 -> 246 bytes persona.bin | Bin 0 -> 257 bytes personas.xml | 1 + src/Controlador/FuncionesXML.java | 96 ++++++++++++++++++ src/Main.java | 37 +++++++ src/Modulo/Persona.java | 38 +++++++ src/Modulo/Personas.java | 34 +++++++ src/persona.bin | Bin 0 -> 246 bytes 19 files changed, 280 insertions(+) create mode 100644 .classpath create mode 100644 .idea/.gitignore create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .project create mode 100644 Ejercicio11.iml create mode 100644 README.md create mode 100644 out/production/Ejercicio11/Controlador/FuncionesXML.class create mode 100644 out/production/Ejercicio11/Main.class create mode 100644 out/production/Ejercicio11/Modulo/Persona.class create mode 100644 out/production/Ejercicio11/Modulo/Personas.class create mode 100644 out/production/Ejercicio11/persona.bin create mode 100644 persona.bin create mode 100644 personas.xml create mode 100644 src/Controlador/FuncionesXML.java create mode 100644 src/Main.java create mode 100644 src/Modulo/Persona.java create mode 100644 src/Modulo/Personas.java create mode 100644 src/persona.bin diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..75f69ad --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -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 diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..edb05c4 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..f8cce33 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..cc3eaa8 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + Ejercicio11 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/Ejercicio11.iml b/Ejercicio11.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/Ejercicio11.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..22ac31b --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +

EJERCICIO 11

+

El ejercicio consiste en guardar objetos almacenados en un fichero .bin y trasladarlos o trasformarlos en un fichero xml

+

En mi caso creo una clase donde gestiona los tres basicos componentes para manipular el fichero.

+ + + +

Resultado

+ +```java +[Persona{id=1, nombre='Michael', edad=21} +, Persona{id=2, nombre='Jhoan', edad=19} +, Persona{id=3, nombre='Ricardo', edad=18} +] +``` diff --git a/out/production/Ejercicio11/Controlador/FuncionesXML.class b/out/production/Ejercicio11/Controlador/FuncionesXML.class new file mode 100644 index 0000000000000000000000000000000000000000..6a08eadbc5fc5b7d74f0e94bf51a979d04b4c660 GIT binary patch literal 5066 zcma)A33OCf8UEg6k~cGXKog*4AhtjYSr`~8*xDJ2vLrN+1qlrV*U8LFGGQ`r`sNJ@ zb!kDXf^8LRmDXLXacQ*+B!nnbP@=6^weEF6ao_5$r=BBz_r5nTGhqgSXF(e0`EE_p$AZgX&U^PuAr>0zS9rdq(OyGJXLEbM}>kJEy=XrmK*5S z&8@NSl+KwJBOXh2#>}L6cLu#yUy`QHZMm4s!iBi0$4t7fU_qU2RL)AK!Y#?H6}`|% ze@C)69kX&K_gpbme$^B&qpL5_5I_yCR`DVQbpp$w@X$aioQauPq846n#B&3B+FF}S zrV_f@6pLGixm&|En6IERtq(S*vsNq}=iZ^ZdTHF{D2R$p7izc`*AXbHnX-?9MVF(E zY8InTMJ1K>9D!9_YI4otFopGA; za;#OchRjTA$j@q6hxN>iv_3>1XXP~%q-Rt`6E`o;y-M7Il`5JQ%q)b^LBNMi3Ova~ z0F7wX(1vye<-NMqObD2A%>ldu9V)gI6$2Ym4O?+5E5fc=DyO&iD41Q>Y{#KpG92K= z{@XNcN0$OEt6OU<64ITs7`L@0c(Svsh`CN5UP+MC#z42pn$U<>Yj_P_tH4h~+vMm} zJe<9Kh!HS75tIJKH6(<8Dwj2KOrYJPp%;A|>x*UEB(U^)M*#guso2Rdm<(>qjHRY6VeSon6G-@v!ZNT|1}F*)~N*XLvL2Qt_7JFx{QC^Z^ZT z#oHLnMvhrC+b!aoSrshXGgh2^jQaI#eG3A32kudEH?u`%Abl&4)Nn7}$zaKd#i_JJ zREibHYXApupNeMn}Mr) zm&i^oD$9ryffMJ&fyY^5T6i+roynh$7RoK`b|g+aB~CBwvocy+V;Om*QgMV8J)b4w z5XefF;wh0)>I9F9qYADn6lqRpa!%R>FpAq%j4KG{CG1mXk<2lCL6n>0;=o|r$doLQ zVDblW3{PtKqUeqRma2rUMhu_Q@FkIKR-=m6UMc>8K>eKJaJ0zr%07w#~4bj9fb5$}=Vm=OA8fgCW)0{*vAqJ!GK(975}2CI~8+ zqI8w5t6)&UJXhXUS}@5K%4BF2JIXmHf}}yEtrrIB**Lp@(sTl3N(FTsso$aEX9PVT z7Q*!QoK+AxXGP@vB9AR?u~!xgox`sLw!bC{lc7^6BKbRq-)i_Be$Rv+GZ$4?Pd6#a9xas>OE`?_SRM5#Y6wZ(WoSax)r6p*1Wy!iUfi zR6WKa4`%XO%>}?5UV~gV7t=8hvp6!}UWVDYl5bQX)hqHzZ0O+zS8<((>x8bkVmnVQ zS805oIEr~~OGmIE;thI7uqaXgT-vT zRK&S-#6J$RD_A}XD-syTU{`1qyCaoBe=rcN9KjnN$KL9!;&<0#{%ZNnQqMDS1GXT9IF{lzeuV7h*xk6E2Zt3n zh?O{m8}JBj#0YMp{wPjj6;5Ndg#KQVKnPvvC-49sB-~=`{StaFOWz0ZL4qB?VSET5 zrX5w(_Yr)Q(NKer@pp)l%W)4r&L@@jMDP$k!3a4(i-z$@J{_dBpTeg}`yrD489YpF zk4QbAC7CCw^K*EVdx&7soc$lb<9vF8Bdg#&&r3jsq9UT=u!xGt9bLtx6p~8_cS_0w0(IPo7zGX@GWf}#DmS4=xYSyCDDB z`|u<^&zDAgQn>Uy8F86lJk_9xSzg!#T-OB{(m+$@Z4!++>UT)@9+-+VK z%JR5{t2?OaRxBjOwft_4VjFqgPA0n~Co73Hh;hF1?Z;mvCsmaDEB;0nYM9u6$3G~y jM=~Ke5lpOwR)UGMDm#b`J-M(MxF{9G|DV+4!N2|oA#7(h literal 0 HcmV?d00001 diff --git a/out/production/Ejercicio11/Main.class b/out/production/Ejercicio11/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..a05fd423794210dbc2fa66db2ebe70968a8a19bf GIT binary patch literal 1640 zcmZ`(?Q+{h6g_J@k*z4HdtTGuOLYUZ*U`tGdQbPvNBCVG0*|Id#GJ+OT4+l_N} zEN(K}WF<7M@5<&;)Hq3eL3;ZD*6WTZb)Ho4m{uG0PZCckTA5ZgZF2btUrH{&k}cLt zJKSO0(&;+B(eN!y8p~`n$kh4vU?V1Bk9FKwuE^w~(K0q4N zd`lsN8Ajyhzj$z*woOW>SC*<=Ty!r?9@-bF#bnr$8Z*%xy zH@|j*&06M87awO~$fQeh;8*xx8Am{U0At=BK} zN0upnI}zlEg!}>vC(vtMRA0!F=TGpcmZ_z)T|DjJ>p`HNo*4}^(wSc1jOfdeHj4yv ag&D8nISry6g{tO107pRDXkQh+70M}dsRwZ8cj&Bn$$GuHwR`?r5eNP8UiDxE)ch!qn67* zGtFMBUC%Y`gPK6p&^0D0n{CUqO>aveQY!B;zU}Bn5&{z{5>N!jo2G5-bdFkv`#b>4 zG@Z6)?P(-H@GuzP4BO;NgK&-VUJ4ORtH@$ZHb1W-2}Ry!RirQ~Zx>Xk5-{q$G*76% z`R`E3Id))p4U#5PicIpg6H3gM%7dr^38p*>bb3x8J%MF`>HdK{?3k8rxC+VwqoE6L zO}(DN5>_PZRe`A?!lbSxtgEQv3MZ}|9~(9a7D|mlJ|RX;!8L)@YB8{RL+warNL{FB!CCynD7=kGa;F?*b^MV|5#i+o1Zd&5Pg%&Ih><8+EU8VQXom8Mtn`F1g(%jp&$iP!M9Cfg{_Q@d?3NE0tu)9 zi66j^LdzVBbo+|_4?Q;sg&Piq6WLjA zsU9Na-^Q&N+Sim(C>^UWgRn;^4CK@mVdOLOb|Sss|66SDfC0IE>B{hckZyN|gv_Bg zv5QEfX`+S|1FM9_qRV~X7w=W8B3ft`K)7JSM464~OV>V*-i&Pj`E0Oy-x~{OD0o;N zG!ACM*D@fiB%}naBrPTrZq`nudYxejTexOmn^0LuQ7TMa#txy?o=v*sc(3z{V8m7_ zrxK$RN>e+WZ;eoIcM@)~qMd(&|Ftk5dV|oH?v!^tM`$UtXiwRB+e8<;gyO)9{IUH| zs@0e0{rA*ZJS3aIZx$(Rz(AhA3%v9cil{4>`CifYDl+`d`{A?Bkp~(F)VgPAbbp}r z@(gQVu>MI`Z}3^+3Uy{s!mfBqXL24+tN=EU?=PX?yU6rkOCiMgpI3_=jQa}x8?^@B@_GV{`b76Z*u w0Aj`x1~%Wsy!@Q};zEWx23DXD69|_uuzKYerKiG0BY~pKB@8S9sRgMO0Gi=Ng#Z8m literal 0 HcmV?d00001 diff --git a/persona.bin b/persona.bin new file mode 100644 index 0000000000000000000000000000000000000000..5328f34e2636a3a65a3a7eccf0bdffeda46b60c7 GIT binary patch literal 257 zcmZ4UmVvdnh=JcXKczG$UoRlFs5n0_v6uk@7?~IteHb_jprR!V0zO%ZWr_NwC7C(; zKAFWO))fUn-NGP2J&>TDV^L9JB}k^C@sjM!gNqLlm! E05AkeH~;_u literal 0 HcmV?d00001 diff --git a/personas.xml b/personas.xml new file mode 100644 index 0000000..641d04a --- /dev/null +++ b/personas.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/Controlador/FuncionesXML.java b/src/Controlador/FuncionesXML.java new file mode 100644 index 0000000..1f01f9f --- /dev/null +++ b/src/Controlador/FuncionesXML.java @@ -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 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); + } + + } + + + +} diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..5b32fb1 --- /dev/null +++ b/src/Main.java @@ -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 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)); + } + + +} \ No newline at end of file diff --git a/src/Modulo/Persona.java b/src/Modulo/Persona.java new file mode 100644 index 0000000..658208a --- /dev/null +++ b/src/Modulo/Persona.java @@ -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"; + } +} diff --git a/src/Modulo/Personas.java b/src/Modulo/Personas.java new file mode 100644 index 0000000..0fe2f4d --- /dev/null +++ b/src/Modulo/Personas.java @@ -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 personas; + + public Personas() { + personas = new ArrayList<>(); + } + + public void add(Persona persona){ + personas.add(persona); + } + + public List getPersonas() { + return personas; + } + + @Override + public String toString() { + return personas.toString(); + } + + + + +} diff --git a/src/persona.bin b/src/persona.bin new file mode 100644 index 0000000000000000000000000000000000000000..6704fd4bd07ad81d340947e8fe963be5cb1dca8c GIT binary patch literal 246 zcmZ4UmVvdnh=C_JKP5FsFCaC)ASaap0vMSX7=0L6QW8rNOBh6bvJ%S@^-D`KbMzgH ziV`b*GK)*BD++*mg+VfUAQ?TlOhw}**_p=^=Q1-edNQySXI7!mfBqXL24+tN=EU?=PX?yU6rkOCiMgpI3_=jQa}x8?^@B@_GV{`b76Z*u w0Aj`x1~%Wsy!@Q};zEWx23DXD69|_uuzKYerKiG0BY~pKB@8S9sRgMO0Gi=Ng#Z8m literal 0 HcmV?d00001