From f52ff6ecd5f373b6f6c198add5842b3ec101bf1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isidoro=20Nevares=20Mart=C3=ADn?= Date: Mon, 2 Mar 2026 17:01:27 +0100 Subject: [PATCH] Commit inicial --- .classpath | 17 +++ .project | 13 +- .settings/org.eclipse.jdt.apt.core.prefs | 2 + .settings/org.eclipse.jdt.core.prefs | 1 + .../concesionario/AppConcesionario.java | 139 +++++++++++------- .../conectores/GestorEntityManagerJPA.java | 52 ------- .../conectores/GestorSesionesHibernate.java | 46 ------ .../lapaloma/concesionario/dao/ICocheDAO.java | 14 ++ .../concesionario/dao/impl/CocheDaoArray.java | 74 ++++++++++ .../org/lapaloma/concesionario/vo/Coche.java | 25 +--- 10 files changed, 213 insertions(+), 170 deletions(-) create mode 100644 .settings/org.eclipse.jdt.apt.core.prefs delete mode 100644 src/main/java/org/lapaloma/concesionario/conectores/GestorEntityManagerJPA.java delete mode 100644 src/main/java/org/lapaloma/concesionario/conectores/GestorSesionesHibernate.java create mode 100644 src/main/java/org/lapaloma/concesionario/dao/ICocheDAO.java create mode 100644 src/main/java/org/lapaloma/concesionario/dao/impl/CocheDaoArray.java diff --git a/.classpath b/.classpath index f7e4a1d..653dfd7 100644 --- a/.classpath +++ b/.classpath @@ -36,5 +36,22 @@ + + + + + + + + + + + + + + + + + diff --git a/.project b/.project index 87dcf71..d8c1f21 100644 --- a/.project +++ b/.project @@ -1,6 +1,6 @@ - aadd_concesionario + eedd_ra3_ejemplo2 @@ -20,4 +20,15 @@ org.eclipse.jdt.core.javanature org.eclipse.m2e.core.maven2Nature + + + 1772465433562 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..d4313d4 --- /dev/null +++ b/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=false diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 2f5cc74..1b6e1ef 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -4,5 +4,6 @@ org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.processAnnotations=disabled org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.source=1.8 diff --git a/src/main/java/org/lapaloma/concesionario/AppConcesionario.java b/src/main/java/org/lapaloma/concesionario/AppConcesionario.java index 3762d79..b6b4d4b 100644 --- a/src/main/java/org/lapaloma/concesionario/AppConcesionario.java +++ b/src/main/java/org/lapaloma/concesionario/AppConcesionario.java @@ -2,13 +2,10 @@ package org.lapaloma.concesionario; import java.util.List; -import org.hibernate.Session; -import org.lapaloma.concesionario.conectores.GestorEntityManagerJPA; -import org.lapaloma.concesionario.conectores.GestorSesionesHibernate; +import org.lapaloma.concesionario.dao.ICocheDAO; +import org.lapaloma.concesionario.dao.impl.CocheDaoArray; import org.lapaloma.concesionario.vo.Coche; -import jakarta.persistence.EntityManager; - /** * * AppConcesionario: Clase que realiza el tratamiento de los coches de un @@ -22,59 +19,93 @@ import jakarta.persistence.EntityManager; public class AppConcesionario { - public static void main(String[] args) { - AppConcesionario app = new AppConcesionario(); - try { - app.realizarMigracionMySQLAObjectDB(); + private ICocheDAO iCocheDAO; - app.realizarMigracionMySQLAPostgreSQLConJPA(); - } catch (Exception e) { - e.printStackTrace(); - } - } + public static void main(String[] args) { + AppConcesionario app = new AppConcesionario(); + app.inicializar(); + app.consultarCoches(); + app.consultarPorId(3); + app.altaCoche(); + app.actualizarCoche(); + app.borrarCoche(2); + app.consultarCoches(); + } - private void realizarMigracionMySQLAObjectDB() throws Exception { - // Obtener los coches de MySQL para guardarlos en ObjectDB - Session sesionH = GestorSesionesHibernate.getSession(); - List listaCoches = sesionH.createQuery("FROM Coche", Coche.class).getResultList(); - for (Coche coche : listaCoches) { - System.out.println(coche); + private void inicializar() { + iCocheDAO = new CocheDaoArray(); + } - EntityManager em = GestorEntityManagerJPA.getEntityManager(); - Coche cocheODB = em.find(Coche.class, coche.getIdentificador()); - // Si el coche no existe en ObjectDB, lo persisto; si existe, lo actualizo - if (cocheODB == null) { - em.getTransaction().begin(); - em.persist(coche); - em.getTransaction().commit(); - } else { - em.getTransaction().begin(); - em.merge(coche); - em.getTransaction().commit(); - } - } - } + private void consultarCoches() { + try { + List listaCoches = iCocheDAO.obtenerListaCoches(); - private void realizarMigracionMySQLAPostgreSQLConJPA() { - // Obtener los coches de MySQL para guardarlos en PostreSQL - EntityManager emMySQL = GestorEntityManagerJPA.getEntityManagerMySQL(); - List listaCoches = emMySQL.createQuery("FROM Coche", Coche.class).getResultList(); - for (Coche coche : listaCoches) { - System.out.println(coche); + System.out.println("#########################################"); + System.out.println("LISTADO DE COCHES"); + System.out.println("#########################################"); - EntityManager emPostgreSQL = GestorEntityManagerJPA.getEntityManagerMySQL(); - Coche cochePostgreSQL = emPostgreSQL.find(Coche.class, coche.getIdentificador()); - // Si el coche no existe en ObjectDB, lo persisto; si existe, lo actualizo - if (cochePostgreSQL == null) { - emPostgreSQL.getTransaction().begin(); - emPostgreSQL.persist(coche); - emPostgreSQL.getTransaction().commit(); - } else { - emPostgreSQL.getTransaction().begin(); - emPostgreSQL.merge(coche); - emPostgreSQL.getTransaction().commit(); - } - } + for (Coche coche : listaCoches) { + System.out.println(coche); + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void consultarPorId(int id) { + System.out.println("#########################################"); + System.out.println("CONSULTA POR ID: " + id); + System.out.println("#########################################"); + + Coche coche = iCocheDAO.obtenerCochePorID(id); + + if (coche != null) { + System.out.println(coche); + } else { + System.out.println("No existe coche con id " + id); + } + } + + private void altaCoche() { + System.out.println("#########################################"); + System.out.println("ALTA DE COCHE"); + System.out.println("#########################################"); + + Coche nuevo = new Coche(8, "Toyota", "Corolla", 1.8); + iCocheDAO.crearCoche(nuevo); + + System.out.println("Coche creado: " + nuevo); + } + + private void actualizarCoche() { + System.out.println("#########################################"); + System.out.println("ACTUALIZAR COCHE"); + System.out.println("#########################################"); + + Coche cocheActualizado = new Coche(1, "Renault", "Megane RS", 2.0); + Coche resultado = iCocheDAO.actualizarCoche(cocheActualizado); + + if (resultado != null) { + System.out.println("Coche actualizado: " + resultado); + } else { + System.out.println("No se encontró el coche para actualizar"); + } + } + + private void borrarCoche(int id) { + System.out.println("#########################################"); + System.out.println("BORRAR COCHE ID: " + id); + System.out.println("#########################################"); + + Coche coche = iCocheDAO.obtenerCochePorID(id); + + if (coche != null) { + iCocheDAO.borrarCoche(coche); + System.out.println("Coche borrado correctamente"); + } else { + System.out.println("No existe coche con id " + id); + } + } - } } diff --git a/src/main/java/org/lapaloma/concesionario/conectores/GestorEntityManagerJPA.java b/src/main/java/org/lapaloma/concesionario/conectores/GestorEntityManagerJPA.java deleted file mode 100644 index 65575d4..0000000 --- a/src/main/java/org/lapaloma/concesionario/conectores/GestorEntityManagerJPA.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.lapaloma.concesionario.conectores; - -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 static EntityManagerFactory entityManagerFactoryMySQL = null; - private static EntityManagerFactory entityManagerFactoryPostgreSQKL = null; - - private GestorEntityManagerJPA() { // Constructor privado para evitar instanciación - } - - // Carga la configuración desde META-INF/persistence.xml - static { - try { - entityManagerFactory = Persistence.createEntityManagerFactory("UP_CONCESIONARIO_ODB"); - entityManagerFactoryMySQL = Persistence.createEntityManagerFactory("UP_CONCESIONARIO_MYSQL"); - entityManagerFactoryPostgreSQKL = Persistence.createEntityManagerFactory("UP_CONCESIONARIO_POSTGRESQL"); - } catch (Throwable ex) { - System.err.println("Error en EntityManagerFactory: " + ex); - throw new ExceptionInInitializerError(ex); - } - } - - public static EntityManager getEntityManager() { - return entityManagerFactory.createEntityManager(); - } - - public static EntityManager getEntityManagerMySQL() { - return entityManagerFactoryMySQL.createEntityManager(); - } - - public static EntityManager getEntityManagerPostgreSQL() { - return entityManagerFactoryPostgreSQKL.createEntityManager(); - } - - public static void closeEntityManagerFactory() { - entityManagerFactory.close(); - } -} diff --git a/src/main/java/org/lapaloma/concesionario/conectores/GestorSesionesHibernate.java b/src/main/java/org/lapaloma/concesionario/conectores/GestorSesionesHibernate.java deleted file mode 100644 index 27dc236..0000000 --- a/src/main/java/org/lapaloma/concesionario/conectores/GestorSesionesHibernate.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.lapaloma.concesionario.conectores; - -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.cfg.Configuration; - -/** - * - * GestorSesionesHibernate: Clase que realiza la gestión de sesiones Hibernate. - * - * @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 Session getCurrentSession() { - return sessionFactory.getCurrentSession(); - } - - public static void closeFactoria() { - if (sessionFactory != null) { - sessionFactory.close(); - } - } -} diff --git a/src/main/java/org/lapaloma/concesionario/dao/ICocheDAO.java b/src/main/java/org/lapaloma/concesionario/dao/ICocheDAO.java new file mode 100644 index 0000000..720523a --- /dev/null +++ b/src/main/java/org/lapaloma/concesionario/dao/ICocheDAO.java @@ -0,0 +1,14 @@ +package org.lapaloma.concesionario.dao; + +import java.util.List; + +import org.lapaloma.concesionario.vo.Coche; + +public interface ICocheDAO { + public Coche obtenerCochePorID(int identificador) ; + public Coche actualizarCoche(Coche coche) ; + public Coche crearCoche(Coche coche); + public void borrarCoche(Coche coche); + public List obtenerListaCoches(); + public List obtenerCochePorModelo(String modelo); +} diff --git a/src/main/java/org/lapaloma/concesionario/dao/impl/CocheDaoArray.java b/src/main/java/org/lapaloma/concesionario/dao/impl/CocheDaoArray.java new file mode 100644 index 0000000..2e99605 --- /dev/null +++ b/src/main/java/org/lapaloma/concesionario/dao/impl/CocheDaoArray.java @@ -0,0 +1,74 @@ +package org.lapaloma.concesionario.dao.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import org.lapaloma.concesionario.dao.ICocheDAO; +import org.lapaloma.concesionario.vo.Coche; + +public class CocheDaoArray implements ICocheDAO { + + private List listaCoches; + + public CocheDaoArray() { + listaCoches = new ArrayList<>(); + + // Simulamos los inserts de la base de datos + listaCoches.add(new Coche(1, "Renault", "Megane", 1.5)); + listaCoches.add(new Coche(2, "Seat", "León", 1.6)); + listaCoches.add(new Coche(3, "Suzuki", "Vitara", 1.9)); + listaCoches.add(new Coche(4, "Seat", "Clio", 1.4)); + listaCoches.add(new Coche(5, "Seat", "Ibiza", 1.4)); + listaCoches.add(new Coche(6, "Peugeot", "308", 2.0)); + listaCoches.add(new Coche(7, "Renault", "Megane", 1.5)); + } + + @Override + public Coche obtenerCochePorID(int identificador) { + Coche coche = null; + for (Coche cocheLista : listaCoches) { + if (cocheLista.getIdentificador() == identificador) { + coche = cocheLista; + break; + } + } + return coche; + } + + @Override + public Coche actualizarCoche(Coche coche) { + Coche cocheActualizado = null; + + for (int i = 0; i < listaCoches.size(); i++) { + if (listaCoches.get(i).getIdentificador() == coche.getIdentificador()) { + listaCoches.set(i, coche); + cocheActualizado = coche; + break; + } + } + return cocheActualizado; // no encontrado + } + + @Override + public Coche crearCoche(Coche coche) { + // Opcional: comprobar que no exista el ID + listaCoches.add(coche); + return coche; + } + + @Override + public void borrarCoche(Coche coche) { + listaCoches.removeIf(c -> c.getIdentificador() == coche.getIdentificador()); + } + + @Override + public List obtenerListaCoches() { + return new ArrayList<>(listaCoches); // devolvemos copia + } + + @Override + public List obtenerCochePorModelo(String modelo) { + return listaCoches.stream().filter(c -> c.getModelo().equalsIgnoreCase(modelo)).collect(Collectors.toList()); + } +} diff --git a/src/main/java/org/lapaloma/concesionario/vo/Coche.java b/src/main/java/org/lapaloma/concesionario/vo/Coche.java index 4366a1c..eb3918e 100644 --- a/src/main/java/org/lapaloma/concesionario/vo/Coche.java +++ b/src/main/java/org/lapaloma/concesionario/vo/Coche.java @@ -1,9 +1,5 @@ package org.lapaloma.concesionario.vo; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; - /** * * Coche: Clase de persistencia que representa un coche de un concesionario. @@ -13,52 +9,47 @@ import jakarta.persistence.Table; * * */ -@Entity -@Table(name = "T_COCHE") public class Coche { - @Id private int identificador; - private String marca; private String modelo; private double cilindrada; - + public Coche(int identificador, String marca, String modelo, double cilindrada) { + super(); + this.identificador = identificador; + this.marca = marca; + this.modelo = modelo; + this.cilindrada = cilindrada; + } public int getIdentificador() { return identificador; } - public void setIdentificador(int identificador) { this.identificador = identificador; } - public String getMarca() { return marca; } - public void setMarca(String marca) { this.marca = marca; } - public String getModelo() { return modelo; } - public void setModelo(String modelo) { this.modelo = modelo; } - public double getCilindrada() { return cilindrada; } - public void setCilindrada(double cilindrada) { this.cilindrada = cilindrada; } - @Override public String toString() { return "Coche [identificador=" + identificador + ", marca=" + marca + ", modelo=" + modelo + ", cilindrada=" + cilindrada + "]"; } + }