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 + "]";
}
+
}