From cc22926d49b20d326d5090b24f41941780fcb56b Mon Sep 17 00:00:00 2001 From: Isidoro Nevares Date: Fri, 23 Jan 2026 18:08:21 +0100 Subject: [PATCH] Incluir Procesador URLs --- .classpath | 2 +- pom.xml | 7 +++ .../lapaloma/aadd/redmetro/AppRedMetro.java | 25 +++++--- .../aadd/redmetro/dao/IEstacionDAO.java | 5 ++ .../aadd/redmetro/dao/ILineaEstacionDAO.java | 5 ++ .../aadd/redmetro/dao/jpa/EstacionDaoJPA.java | 7 +++ .../redmetro/dao/jpa/LineaEstacionDaoJPA.java | 7 +++ .../gestores/GestorEntityManagerJPA.java | 41 +++++++++++++ .../gestores/GestorFicheroConfiguracion.java | 45 ++++++++++++++ .../gestores/GestorSesionesHibernate.java | 42 ------------- .../redmetro/procesador/ProcesadorURLs.java | 61 +++++++++++++++++++ src/main/resources/conf.properties | 11 ++-- 12 files changed, 200 insertions(+), 58 deletions(-) create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/dao/IEstacionDAO.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/dao/ILineaEstacionDAO.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/dao/jpa/EstacionDaoJPA.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/dao/jpa/LineaEstacionDaoJPA.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorEntityManagerJPA.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorFicheroConfiguracion.java delete mode 100644 src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorSesionesHibernate.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/procesador/ProcesadorURLs.java 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