diff --git a/pom.xml b/pom.xml
index 621d6aa..cdb6cbf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -50,6 +50,14 @@
42.7.9
+
+
+ org.projectlombok
+ lombok
+ 1.18.42
+ compile
+
+
\ No newline at end of file
diff --git a/src/main/java/es/palomafp/aadd/inm/AppProyectosIES.java b/src/main/java/es/palomafp/aadd/inm/AppProyectosIES.java
index 623c5ae..387db6a 100644
--- a/src/main/java/es/palomafp/aadd/inm/AppProyectosIES.java
+++ b/src/main/java/es/palomafp/aadd/inm/AppProyectosIES.java
@@ -1,6 +1,10 @@
package es.palomafp.aadd.inm;
-import es.palomafp.aadd.inm.procesador.ProcesadorFicheros;
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate;
+import es.palomafp.aadd.inm.procesador.ProcesadorFicheroCSV;
+import es.palomafp.aadd.inm.procesador.ProcesadorFicheroJSON;
+import es.palomafp.aadd.inm.procesador.ProcesadorFicheroXML;
/**
*
@@ -16,18 +20,49 @@ public class AppProyectosIES {
AppProyectosIES app = new AppProyectosIES();
// Generar la estructura de la base de datos en PostgreSQL
- //GestorSesionesHibernate.getSession();
-
- app.procesarFicheros();
+ // GestorSesionesHibernate.getSession();
+
+ try {
+ app.procesarFicheros();
+ } catch (ProyectosIESException e) {
+ String mensajeError = "Error en la clase %s al realizar una operación de %s";
+ String operacion = "Operación desconocida";
+ int codigoError = e.getCodigoError();
+ switch (codigoError) {
+ case ProyectosIESException.ERROR_GESTION_CONEXION:
+ operacion = "Gestión de Conexión";
+ break;
+ case ProyectosIESException.ERROR_CONSULTA:
+ operacion = "Consulta";
+ break;
+ case ProyectosIESException.ERROR_INSERCION:
+ operacion = "Inserción";
+ break;
+ case ProyectosIESException.ERROR_BORRADO:
+ operacion = "Borrado";
+ break;
+ case ProyectosIESException.ERROR_ACTUALIZACION:
+ operacion = "Actualización";
+ break;
+ }
+ mensajeError = String.format(mensajeError, e.getClaseOrigen().getName(), operacion);
+ System.out.println(mensajeError);
+ e.printStackTrace();
+ }
+
}
- private void procesarFicheros() {
- ProcesadorFicheros procesador = new ProcesadorFicheros();
-
- procesador.procesarFicheroXMLCatalogos();
-
- procesador.procesarFicheroJSONGastos();
-
- procesador.procesarFicheroCSVIngresos();
+ private void procesarFicheros() throws ProyectosIESException {
+ // Procesar datos de catálogos
+ ProcesadorFicheroXML procesadorFicheroXML = new ProcesadorFicheroXML();
+ procesadorFicheroXML.procesarFicheroXMLCatalogos();
+
+ // Procesar datos de Gastos
+ ProcesadorFicheroJSON procesadorFicheroJSON = new ProcesadorFicheroJSON();
+ procesadorFicheroJSON.procesarFicheroJSONGastos();
+
+ // Procesar datos de Ingresos
+ ProcesadorFicheroCSV procesadorFicheroCSV = new ProcesadorFicheroCSV();
+ procesadorFicheroCSV.procesarFicheroCSVIngresos();
}
}
\ No newline at end of file
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/IConceptoDAO.java b/src/main/java/es/palomafp/aadd/inm/dao/IConceptoDAO.java
new file mode 100644
index 0000000..f158298
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/IConceptoDAO.java
@@ -0,0 +1,18 @@
+package es.palomafp.aadd.inm.dao;
+
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.vo.Concepto;
+
+/**
+ *
+ * IProyectoDAO: Clase que realiza ....
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 20 ene 2026
+ *
+ *
+ */
+
+public interface IConceptoDAO extends IOperacionesDAOEntidad {
+ Concepto obtenerConceptoPorNombre(String nombreConcepto) throws ProyectosIESException;
+}
+
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/IContinenteDAO.java b/src/main/java/es/palomafp/aadd/inm/dao/IContinenteDAO.java
deleted file mode 100644
index fa1e565..0000000
--- a/src/main/java/es/palomafp/aadd/inm/dao/IContinenteDAO.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package es.palomafp.aadd.inm.dao;
-
-import java.util.List;
-
-import es.palomafp.aadd.inm.vo.Patrocinador;
-
-/**
- *
- * IContinenteDAO: Interfaz que define las operaciones de acceso a datos para
- * Continente.
- *
- * @author Isidoro Nevares Martín - IES Virgen de la Paloma
- * @date 31 oct 2025
- */
-public interface IContinenteDAO {
- Patrocinador obtenerContinentePorID(String codigo);
-
- List obtenerListaContientes();
-
- void crearContinente(Patrocinador continente);
-
- void actualizarContinente(Patrocinador continente);
-}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/ICursoProyectoDAO.java b/src/main/java/es/palomafp/aadd/inm/dao/ICursoProyectoDAO.java
new file mode 100644
index 0000000..27ba7d0
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/ICursoProyectoDAO.java
@@ -0,0 +1,18 @@
+package es.palomafp.aadd.inm.dao;
+
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.vo.CursoProyecto;
+
+/**
+ *
+ * IProyectoDAO: Clase que realiza ....
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 20 ene 2026
+ *
+ *
+ */
+
+public interface ICursoProyectoDAO extends IOperacionesDAOEntidad {
+ CursoProyecto obtenerCursoProyectoPorCursoYProyecto(String codigoCursoAcademico, Integer idProyecto) throws ProyectosIESException;
+}
+
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/IOperacionesDAOEntidad.java b/src/main/java/es/palomafp/aadd/inm/dao/IOperacionesDAOEntidad.java
new file mode 100644
index 0000000..e69fee9
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/IOperacionesDAOEntidad.java
@@ -0,0 +1,18 @@
+package es.palomafp.aadd.inm.dao;
+
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+
+/**
+ *
+ * IOperacionesBasicas: Clase que realiza ....
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 14 dic 2025
+ *
+ *
+ */
+
+public interface IOperacionesDAOEntidad {
+ T obtenerEntidadPorID(ID clave) throws ProyectosIESException;
+ void crearEntidad(T entidad) throws ProyectosIESException;
+}
+
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/IPaisDAO.java b/src/main/java/es/palomafp/aadd/inm/dao/IPaisDAO.java
deleted file mode 100644
index 5ed765a..0000000
--- a/src/main/java/es/palomafp/aadd/inm/dao/IPaisDAO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package es.palomafp.aadd.inm.dao;
-
-import java.util.List;
-
-import es.palomafp.aadd.inm.vo.Gasto;
-
-/**
- *
- * IPaisDAO: Interfaz que define las operaciones de acceso a datos para País.
- *
- * @author Isidoro Nevares Martín - IES Virgen de la Paloma
- * @date 31 oct 2025
- */
-public interface IPaisDAO {
- Gasto obtenerPaisPorID(int identificador);
-
- List obtenerListaPaises();
-
- void crearPais(Gasto pais);
-
- void actualizarPais(Gasto pais);
-
- Gasto obtenerPaisPorNombre(String nombre);
-
-}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/IProyectoDAO.java b/src/main/java/es/palomafp/aadd/inm/dao/IProyectoDAO.java
new file mode 100644
index 0000000..14b8f09
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/IProyectoDAO.java
@@ -0,0 +1,18 @@
+package es.palomafp.aadd.inm.dao;
+
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.vo.Proyecto;
+
+/**
+ *
+ * IProyectoDAO: Clase que realiza ....
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 20 ene 2026
+ *
+ *
+ */
+
+public interface IProyectoDAO extends IOperacionesDAOEntidad {
+ Proyecto obtenerProyectoPorNombre(String nombreProyecto) throws ProyectosIESException;
+}
+
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/hbm/ConceptoDaoHibernate.java b/src/main/java/es/palomafp/aadd/inm/dao/hbm/ConceptoDaoHibernate.java
new file mode 100644
index 0000000..ee0ac89
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/hbm/ConceptoDaoHibernate.java
@@ -0,0 +1,68 @@
+package es.palomafp.aadd.inm.dao.hbm;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.query.SelectionQuery;
+
+import es.palomafp.aadd.inm.dao.IConceptoDAO;
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate;
+import es.palomafp.aadd.inm.vo.Concepto;
+
+/**
+ *
+ * ConceptoDaoHibernate: Clase que implementa el interfaz IOperacionesDAOEntidad
+ *
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 31 oct 2025
+ */
+public class ConceptoDaoHibernate implements IConceptoDAO{
+
+ @Override
+ public void crearEntidad(Concepto entidad) throws ProyectosIESException {
+ Transaction transaccion = null;
+ Session sesion = null;
+
+ try {
+ sesion = GestorSesionesHibernate.getSession();
+ transaccion = sesion.beginTransaction();
+
+ sesion.persist(entidad);
+
+ transaccion.commit();
+ } catch (Exception e) {
+ if (transaccion != null && transaccion.isActive()) {
+ transaccion.rollback();
+ }
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_INSERCION);
+ } finally {
+ if (sesion != null) {
+ sesion.close();
+ }
+ }
+
+ }
+
+ @Override
+ public Concepto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Concepto obtenerConceptoPorNombre(String nombreConcepto) throws ProyectosIESException {
+ Concepto concepto = null;
+ String sentenciaHQL = "SELECT c FROM Concepto c WHERE c.nombre = :nombre";
+
+ // try con recursos "cerrables": Session
+ try (Session sesion = GestorSesionesHibernate.getSession();) {
+ SelectionQuery sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Concepto.class);
+ sentenciaConsulta.setParameter("nombre", nombreConcepto);
+
+ concepto = sentenciaConsulta.getSingleResultOrNull();
+ } catch (Exception e) {
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA);
+ }
+ return concepto;
+ }
+}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/hbm/ContinenteDaoHibernate.java b/src/main/java/es/palomafp/aadd/inm/dao/hbm/ContinenteDaoHibernate.java
deleted file mode 100644
index 95717f1..0000000
--- a/src/main/java/es/palomafp/aadd/inm/dao/hbm/ContinenteDaoHibernate.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package es.palomafp.aadd.inm.dao.hbm;
-
-import java.util.List;
-
-import org.hibernate.Session;
-import org.hibernate.query.SelectionQuery;
-
-import es.palomafp.aadd.inm.dao.IContinenteDAO;
-import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate;
-import es.palomafp.aadd.inm.vo.Patrocinador;
-
-/**
- *
- * ContinenteDaoJDBC: Clase que implementa el interfaz IContinenteDAO
- *
- * @author Isidoro Nevares Martín - IES Virgen de la Paloma
- * @date 31 oct 2025
- */
-public class ContinenteDaoHibernate implements IContinenteDAO {
-
- @Override
- public List obtenerListaContientes() {
- List listaContinentes = null;
- String sentenciaHQL = """
- SELECT c
- FROM Continente c
- """;
- // try con recursos "cerrables": Session
- try (Session sesion = GestorSesionesHibernate.getSession();) {
- SelectionQuery sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Patrocinador.class);
- listaContinentes = sentenciaConsulta.getResultList();
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- return listaContinentes;
-
- }
-
- @Override
- public void crearContinente(Patrocinador continente) {
- }
-
- @Override
- public Patrocinador obtenerContinentePorID(String codigo) {
- return null;
- }
-
- @Override
- public void actualizarContinente(Patrocinador continente) {
- }
-}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/hbm/CursoAcademicoDaoHibernate.java b/src/main/java/es/palomafp/aadd/inm/dao/hbm/CursoAcademicoDaoHibernate.java
new file mode 100644
index 0000000..a1d40c5
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/hbm/CursoAcademicoDaoHibernate.java
@@ -0,0 +1,53 @@
+package es.palomafp.aadd.inm.dao.hbm;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+
+import es.palomafp.aadd.inm.dao.IOperacionesDAOEntidad;
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate;
+import es.palomafp.aadd.inm.vo.CursoAcademico;
+
+/**
+ *
+ * CursoAcademicoDaoHibernate: Clase que implementa el interfaz
+ * IOperacionesDAOEntidad
+ *
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 31 oct 2025
+ */
+public class CursoAcademicoDaoHibernate implements IOperacionesDAOEntidad{
+
+ @Override
+ public void crearEntidad(CursoAcademico entidad) throws ProyectosIESException {
+ Transaction transaccion = null;
+ Session sesion = null;
+
+ try {
+ sesion = GestorSesionesHibernate.getSession();
+ transaccion = sesion.beginTransaction();
+
+ sesion.persist(entidad);
+
+ transaccion.commit();
+ } catch (Exception e) {
+ if (transaccion != null && transaccion.isActive()) {
+ transaccion.rollback();
+ }
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_INSERCION);
+ } finally {
+ if (sesion != null) {
+ sesion.close();
+ }
+ }
+
+ }
+
+ @Override
+ public CursoAcademico obtenerEntidadPorID(String clave) throws ProyectosIESException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+
+}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/hbm/CursoProyectoDaoHibernate.java b/src/main/java/es/palomafp/aadd/inm/dao/hbm/CursoProyectoDaoHibernate.java
new file mode 100644
index 0000000..5b70290
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/hbm/CursoProyectoDaoHibernate.java
@@ -0,0 +1,71 @@
+package es.palomafp.aadd.inm.dao.hbm;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.query.SelectionQuery;
+
+import es.palomafp.aadd.inm.dao.ICursoProyectoDAO;
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate;
+import es.palomafp.aadd.inm.vo.CursoProyecto;
+
+/**
+ *
+ * CursoProyectoDaoHibernate: Clase que implementa el interfaz
+ * IOperacionesDAOEntidad
+ *
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 31 oct 2025
+ */
+public class CursoProyectoDaoHibernate implements ICursoProyectoDAO {
+
+ @Override
+ public void crearEntidad(CursoProyecto entidad) throws ProyectosIESException {
+ Transaction transaccion = null;
+ Session sesion = null;
+
+ try {
+ sesion = GestorSesionesHibernate.getSession();
+ transaccion = sesion.beginTransaction();
+
+ sesion.persist(entidad);
+
+ transaccion.commit();
+ } catch (Exception e) {
+ if (transaccion != null && transaccion.isActive()) {
+ transaccion.rollback();
+ }
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_INSERCION);
+ } finally {
+ if (sesion != null) {
+ sesion.close();
+ }
+ }
+
+ }
+
+ @Override
+ public CursoProyecto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public CursoProyecto obtenerCursoProyectoPorCursoYProyecto(String codigoCursoAcademico, Integer idProyecto) throws ProyectosIESException {
+ CursoProyecto cursoProyecto = null;
+ String sentenciaHQL = "SELECT cp FROM CursoProyecto cp WHERE cp.cursoAcademico.codigo= :codigo and cp.proyecto.identificador= :idProyecto";
+
+ // try con recursos "cerrables": Session
+ try (Session sesion = GestorSesionesHibernate.getSession();) {
+ SelectionQuery sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, CursoProyecto.class);
+ sentenciaConsulta.setParameter("codigo", codigoCursoAcademico);
+ sentenciaConsulta.setParameter("idProyecto", idProyecto);
+
+ cursoProyecto = sentenciaConsulta.getSingleResultOrNull();
+ } catch (Exception e) {
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA);
+ }
+ return cursoProyecto;
+ }
+
+}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/hbm/PaisDaoHibernate.java b/src/main/java/es/palomafp/aadd/inm/dao/hbm/PaisDaoHibernate.java
deleted file mode 100644
index 60104f9..0000000
--- a/src/main/java/es/palomafp/aadd/inm/dao/hbm/PaisDaoHibernate.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package es.palomafp.aadd.inm.dao.hbm;
-
-import java.util.List;
-
-import org.hibernate.Session;
-import org.hibernate.Transaction;
-import org.hibernate.query.SelectionQuery;
-
-import es.palomafp.aadd.inm.dao.IPaisDAO;
-import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate;
-import es.palomafp.aadd.inm.vo.Gasto;
-
-/**
- *
- * PaisDaoJDBC: Clase que implementa el interfaz IPaisDAO
- *
- * @author Isidoro Nevares Martín - IES Virgen de la Paloma
- * @date 31 oct 2025
- */
-public class PaisDaoHibernate implements IPaisDAO {
-
- @Override
- public List obtenerListaPaises() {
- List listaPaises = null;
- String sentenciaHQL = """
- SELECT p
- FROM Pais p
- """;
-
- // try con recursos "cerrables": Session
- try (Session sesion = GestorSesionesHibernate.getSession();) {
-
- SelectionQuery sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Gasto.class);
- listaPaises = sentenciaConsulta.getResultList();
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- return listaPaises;
- }
-
- @Override
- public void actualizarPais(Gasto pais) {
- Transaction transaccion = null;
- Session sesion = null;
-
- try {
- sesion = GestorSesionesHibernate.getSession();
- transaccion = sesion.beginTransaction();
-
- if (!sesion.contains(pais))
- sesion.merge(pais);
-
- transaccion.commit();
- } catch (Exception e) {
- if (transaccion != null && transaccion.isActive()) {
- transaccion.rollback();
- }
- e.printStackTrace();
- } finally {
- if (sesion != null) {
- sesion.close();
- }
- }
- }
-
- @Override
- public Gasto obtenerPaisPorID(int identificador) {
- Gasto pais = null;
-
- return pais;
- }
-
- @Override
- public void crearPais(Gasto pais) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public Gasto obtenerPaisPorNombre(String nombre) {
- Gasto pais = null;
- String sentenciaHQL = """
- SELECT p
- FROM Pais p
- where p.nombrePais = :nombre
- """;
-
- // try con recursos "cerrables": Session
- try (Session sesion = GestorSesionesHibernate.getSession();) {
-
- SelectionQuery sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Gasto.class);
- sentenciaConsulta.setParameter("nombre", nombre);
- pais = sentenciaConsulta.getSingleResult();
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- return pais;
- }
-
-}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/hbm/PatrocinadorDaoHibernate.java b/src/main/java/es/palomafp/aadd/inm/dao/hbm/PatrocinadorDaoHibernate.java
new file mode 100644
index 0000000..5a2b79f
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/hbm/PatrocinadorDaoHibernate.java
@@ -0,0 +1,51 @@
+package es.palomafp.aadd.inm.dao.hbm;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+
+import es.palomafp.aadd.inm.dao.IOperacionesDAOEntidad;
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate;
+import es.palomafp.aadd.inm.vo.Patrocinador;
+
+/**
+ *
+ * ConceptoDaoHibernate: Clase que implementa el interfaz IOperacionesDAOEntidad
+ *
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 31 oct 2025
+ */
+public class PatrocinadorDaoHibernate implements IOperacionesDAOEntidad{
+
+ @Override
+ public void crearEntidad(Patrocinador entidad) throws ProyectosIESException {
+ Transaction transaccion = null;
+ Session sesion = null;
+
+ try {
+ sesion = GestorSesionesHibernate.getSession();
+ transaccion = sesion.beginTransaction();
+
+ sesion.persist(entidad);
+
+ transaccion.commit();
+ } catch (Exception e) {
+ if (transaccion != null && transaccion.isActive()) {
+ transaccion.rollback();
+ }
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_INSERCION);
+ } finally {
+ if (sesion != null) {
+ sesion.close();
+ }
+ }
+
+ }
+
+ @Override
+ public Patrocinador obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/hbm/ProyectoDaoHibernate.java b/src/main/java/es/palomafp/aadd/inm/dao/hbm/ProyectoDaoHibernate.java
new file mode 100644
index 0000000..86de54e
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/hbm/ProyectoDaoHibernate.java
@@ -0,0 +1,68 @@
+package es.palomafp.aadd.inm.dao.hbm;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.query.SelectionQuery;
+
+import es.palomafp.aadd.inm.dao.IProyectoDAO;
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate;
+import es.palomafp.aadd.inm.vo.Proyecto;
+
+/**
+ *
+ * ConceptoDaoHibernate: Clase que implementa el interfaz IOperacionesDAOEntidad
+ *
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 31 oct 2025
+ */
+public class ProyectoDaoHibernate implements IProyectoDAO {
+
+ @Override
+ public void crearEntidad(Proyecto entidad) throws ProyectosIESException {
+ Transaction transaccion = null;
+ Session sesion = null;
+
+ try {
+ sesion = GestorSesionesHibernate.getSession();
+ transaccion = sesion.beginTransaction();
+
+ sesion.persist(entidad);
+
+ transaccion.commit();
+ } catch (Exception e) {
+ if (transaccion != null && transaccion.isActive()) {
+ transaccion.rollback();
+ }
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_INSERCION);
+ } finally {
+ if (sesion != null) {
+ sesion.close();
+ }
+ }
+
+ }
+
+ @Override
+ public Proyecto obtenerProyectoPorNombre(String nombreProyecto) throws ProyectosIESException {
+ Proyecto proyecto = null;
+ String sentenciaHQL = "SELECT p FROM Proyecto p WHERE p.nombre = :nombre";
+
+ // try con recursos "cerrables": Session
+ try (Session sesion = GestorSesionesHibernate.getSession();) {
+ SelectionQuery sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Proyecto.class);
+ sentenciaConsulta.setParameter("nombre", nombreProyecto);
+
+ proyecto = sentenciaConsulta.getSingleResultOrNull();
+ } catch (Exception e) {
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA);
+ }
+ return proyecto;
+ }
+
+ @Override
+ public Proyecto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/jpa/ConceptoDaoJPA.java b/src/main/java/es/palomafp/aadd/inm/dao/jpa/ConceptoDaoJPA.java
new file mode 100644
index 0000000..7e71cf8
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/jpa/ConceptoDaoJPA.java
@@ -0,0 +1,71 @@
+package es.palomafp.aadd.inm.dao.jpa;
+
+import es.palomafp.aadd.inm.dao.IConceptoDAO;
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.gestor.GestorEntityManagerJPA;
+import es.palomafp.aadd.inm.vo.Concepto;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityTransaction;
+import jakarta.persistence.TypedQuery;
+
+/**
+ *
+ * ConceptoDaoJPA: Clase que implementa el interfaz IOperacionesDAOEntidad
+ *
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 31 oct 2025
+ */
+public class ConceptoDaoJPA implements IConceptoDAO {
+ @Override
+ public void crearEntidad(Concepto entidad) throws ProyectosIESException{
+ EntityManager gestorEntidades= null;
+ EntityTransaction transaccion = null;
+
+ try {
+ gestorEntidades = GestorEntityManagerJPA.getEntityManager();
+ transaccion = gestorEntidades.getTransaction();
+ transaccion .begin();
+
+ gestorEntidades.persist(entidad);
+
+ transaccion.commit();
+ } catch (Exception e) {
+ if (transaccion != null && transaccion.isActive()) {
+ transaccion.rollback();
+ }
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_INSERCION);
+ } finally {
+ if (gestorEntidades != null) {
+ gestorEntidades.close();
+ }
+ }
+ }
+
+ @Override
+ public Concepto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Concepto obtenerConceptoPorNombre(String nombreConcepto) throws ProyectosIESException {
+ Concepto concepto = null;
+
+ String sentenciaJPQL = """
+ SELECT p FROM Concepto c
+ WHERE c.nombre= :nombre
+ """;
+
+ // try con recursos "cerrables": Session
+ try (EntityManager entityManager = GestorEntityManagerJPA.getEntityManager();) {
+ TypedQuery query = entityManager.createQuery(sentenciaJPQL, Concepto.class);
+ query.setParameter("nombre", nombreConcepto);
+
+ concepto = query.getSingleResult();
+ } catch (Exception e) {
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA);
+ }
+
+ return concepto;
+ }
+}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/jpa/ContinenteDaoJPA.java b/src/main/java/es/palomafp/aadd/inm/dao/jpa/ContinenteDaoJPA.java
deleted file mode 100644
index 26b99d4..0000000
--- a/src/main/java/es/palomafp/aadd/inm/dao/jpa/ContinenteDaoJPA.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package es.palomafp.aadd.inm.dao.jpa;
-
-import java.util.List;
-
-import es.palomafp.aadd.inm.dao.IContinenteDAO;
-import es.palomafp.aadd.inm.gestor.GestorEntityManagerJPA;
-import es.palomafp.aadd.inm.vo.Patrocinador;
-import jakarta.persistence.EntityManager;
-import jakarta.persistence.EntityTransaction;
-
-/**
- *
- * ContinenteDaoJDBC: Clase que implementa el interfaz IContinenteDAO
- *
- * @author Isidoro Nevares Martín - IES Virgen de la Paloma
- * @date 31 oct 2025
- */
-public class ContinenteDaoJPA implements IContinenteDAO {
-
- @Override
- public Patrocinador obtenerContinentePorID(String codigo) {
- Patrocinador continente = null;
-
- // try con recursos "cerrables": Session
- try (EntityManager gestorEntidades = GestorEntityManagerJPA.getEntityManager()) {
- continente = gestorEntidades.find(Patrocinador.class, codigo);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return continente;
- }
-
- @Override
- public void crearContinente(Patrocinador continente) {
- EntityManager gestorEntidades= null;
- EntityTransaction transaccion = null;
-
- try {
- gestorEntidades = GestorEntityManagerJPA.getEntityManager();
- transaccion = gestorEntidades.getTransaction();
- transaccion .begin();
-
- gestorEntidades.persist(continente);
-
- transaccion.commit();
- } catch (Exception e) {
- if (transaccion != null && transaccion.isActive()) {
- transaccion.rollback();
- }
- e.printStackTrace();
- } finally {
- if (gestorEntidades != null) {
- gestorEntidades.close();
- }
- }
- }
-
- @Override
- public void actualizarContinente(Patrocinador continente) {
- EntityManager gestorEntidades= null;
- EntityTransaction transaccion = null;
-
- try {
- gestorEntidades = GestorEntityManagerJPA.getEntityManager();
- transaccion = gestorEntidades.getTransaction();
- transaccion .begin();
-
- if (!gestorEntidades.contains(continente))
- gestorEntidades.merge(continente);
-
- transaccion.commit();
- } catch (Exception e) {
- if (transaccion != null && transaccion.isActive()) {
- transaccion.rollback();
- }
- e.printStackTrace();
- } finally {
- if (gestorEntidades != null) {
- gestorEntidades.close();
- }
- }
- }
-
- @Override
- public List obtenerListaContientes() {
- // TODO Auto-generated method stub
- return null;
- }
-
-}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/jpa/CursoAcademicoDaoJPA.java b/src/main/java/es/palomafp/aadd/inm/dao/jpa/CursoAcademicoDaoJPA.java
new file mode 100644
index 0000000..7dd0541
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/jpa/CursoAcademicoDaoJPA.java
@@ -0,0 +1,56 @@
+package es.palomafp.aadd.inm.dao.jpa;
+
+import es.palomafp.aadd.inm.dao.IOperacionesDAOEntidad;
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.gestor.GestorEntityManagerJPA;
+import es.palomafp.aadd.inm.vo.CursoAcademico;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityTransaction;
+
+/**
+ *
+ * CursoAcademicoDaoJPA: Clase que implementa el interfaz IOperacionesDAOEntidad
+ *
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 31 oct 2025
+ */
+public class CursoAcademicoDaoJPA implements IOperacionesDAOEntidad{
+ @Override
+ public void crearEntidad(CursoAcademico entidad) throws ProyectosIESException {
+ EntityManager gestorEntidades = null;
+ EntityTransaction transaccion = null;
+
+ try {
+ gestorEntidades = GestorEntityManagerJPA.getEntityManager();
+ transaccion = gestorEntidades.getTransaction();
+ transaccion.begin();
+
+ gestorEntidades.persist(entidad);
+
+ transaccion.commit();
+ } catch (Exception e) {
+ if (transaccion != null && transaccion.isActive()) {
+ transaccion.rollback();
+ }
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_INSERCION);
+ } finally {
+ if (gestorEntidades != null) {
+ gestorEntidades.close();
+ }
+ }
+ }
+
+
+ @Override
+ public CursoAcademico obtenerEntidadPorID(String clave) throws ProyectosIESException {
+ CursoAcademico cursoAcademico = null;
+
+ // try con recursos "cerrables": Session
+ try (EntityManager entityManager = GestorEntityManagerJPA.getEntityManager();) {
+ cursoAcademico = entityManager.find(CursoAcademico.class, clave);
+ } catch (Exception e) {
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA);
+ }
+ return cursoAcademico;
+ }
+}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/jpa/CursoProyectoDaoJPA.java b/src/main/java/es/palomafp/aadd/inm/dao/jpa/CursoProyectoDaoJPA.java
new file mode 100644
index 0000000..cebddba
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/jpa/CursoProyectoDaoJPA.java
@@ -0,0 +1,73 @@
+package es.palomafp.aadd.inm.dao.jpa;
+
+import es.palomafp.aadd.inm.dao.ICursoProyectoDAO;
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.gestor.GestorEntityManagerJPA;
+import es.palomafp.aadd.inm.vo.CursoProyecto;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityTransaction;
+import jakarta.persistence.TypedQuery;
+
+/**
+ *
+ * CursoProyectoDaoJPA: Clase que implementa el interfaz IOperacionesDAOEntidad
+ *
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 31 oct 2025
+ */
+public class CursoProyectoDaoJPA implements ICursoProyectoDAO {
+ @Override
+ public void crearEntidad(CursoProyecto entidad) throws ProyectosIESException {
+ EntityManager gestorEntidades = null;
+ EntityTransaction transaccion = null;
+
+ try {
+ gestorEntidades = GestorEntityManagerJPA.getEntityManager();
+ transaccion = gestorEntidades.getTransaction();
+ transaccion.begin();
+
+ gestorEntidades.persist(entidad);
+
+ transaccion.commit();
+ } catch (Exception e) {
+ if (transaccion != null && transaccion.isActive()) {
+ transaccion.rollback();
+ }
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_INSERCION);
+ } finally {
+ if (gestorEntidades != null) {
+ gestorEntidades.close();
+ }
+ }
+ }
+
+ @Override
+ public CursoProyecto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
+ return null;
+ }
+
+ @Override
+ public CursoProyecto obtenerCursoProyectoPorCursoYProyecto(String codigoCursoAcademico, Integer idProyecto)
+ throws ProyectosIESException {
+ CursoProyecto cursoProyecto = null;
+
+ String sentenciaJPQL = """
+ SELECT cp FROM CursoProyecto cp
+ WHERE cp.proyecto.identificador = :idProyecto
+ AND cp.cursoAcademico.codigo = :codigoCurso
+ """;
+
+ // try con recursos "cerrables": Session
+ try (EntityManager entityManager = GestorEntityManagerJPA.getEntityManager();) {
+ TypedQuery query = entityManager.createQuery(sentenciaJPQL, CursoProyecto.class);
+
+ query.setParameter("idProyecto", idProyecto);
+ query.setParameter("codigoCurso", codigoCursoAcademico);
+
+ cursoProyecto = query.getSingleResult();
+ } catch (Exception e) {
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA);
+ }
+ return cursoProyecto;
+ }
+}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/jpa/PaisDaoJPA.java b/src/main/java/es/palomafp/aadd/inm/dao/jpa/PaisDaoJPA.java
deleted file mode 100644
index 25108f6..0000000
--- a/src/main/java/es/palomafp/aadd/inm/dao/jpa/PaisDaoJPA.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package es.palomafp.aadd.inm.dao.jpa;
-
-import java.util.List;
-
-import es.palomafp.aadd.inm.dao.IPaisDAO;
-import es.palomafp.aadd.inm.gestor.GestorEntityManagerJPA;
-import es.palomafp.aadd.inm.vo.Gasto;
-import jakarta.persistence.EntityManager;
-import jakarta.persistence.EntityTransaction;
-
-/**
- *
- * PaisDaoJPA: Clase que implementa el interfaz IPaisDAO
- *
- * @author Isidoro Nevares Martín - IES Virgen de la Paloma
- * @date 31 oct 2025
- */
-public class PaisDaoJPA implements IPaisDAO {
-
- @Override
- public Gasto obtenerPaisPorID(int identificador) {
- Gasto pais = null;
-
- // try con recursos "cerrables": Session
- try (EntityManager gestorEntidades = GestorEntityManagerJPA.getEntityManager()) {
- pais = gestorEntidades.find(Gasto.class, identificador);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return pais;
-
- }
-
-
- @Override
- public void crearPais(Gasto pais) {
- EntityManager gestorEntidades = null;
- EntityTransaction transaccion = null;
-
- try {
- gestorEntidades = GestorEntityManagerJPA.getEntityManager();
- transaccion = gestorEntidades.getTransaction();
- transaccion.begin();
-
- gestorEntidades.persist(pais);
-
- transaccion.commit();
- } catch (Exception e) {
- if (transaccion != null && transaccion.isActive()) {
- transaccion.rollback();
- }
- e.printStackTrace();
- } finally {
- if (gestorEntidades != null) {
- gestorEntidades.close();
- }
- }
-
- }
-
- @Override
- public void actualizarPais(Gasto pais) {
- EntityManager gestorEntidades = null;
- EntityTransaction transaccion = null;
-
- try {
- gestorEntidades = GestorEntityManagerJPA.getEntityManager();
- transaccion = gestorEntidades.getTransaction();
- transaccion.begin();
-
- if (!gestorEntidades.contains(pais))
- gestorEntidades.merge(pais);
-
- transaccion.commit();
- } catch (Exception e) {
- if (transaccion != null && transaccion.isActive()) {
- transaccion.rollback();
- }
- e.printStackTrace();
- } finally {
- if (gestorEntidades != null) {
- gestorEntidades.close();
- }
- }
- }
-
- @Override
- public List obtenerListaPaises() {
- // TODO Auto-generated method stub
- return null;
- }
-
-
- @Override
- public Gasto obtenerPaisPorNombre(String nombre) {
- // TODO Auto-generated method stub
- return null;
- }
-
-}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/jpa/PatrocinadorDaoJPA.java b/src/main/java/es/palomafp/aadd/inm/dao/jpa/PatrocinadorDaoJPA.java
new file mode 100644
index 0000000..bda2a17
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/jpa/PatrocinadorDaoJPA.java
@@ -0,0 +1,48 @@
+package es.palomafp.aadd.inm.dao.jpa;
+
+import es.palomafp.aadd.inm.dao.IOperacionesDAOEntidad;
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.gestor.GestorEntityManagerJPA;
+import es.palomafp.aadd.inm.vo.Patrocinador;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityTransaction;
+
+/**
+ *
+ * PatrocinadorDaoJPA: Clase que implementa el interfaz IOperacionesDAOEntidad
+ *
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 31 oct 2025
+ */
+public class PatrocinadorDaoJPA implements IOperacionesDAOEntidad {
+ @Override
+ public void crearEntidad(Patrocinador entidad) throws ProyectosIESException{
+ EntityManager gestorEntidades= null;
+ EntityTransaction transaccion = null;
+
+ try {
+ gestorEntidades = GestorEntityManagerJPA.getEntityManager();
+ transaccion = gestorEntidades.getTransaction();
+ transaccion .begin();
+
+ gestorEntidades.persist(entidad);
+
+ transaccion.commit();
+ } catch (Exception e) {
+ if (transaccion != null && transaccion.isActive()) {
+ transaccion.rollback();
+ }
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_INSERCION);
+ } finally {
+ if (gestorEntidades != null) {
+ gestorEntidades.close();
+ }
+ }
+ }
+
+ @Override
+ public Patrocinador obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
diff --git a/src/main/java/es/palomafp/aadd/inm/dao/jpa/ProyectoDaoJPA.java b/src/main/java/es/palomafp/aadd/inm/dao/jpa/ProyectoDaoJPA.java
new file mode 100644
index 0000000..d85ec07
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/dao/jpa/ProyectoDaoJPA.java
@@ -0,0 +1,71 @@
+package es.palomafp.aadd.inm.dao.jpa;
+
+import es.palomafp.aadd.inm.dao.IProyectoDAO;
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.gestor.GestorEntityManagerJPA;
+import es.palomafp.aadd.inm.vo.Proyecto;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityTransaction;
+import jakarta.persistence.TypedQuery;
+
+/**
+ *
+ * ConceptoDaoJPA: Clase que implementa el interfaz IOperacionesDAOEntidad
+ *
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 31 oct 2025
+ */
+public class ProyectoDaoJPA implements IProyectoDAO {
+ @Override
+ public void crearEntidad(Proyecto entidad) throws ProyectosIESException{
+ EntityManager gestorEntidades= null;
+ EntityTransaction transaccion = null;
+
+ try {
+ gestorEntidades = GestorEntityManagerJPA.getEntityManager();
+ transaccion = gestorEntidades.getTransaction();
+ transaccion .begin();
+
+ gestorEntidades.persist(entidad);
+
+ transaccion.commit();
+ } catch (Exception e) {
+ if (transaccion != null && transaccion.isActive()) {
+ transaccion.rollback();
+ }
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_INSERCION);
+ } finally {
+ if (gestorEntidades != null) {
+ gestorEntidades.close();
+ }
+ }
+ }
+
+ @Override
+ public Proyecto obtenerProyectoPorNombre(String nombreProyecto) throws ProyectosIESException {
+ Proyecto proyecto = null;
+
+ String sentenciaJPQL = """
+ SELECT p FROM Proyecto p
+ WHERE p.nombre= :nombre
+ """;
+
+ // try con recursos "cerrables": Session
+ try (EntityManager entityManager = GestorEntityManagerJPA.getEntityManager();) {
+ TypedQuery query = entityManager.createQuery(sentenciaJPQL, Proyecto.class);
+ query.setParameter("nombre", nombreProyecto);
+
+ proyecto = query.getSingleResult();
+ } catch (Exception e) {
+ throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA);
+ }
+
+ return proyecto;
+ }
+
+ @Override
+ public Proyecto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
diff --git a/src/main/java/es/palomafp/aadd/inm/excepcion/ProyectosIESException.java b/src/main/java/es/palomafp/aadd/inm/excepcion/ProyectosIESException.java
new file mode 100644
index 0000000..ade98be
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/excepcion/ProyectosIESException.java
@@ -0,0 +1,57 @@
+package es.palomafp.aadd.inm.excepcion;
+
+/**
+ *
+ * ProyectosIESException: Clase que realiza ....
+ * @author Isidoro Nevares Martín - IES Virgen de la Paloma
+ * @date 20 ene 2026
+ *
+ *
+ */
+
+public class ProyectosIESException extends Exception {
+ /**
+ *
+ */
+ private static final long serialVersionUID = -7090518753638026268L;
+
+ private int codigoError;
+ private Class> claseOrigen;
+
+ public static final int ERROR_GENERAL=0;
+ public static final int ERROR_GESTION_CONEXION=1;
+ public static final int ERROR_CONSULTA=2;
+ public static final int ERROR_INSERCION=3;
+ public static final int ERROR_ACTUALIZACION=4;
+ public static final int ERROR_BORRADO=5;
+ /**
+ *
+ */
+ public ProyectosIESException() {
+ super();
+ }
+ /**
+ *
+ */
+ public ProyectosIESException(Exception e, Class> clase, int codError) {
+ super(e);
+ claseOrigen=clase;
+ codigoError=codError;
+ }
+
+
+ public Class> getClaseOrigen() {
+ return claseOrigen;
+ }
+ public void setClaseOrigen(Class> claseOrigen) {
+ this.claseOrigen = claseOrigen;
+ }
+ public int getCodigoError() {
+ return codigoError;
+ }
+ public void setCodigoError(int codigoError) {
+ this.codigoError = codigoError;
+ }
+
+}
+
diff --git a/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroCSV.java b/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroCSV.java
new file mode 100644
index 0000000..f8023e9
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroCSV.java
@@ -0,0 +1,38 @@
+package es.palomafp.aadd.inm.procesador;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion;
+
+public class ProcesadorFicheroCSV {
+
+ public void procesarFicheroCSVIngresos() {
+
+ String rutaFichero = GestorFicheroConfiguracion.getValorfromClave("ingresos.fichero.csv.ruta");
+ File fichero = new File(rutaFichero);
+
+ try (BufferedReader lector = new BufferedReader(new FileReader(fichero));) {
+ String linea;
+
+ lector.readLine(); // Saltar la cabecera
+
+ while ((linea = lector.readLine()) != null) {
+ System.out.println("linea:" + linea);
+ // Procesar la línea leída
+ String[] campos = linea.split(",");
+ // Suponiendo que el CSV tiene dos columnas: id, ingreso
+ String id = campos[0];
+ String ingreso = campos[1];
+ // Aquí iría la lógica para procesar cada línea
+ }
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+
+}
diff --git a/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroJSON.java b/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroJSON.java
new file mode 100644
index 0000000..1fe7695
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroJSON.java
@@ -0,0 +1,105 @@
+package es.palomafp.aadd.inm.procesador;
+
+import java.io.File;
+import java.time.LocalDate;
+
+import es.palomafp.aadd.inm.dao.IConceptoDAO;
+import es.palomafp.aadd.inm.dao.ICursoProyectoDAO;
+import es.palomafp.aadd.inm.dao.IOperacionesDAOEntidad;
+import es.palomafp.aadd.inm.dao.IProyectoDAO;
+import es.palomafp.aadd.inm.dao.hbm.ConceptoDaoHibernate;
+import es.palomafp.aadd.inm.dao.hbm.CursoProyectoDaoHibernate;
+import es.palomafp.aadd.inm.dao.hbm.ProyectoDaoHibernate;
+import es.palomafp.aadd.inm.dao.jpa.CursoProyectoDaoJPA;
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion;
+import es.palomafp.aadd.inm.vo.Concepto;
+import es.palomafp.aadd.inm.vo.CursoAcademico;
+import es.palomafp.aadd.inm.vo.CursoProyecto;
+import es.palomafp.aadd.inm.vo.Gasto;
+import es.palomafp.aadd.inm.vo.Proyecto;
+import tools.jackson.databind.JsonNode;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.databind.node.ArrayNode;
+
+public class ProcesadorFicheroJSON {
+
+
+ public void procesarFicheroJSONGastos() throws ProyectosIESException {
+ String rutaFichero = GestorFicheroConfiguracion.getValorfromClave("gastos.fichero.json.ruta");
+ File fichero = new File(rutaFichero);
+
+ // Se asume que la información de Paises es correcta y ya existe en la BD
+ ObjectMapper mapper = new ObjectMapper();
+ JsonNode root = mapper.readTree(fichero);
+
+ String codigoCurso= root.get("curso").asString();
+ String nombreProyecto = root.get("proyecto").asString();
+
+ CursoAcademico cursoAcademico = new CursoAcademico();
+ cursoAcademico.setCodigo(codigoCurso);
+ IProyectoDAO proyectoDAO = new ProyectoDaoHibernate();
+ Proyecto proyecto = proyectoDAO.obtenerProyectoPorNombre(nombreProyecto);
+
+ CursoProyecto cursoProyecto = new CursoProyecto();
+ cursoProyecto.setCursoAcademico(cursoAcademico);
+ cursoProyecto.setProyecto(proyecto);
+
+ // Inserción en PostgreSQL con Hibernate
+ ICursoProyectoDAO operacionesDAOCursoProyecto = new CursoProyectoDaoHibernate();
+ operacionesDAOCursoProyecto.crearEntidad(cursoProyecto);
+ // Inserción en ObjectDB con JPA
+ operacionesDAOCursoProyecto = new CursoProyectoDaoJPA();
+ operacionesDAOCursoProyecto.crearEntidad(cursoProyecto);
+
+ // Se obtiene el CursoProyecto ya persistido
+ cursoProyecto = operacionesDAOCursoProyecto.obtenerCursoProyectoPorCursoYProyecto(codigoCurso, proyecto.getIdentificador());
+
+ JsonNode nodoGastos= root.get("gastos");
+ // Se obtienen los nodos Gasto
+ ArrayNode nodosGasto= convertirJsonNodeEnArrayNode(nodoGastos.get("gasto"));
+
+ for (JsonNode gastoNode : nodosGasto) {
+ String nombreConcepto=gastoNode.get("concepto").asString();
+ double precioUnitario = gastoNode.get("precio_unitario").asDouble();
+ int unidades = gastoNode.get("unidades").asInt();
+ String sFecha = gastoNode.get("fecha").asString();
+ LocalDate fecha = LocalDate.parse(sFecha);
+
+ Gasto gasto = new Gasto();
+ gasto.setFecha(fecha);
+ gasto.setNumeroUnidades(unidades);
+ gasto.setPrecioUnidad(precioUnitario);
+
+ IConceptoDAO conceptoDAO = new ConceptoDaoHibernate();
+ Concepto concepto=conceptoDAO.obtenerConceptoPorNombre(nombreConcepto)
+ gasto.setConcepto(concepto);
+
+
+ // Inserción en PostgreSQL con Hibernate
+ IOperacionesDAOEntidad operacionesDAOGasto = new GastoDaoHibernate();
+ operacionesDAOGasto.crearEntidad(gasto);
+ // Inserción en ObjectDB con JPA
+ operacionesDAOGasto = new GastoDaoJPA();
+ operacionesDAOGasto.crearEntidad(gasto);
+ }
+
+
+ System.out.println("nodoGastos:" + nodoGastos);
+
+ }
+
+ private ArrayNode convertirJsonNodeEnArrayNode(JsonNode node) {
+ ObjectMapper mapper = new ObjectMapper();
+ if (node.isArray()) {
+ return (ArrayNode) node;
+ } else {
+ ArrayNode arrayNode = mapper.createArrayNode();
+ if (!node.isMissingNode()) {
+ arrayNode.add(node);
+ }
+ return arrayNode;
+ }
+ }
+
+}
diff --git a/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroXML.java b/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroXML.java
new file mode 100644
index 0000000..be01d7f
--- /dev/null
+++ b/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroXML.java
@@ -0,0 +1,153 @@
+package es.palomafp.aadd.inm.procesador;
+
+import java.io.File;
+import java.time.LocalDate;
+
+import es.palomafp.aadd.inm.dao.IOperacionesDAOEntidad;
+import es.palomafp.aadd.inm.dao.hbm.ConceptoDaoHibernate;
+import es.palomafp.aadd.inm.dao.hbm.CursoAcademicoDaoHibernate;
+import es.palomafp.aadd.inm.dao.hbm.PatrocinadorDaoHibernate;
+import es.palomafp.aadd.inm.dao.hbm.ProyectoDaoHibernate;
+import es.palomafp.aadd.inm.dao.jpa.ConceptoDaoJPA;
+import es.palomafp.aadd.inm.dao.jpa.CursoAcademicoDaoJPA;
+import es.palomafp.aadd.inm.dao.jpa.PatrocinadorDaoJPA;
+import es.palomafp.aadd.inm.dao.jpa.ProyectoDaoJPA;
+import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
+import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion;
+import es.palomafp.aadd.inm.vo.Concepto;
+import es.palomafp.aadd.inm.vo.CursoAcademico;
+import es.palomafp.aadd.inm.vo.Patrocinador;
+import es.palomafp.aadd.inm.vo.Proyecto;
+import tools.jackson.databind.JsonNode;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.databind.node.ArrayNode;
+import tools.jackson.dataformat.xml.XmlMapper;
+
+public class ProcesadorFicheroXML {
+
+ public void procesarFicheroXMLCatalogos() throws ProyectosIESException {
+ String rutaFichero = GestorFicheroConfiguracion.getValorfromClave("catalogos.fichero.xml.ruta");
+ File fichero = new File(rutaFichero);
+
+ // Procesar con Jackson XML
+ ObjectMapper mapper = new XmlMapper();
+ JsonNode root = mapper.readTree(fichero);
+
+ // procesar nodos Curso
+ JsonNode nodoCursos = root.get("Cursos");
+ procesarCursos(nodoCursos);
+
+ // procesar nodos Proyectos
+ JsonNode nodoProyectos = root.get("Proyectos");
+ procesarProyectos(nodoProyectos);
+
+ // procesar nodos Conceptos
+ JsonNode nodoConceptos = root.get("Conceptos");
+ procesarConceptos(nodoConceptos);
+
+ // procesar nodos Patrocinadores
+ JsonNode nodoPatrocinadores = root.get("Patrocinadores");
+ procesarPatrocinadores(nodoPatrocinadores);
+
+ }
+
+ private void procesarCursos(JsonNode nodoCursos) throws ProyectosIESException {
+ // Se obtienen los nodos Curso
+ ArrayNode nodosCurso = convertirJsonNodeEnArrayNode(nodoCursos.get("Curso"));
+ for (JsonNode nodoCurso : nodosCurso) {
+ String codigo = nodoCurso.get("Codigo").asString();
+ String nombre = nodoCurso.get("Nombre").asString();
+ String sFechaInicio = nodoCurso.get("Fechas").get("FechaInicio").asString();
+ LocalDate fechaInicio = LocalDate.parse(sFechaInicio);
+ String sFechaFin = nodoCurso.get("Fechas").get("FechaFin").asString();
+ LocalDate fechaFin = LocalDate.parse(sFechaFin);
+
+ CursoAcademico curso = new CursoAcademico();
+ curso.setCodigo(codigo);
+ curso.setNombre(nombre);
+ curso.setFechaInicio(fechaInicio);
+ curso.setFechaFin(fechaFin);
+
+ // Inserción en PostgreSQL con Hibernate
+ IOperacionesDAOEntidad operacionesDAOCursoAcademico = new CursoAcademicoDaoHibernate();
+ operacionesDAOCursoAcademico.crearEntidad(curso);
+ // Inserción en ObjectDB con JPA
+ operacionesDAOCursoAcademico = new CursoAcademicoDaoJPA();
+ operacionesDAOCursoAcademico.crearEntidad(curso);
+ }
+ }
+
+ private void procesarProyectos(JsonNode nodoProyectos) throws ProyectosIESException {
+ // Se obtienen los nodos Proyecto
+ ArrayNode nodosProyecto = convertirJsonNodeEnArrayNode(nodoProyectos.get("Proyecto"));
+ for (JsonNode proyectoNode : nodosProyecto) {
+ JsonNode nodoInfoProyecto = proyectoNode.get("Informacion_descriptiva");
+ String nombre = nodoInfoProyecto.get("Nombre").asString();
+ String descripcion = nodoInfoProyecto.get("Descripcion").asString();
+ String urlImagenLogo = nodoInfoProyecto.get("url_imagen_logo").asString();
+
+ Proyecto proyecto = new Proyecto();
+ proyecto.setNombre(nombre);
+ proyecto.setDescripcion(descripcion);
+ proyecto.setUrlLogo(urlImagenLogo);
+
+ // Inserción en PostgreSQL con Hibernate
+ IOperacionesDAOEntidad operacionesDAOProyecto = new ProyectoDaoHibernate();
+ operacionesDAOProyecto.crearEntidad(proyecto);
+ // Inserción en ObjectDB con JPA
+ operacionesDAOProyecto = new ProyectoDaoJPA();
+ operacionesDAOProyecto.crearEntidad(proyecto);
+ }
+ }
+
+ private void procesarConceptos(JsonNode nodoConceptos) throws ProyectosIESException {
+ // Se obtienen los nodos Concepto
+ ArrayNode nodosConcepto = convertirJsonNodeEnArrayNode(nodoConceptos.get("Concepto"));
+ for (JsonNode conceptoNode : nodosConcepto) {
+ String nombre = conceptoNode.get("Nombre").asString();
+ String descripcion = conceptoNode.get("Descripcion").asString();
+
+ Concepto concepto = new Concepto();
+ concepto.setNombre(nombre);
+ concepto.setDescripcion(descripcion);
+
+ // Inserción en PostgreSQL con Hibernate
+ IOperacionesDAOEntidad operacionesDAOConcepto = new ConceptoDaoHibernate();
+ operacionesDAOConcepto.crearEntidad(concepto);
+ // Inserción en ObjectDB con JPA
+ operacionesDAOConcepto = new ConceptoDaoJPA();
+ operacionesDAOConcepto.crearEntidad(concepto);
+ }
+ }
+
+ private void procesarPatrocinadores(JsonNode nodoPatrocinadores) throws ProyectosIESException {
+ // Se obtienen los nodos Patrocinador
+ ArrayNode nodosPatrocinador = convertirJsonNodeEnArrayNode(nodoPatrocinadores.get("Patrocinador"));
+ for (JsonNode patrocinadorNode : nodosPatrocinador) {
+ String nombre = patrocinadorNode.get("Nombre").asString();
+
+ Patrocinador patrocinador = new Patrocinador();
+ patrocinador.setNombre(nombre);
+
+ // Inserción en PostgreSQL con Hibernate
+ IOperacionesDAOEntidad operacionesDAOPatrocinador = new PatrocinadorDaoHibernate();
+ operacionesDAOPatrocinador.crearEntidad(patrocinador);
+ // Inserción en ObjectDB con JPA
+ operacionesDAOPatrocinador = new PatrocinadorDaoJPA();
+ operacionesDAOPatrocinador.crearEntidad(patrocinador);
+ }
+ }
+
+ private ArrayNode convertirJsonNodeEnArrayNode(JsonNode node) {
+ ObjectMapper mapper = new ObjectMapper();
+ if (node.isArray()) {
+ return (ArrayNode) node;
+ } else {
+ ArrayNode arrayNode = mapper.createArrayNode();
+ if (!node.isMissingNode()) {
+ arrayNode.add(node);
+ }
+ return arrayNode;
+ }
+ }
+}
diff --git a/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheros.java b/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheros.java
deleted file mode 100644
index 1b72c58..0000000
--- a/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheros.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package es.palomafp.aadd.inm.procesador;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-
-import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion;
-import tools.jackson.databind.JsonNode;
-import tools.jackson.databind.ObjectMapper;
-
-public class ProcesadorFicheros {
-
- public void procesarFicheroXMLCatalogos() {
- String rutaFichero = GestorFicheroConfiguracion.getValorfromClave("catalogos.fichero.xml.ruta");
- File fichero = new File(rutaFichero);
-
- // Se asume que la información de Paises es correcta y ya existe en la BD
- ObjectMapper mapper = new ObjectMapper();
- JsonNode root = mapper.readTree(fichero);
- JsonNode nodoPeliculas = root.get("peliculas");
-
- }
-
- public void procesarFicheroJSONGastos() {
- String rutaFichero = GestorFicheroConfiguracion.getValorfromClave("gastos.fichero.json.ruta");
- File fichero = new File(rutaFichero);
-
- // Se asume que la información de Paises es correcta y ya existe en la BD
- ObjectMapper mapper = new ObjectMapper();
- JsonNode root = mapper.readTree(fichero);
- JsonNode nodoPeliculas = root.get("peliculas");
-
- }
-
- public void procesarFicheroCSVIngresos() {
-
- String rutaFichero = GestorFicheroConfiguracion.getValorfromClave("ingresos.fichero.csv.ruta");
- File fichero = new File(rutaFichero);
-
- try (BufferedReader lector = new BufferedReader(new FileReader(fichero));) {
- String linea;
- while ((linea = lector.readLine()) != null) {
- // Procesar la línea leída
- String[] campos = linea.split(",");
- // Suponiendo que el CSV tiene dos columnas: id, ingreso
- String id = campos[0];
- String ingreso = campos[1];
- // Aquí iría la lógica para procesar cada línea
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- }
-
-}
diff --git a/src/main/java/es/palomafp/aadd/inm/vo/Concepto.java b/src/main/java/es/palomafp/aadd/inm/vo/Concepto.java
index 077bd88..0f93825 100644
--- a/src/main/java/es/palomafp/aadd/inm/vo/Concepto.java
+++ b/src/main/java/es/palomafp/aadd/inm/vo/Concepto.java
@@ -6,6 +6,7 @@ import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
+import lombok.Data;
/**
*
@@ -17,6 +18,7 @@ import jakarta.persistence.Table;
*
*/
+@Data
@Entity
@Table(name = "T_CONCEPTO")
public class Concepto {
diff --git a/src/main/java/es/palomafp/aadd/inm/vo/CursoAcademico.java b/src/main/java/es/palomafp/aadd/inm/vo/CursoAcademico.java
index dd2aff5..59f121f 100644
--- a/src/main/java/es/palomafp/aadd/inm/vo/CursoAcademico.java
+++ b/src/main/java/es/palomafp/aadd/inm/vo/CursoAcademico.java
@@ -6,6 +6,7 @@ import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
+import lombok.Data;
/**
*
@@ -16,6 +17,7 @@ import jakarta.persistence.Table;
*
*/
+@Data
@Entity
@Table(name="T_CURSO_ACADEMICO")
public class CursoAcademico {
diff --git a/src/main/java/es/palomafp/aadd/inm/vo/CursoProyecto.java b/src/main/java/es/palomafp/aadd/inm/vo/CursoProyecto.java
index f1f8ae9..7b6c94c 100644
--- a/src/main/java/es/palomafp/aadd/inm/vo/CursoProyecto.java
+++ b/src/main/java/es/palomafp/aadd/inm/vo/CursoProyecto.java
@@ -7,6 +7,7 @@ import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
+import lombok.Data;
/**
*
@@ -18,6 +19,7 @@ import jakarta.persistence.Table;
*
*/
+@Data
@Entity
@Table(name = "T_CURSO_PROYECTO")
public class CursoProyecto {
diff --git a/src/main/java/es/palomafp/aadd/inm/vo/Gasto.java b/src/main/java/es/palomafp/aadd/inm/vo/Gasto.java
index 8e33c24..b859e33 100644
--- a/src/main/java/es/palomafp/aadd/inm/vo/Gasto.java
+++ b/src/main/java/es/palomafp/aadd/inm/vo/Gasto.java
@@ -11,6 +11,7 @@ import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
+import lombok.Data;
/**
*
@@ -21,6 +22,7 @@ import jakarta.persistence.Table;
*
*/
+@Data
@Entity
@Table(name="T_GASTO")
public class Gasto {
diff --git a/src/main/java/es/palomafp/aadd/inm/vo/Ingreso.java b/src/main/java/es/palomafp/aadd/inm/vo/Ingreso.java
index cff508d..d4e773c 100644
--- a/src/main/java/es/palomafp/aadd/inm/vo/Ingreso.java
+++ b/src/main/java/es/palomafp/aadd/inm/vo/Ingreso.java
@@ -11,6 +11,7 @@ import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
+import lombok.Data;
/**
*
@@ -21,6 +22,7 @@ import jakarta.persistence.Table;
*
*/
+@Data
@Entity
@Table(name="T_INGRESO")
public class Ingreso {
diff --git a/src/main/java/es/palomafp/aadd/inm/vo/Patrocinador.java b/src/main/java/es/palomafp/aadd/inm/vo/Patrocinador.java
index 4870cf9..25cecbc 100644
--- a/src/main/java/es/palomafp/aadd/inm/vo/Patrocinador.java
+++ b/src/main/java/es/palomafp/aadd/inm/vo/Patrocinador.java
@@ -7,6 +7,7 @@ import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Lob;
import jakarta.persistence.Table;
+import lombok.Data;
/**
*
@@ -17,6 +18,7 @@ import jakarta.persistence.Table;
*
*/
+@Data
@Entity
@Table(name="T_PATROCINADOR")
public class Patrocinador {
diff --git a/src/main/java/es/palomafp/aadd/inm/vo/Proyecto.java b/src/main/java/es/palomafp/aadd/inm/vo/Proyecto.java
index af98298..1f52cce 100644
--- a/src/main/java/es/palomafp/aadd/inm/vo/Proyecto.java
+++ b/src/main/java/es/palomafp/aadd/inm/vo/Proyecto.java
@@ -6,6 +6,7 @@ import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
+import lombok.Data;
/**
*
@@ -16,6 +17,7 @@ import jakarta.persistence.Table;
*
*/
+@Data
@Entity
@Table(name="T_PROYECTO")
public class Proyecto {
diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml
index 2d946fa..9c4e4fc 100644
--- a/src/main/resources/hibernate.cfg.xml
+++ b/src/main/resources/hibernate.cfg.xml
@@ -13,7 +13,7 @@
postgresql_123
- create-drop
+ none
true
true