diff --git a/.classpath b/.classpath
index d863192..51a6fca 100644
--- a/.classpath
+++ b/.classpath
@@ -26,7 +26,7 @@
-
+
diff --git a/pom.xml b/pom.xml
index b63ee35..2acca54 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,6 +4,13 @@
aadd_act3_3
0.0.1-SNAPSHOT
+
+
+ tools.jackson.dataformat
+ jackson-dataformat-xml
+ 3.0.1
+
+
org.hibernate.orm
diff --git a/src/main/java/org/lapaloma/aadd/redmetro/AppRedMetro.java b/src/main/java/org/lapaloma/aadd/redmetro/AppRedMetro.java
index e00113b..dee6b16 100644
--- a/src/main/java/org/lapaloma/aadd/redmetro/AppRedMetro.java
+++ b/src/main/java/org/lapaloma/aadd/redmetro/AppRedMetro.java
@@ -1,15 +1,24 @@
package org.lapaloma.aadd.redmetro;
-import org.lapaloma.aadd.redmetro.gestores.GestorSesionesHibernate;
+import org.lapaloma.aadd.redmetro.gestores.GestorEntityManagerJPA;
+import org.lapaloma.aadd.redmetro.procesador.ProcesadorURLs;
/**
- * Clase principal que inicia la sesión de Hibernate.
- * Al iniciar la sesión, Hibernate ejecutará hbm2ddl.auto=create y recreará la base de datos
- * según las entidades definidas.
+ * Clase principal que inicia la sesión de Hibernate. Al iniciar la sesión,
+ * Hibernate ejecutará hbm2ddl.auto=create y recreará la base de datos según las
+ * entidades definidas.
*/
public class AppRedMetro {
- public static void main(String[] args) {
- // Obtiene la Session de forma estática
- GestorSesionesHibernate.getSession();
- }
+ public static void main(String[] args) {
+ AppRedMetro app = new AppRedMetro();
+ // Obtiene la Session de forma estática
+ // GestorEntityManagerJPA.getEntityManager();
+
+ app.procesasrURLs();
+ }
+
+ private void procesasrURLs() {
+ ProcesadorURLs procesadorURLs = new ProcesadorURLs();
+ procesadorURLs.procesarURLEstacionesXML();
+ }
}
diff --git a/src/main/java/org/lapaloma/aadd/redmetro/dao/IEstacionDAO.java b/src/main/java/org/lapaloma/aadd/redmetro/dao/IEstacionDAO.java
new file mode 100644
index 0000000..0cb4bb1
--- /dev/null
+++ b/src/main/java/org/lapaloma/aadd/redmetro/dao/IEstacionDAO.java
@@ -0,0 +1,5 @@
+package org.lapaloma.aadd.redmetro.dao;
+
+public interface IEstacionDAO {
+
+}
diff --git a/src/main/java/org/lapaloma/aadd/redmetro/dao/ILineaEstacionDAO.java b/src/main/java/org/lapaloma/aadd/redmetro/dao/ILineaEstacionDAO.java
new file mode 100644
index 0000000..5935cc0
--- /dev/null
+++ b/src/main/java/org/lapaloma/aadd/redmetro/dao/ILineaEstacionDAO.java
@@ -0,0 +1,5 @@
+package org.lapaloma.aadd.redmetro.dao;
+
+public interface ILineaEstacionDAO {
+
+}
diff --git a/src/main/java/org/lapaloma/aadd/redmetro/dao/jpa/EstacionDaoJPA.java b/src/main/java/org/lapaloma/aadd/redmetro/dao/jpa/EstacionDaoJPA.java
new file mode 100644
index 0000000..18c8c33
--- /dev/null
+++ b/src/main/java/org/lapaloma/aadd/redmetro/dao/jpa/EstacionDaoJPA.java
@@ -0,0 +1,7 @@
+package org.lapaloma.aadd.redmetro.dao.jpa;
+
+import org.lapaloma.aadd.redmetro.dao.IEstacionDAO;
+
+public class EstacionDaoJPA implements IEstacionDAO{
+
+}
diff --git a/src/main/java/org/lapaloma/aadd/redmetro/dao/jpa/LineaEstacionDaoJPA.java b/src/main/java/org/lapaloma/aadd/redmetro/dao/jpa/LineaEstacionDaoJPA.java
new file mode 100644
index 0000000..75a91ba
--- /dev/null
+++ b/src/main/java/org/lapaloma/aadd/redmetro/dao/jpa/LineaEstacionDaoJPA.java
@@ -0,0 +1,7 @@
+package org.lapaloma.aadd.redmetro.dao.jpa;
+
+import org.lapaloma.aadd.redmetro.dao.ILineaEstacionDAO;
+
+public class LineaEstacionDaoJPA implements ILineaEstacionDAO{
+
+}
diff --git a/src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorEntityManagerJPA.java b/src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorEntityManagerJPA.java
new file mode 100644
index 0000000..41bde21
--- /dev/null
+++ b/src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorEntityManagerJPA.java
@@ -0,0 +1,41 @@
+package org.lapaloma.aadd.redmetro.gestores;
+
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
+
+/**
+ *
+ * GestorEntityManagerJPA: Clase que realiza la gestión de EntityManagers de JPA.
+ *
+ * @author Isidoro Nevares MartÃn - IES Virgen de la Paloma
+ * @date 4 dic 2025
+ *
+ *
+ */
+
+public class GestorEntityManagerJPA {
+ private static EntityManagerFactory entityManagerFactory = null;
+
+ private GestorEntityManagerJPA() { // Constructor privado para evitar instanciación
+ }
+
+ // Carga la configuración desde META-INF/persistence.xml
+ static {
+ try {
+ entityManagerFactory = Persistence.createEntityManagerFactory("UP_PROYECTOSIES_ODB");
+ } catch (Throwable ex) {
+ System.err.println("Error en EntityManagerFactory: " + ex);
+ throw new ExceptionInInitializerError(ex);
+ }
+ }
+
+ public static EntityManager getEntityManager() {
+ return entityManagerFactory.createEntityManager();
+ }
+
+
+ public static void closeEntityManagerFactory() {
+ entityManagerFactory.close();
+ }
+}
diff --git a/src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorFicheroConfiguracion.java b/src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorFicheroConfiguracion.java
new file mode 100644
index 0000000..849c093
--- /dev/null
+++ b/src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorFicheroConfiguracion.java
@@ -0,0 +1,45 @@
+package org.lapaloma.aadd.redmetro.gestores;
+
+import java.io.IOException;
+import java.util.Properties;
+
+/**
+ *
+ * GestorConfiguracion: Clase que se encarga de gestionar la configuración de
+ * los ficheros.
+ *
+ * @author Isidoro Nevares MartÃn - IES Virgen de la Paloma
+ * @date 10 oct 2025
+ *
+ *
+ */
+
+public class GestorFicheroConfiguracion {
+ private final static String RUTA_FICHERO_CONFIGURACION = "conf.properties";
+ private static Properties propiedades = null;
+
+ private GestorFicheroConfiguracion() {
+ // Constructor privado para evitar instanciación
+ }
+
+ // Bloque estático que se ejecuta una única vez al cargar la clase
+ static {
+ cargarPropiedadesFichero();
+ }
+
+ private static void cargarPropiedadesFichero() {
+ propiedades = new Properties();
+ try {
+ propiedades
+ .load(GestorFicheroConfiguracion.class.getClassLoader()
+ .getResourceAsStream(RUTA_FICHERO_CONFIGURACION));
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public static String getValorfromClave(String clave) {
+ return propiedades.getProperty(clave);
+ }
+}
diff --git a/src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorSesionesHibernate.java b/src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorSesionesHibernate.java
deleted file mode 100644
index 8871da8..0000000
--- a/src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorSesionesHibernate.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.lapaloma.aadd.redmetro.gestores;
-
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-import org.hibernate.cfg.Configuration;
-
-/**
- *
- * GestorSesionesHibernate: Clase que realiza ....
- *
- * @author Isidoro Nevares MartÃn - IES Virgen de la Paloma
- * @date 4 dic 2025
- *
- *
- */
-
-public class GestorSesionesHibernate {
- private static SessionFactory sessionFactory = null;
-
- private GestorSesionesHibernate() {// Constructor privado para evitar instanciación
- }
-
- // Carga la configuración desde hibernate.cfg.xml
- static {
- try {
- sessionFactory = new Configuration().configure().buildSessionFactory();
- } catch (Throwable ex) {
- System.err.println("Error en SessionFactory: " + ex);
- throw new ExceptionInInitializerError(ex);
- }
- }
-
- public static Session getSession() {
- return sessionFactory.openSession();
- }
-
- public static void cerrarFactoria() {
- if (sessionFactory != null) {
- sessionFactory.close();
- }
- }
-}
diff --git a/src/main/java/org/lapaloma/aadd/redmetro/procesador/ProcesadorURLs.java b/src/main/java/org/lapaloma/aadd/redmetro/procesador/ProcesadorURLs.java
new file mode 100644
index 0000000..5193d99
--- /dev/null
+++ b/src/main/java/org/lapaloma/aadd/redmetro/procesador/ProcesadorURLs.java
@@ -0,0 +1,61 @@
+package org.lapaloma.aadd.redmetro.procesador;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+
+import org.lapaloma.aadd.redmetro.gestores.GestorFicheroConfiguracion;
+import org.lapaloma.aadd.redmetro.vo.Estacion;
+
+import tools.jackson.databind.JsonNode;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.dataformat.xml.XmlMapper;
+
+public class ProcesadorURLs {
+ public void procesarURLEstacionesXML() {
+
+ String urlXMLEstaciones = GestorFicheroConfiguracion.getValorfromClave("url.xml.estacion");
+
+ URL url = null;
+ try {
+ url = new URI(urlXMLEstaciones).toURL();
+ } catch (MalformedURLException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (URISyntaxException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ // Procesar con Jackson XML
+ ObjectMapper mapper = new XmlMapper();
+
+ try (InputStream is = url.openStream()) {
+ JsonNode root = mapper.readTree(is);
+ JsonNode nodosEstacion = root.path("estaciones").path("estacion");
+ for (JsonNode nodoEstacion : nodosEstacion) {
+ String nombre = nodoEstacion.path("nombre").asString();
+ String direccion = nodoEstacion.path("direccion").asString();
+ int id = nodoEstacion.path("id").asInt();
+
+ System.out.println("Nombre: " + nombre);
+ System.out.println("Dirección: " + direccion);
+ System.out.println("ID: " + id);
+
+ Estacion estacion = new Estacion();
+ estacion.setCodigo(id);
+ estacion.setNombre(nombre);
+ estacion.setDireccion(direccion);
+
+
+ }
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/src/main/resources/conf.properties b/src/main/resources/conf.properties
index 23302e7..fc0900b 100644
--- a/src/main/resources/conf.properties
+++ b/src/main/resources/conf.properties
@@ -1,10 +1,7 @@
-# Información sobre fichero XML
-catalogos.fichero.xml.ruta=ficheros/catalogos.xml
+# Información sobre Estaciones (XML)
+url.xml.estacion=https://dam2.decieloytierra.es/trenes_estaciones_accesos.xml
-# Información sobre fichero JSON
-gastos.fichero.json.ruta=ficheros/gastos.json
+# Información sobre Linea Estación (JSON)
+url.json.lineaestacion=https://dam2.decieloytierra.es/estaciones-lineas.json
-
-# Información sobre fichero CSV
-ingresos.fichero.csv.ruta=ficheros/ingresos.csv