From 2ea9bc7d8d0fce621f66af7eb47144cb00a37c9d Mon Sep 17 00:00:00 2001 From: Isidoro Nevares Date: Wed, 21 Jan 2026 19:22:44 +0100 Subject: [PATCH] =?UTF-8?q?Centralizaci=C3=B3n=20en=20ProyectosIESService?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../es/palomafp/aadd/inm/AppProyectosIES.java | 8 +- .../aadd/inm/dao/IOperacionesDAOEntidad.java | 2 + .../inm/dao/hbm/ConceptoDaoHibernate.java | 47 +++- .../dao/hbm/CursoAcademicoDaoHibernate.java | 35 ++- .../dao/hbm/CursoProyectoDaoHibernate.java | 64 +++-- .../aadd/inm/dao/hbm/GastoDaoHibernate.java | 40 ++- .../aadd/inm/dao/hbm/IngresoDaoHibernate.java | 46 ++-- .../inm/dao/hbm/PatrocinadorDaoHibernate.java | 56 ++++- .../inm/dao/hbm/ProyectoDaoHibernate.java | 32 +++ .../aadd/inm/dao/jpa/ConceptoDaoJPA.java | 57 ++++- .../inm/dao/jpa/CursoAcademicoDaoJPA.java | 38 ++- .../aadd/inm/dao/jpa/CursoProyectoDaoJPA.java | 42 +++- .../aadd/inm/dao/jpa/GastoDaoJPA.java | 48 ++-- .../aadd/inm/dao/jpa/IngresoDaoJPA.java | 83 ++++++ .../aadd/inm/dao/jpa/PatrocinadorDaoJPA.java | 66 ++++- .../aadd/inm/dao/jpa/ProyectoDaoJPA.java | 39 ++- .../inm/procesador/ProcesadorFicheroCSV.java | 150 ++--------- .../inm/procesador/ProcesadorFicheroJSON.java | 62 ++--- .../inm/procesador/ProcesadorFicheroXML.java | 62 ++--- .../aadd/inm/service/ProyectosIESService.java | 236 ++++++++++++++++++ src/main/resources/hibernate.cfg.xml | 4 +- 21 files changed, 908 insertions(+), 309 deletions(-) create mode 100644 src/main/java/es/palomafp/aadd/inm/dao/jpa/IngresoDaoJPA.java create mode 100644 src/main/java/es/palomafp/aadd/inm/service/ProyectosIESService.java diff --git a/src/main/java/es/palomafp/aadd/inm/AppProyectosIES.java b/src/main/java/es/palomafp/aadd/inm/AppProyectosIES.java index 2dadc07..7c97f00 100644 --- a/src/main/java/es/palomafp/aadd/inm/AppProyectosIES.java +++ b/src/main/java/es/palomafp/aadd/inm/AppProyectosIES.java @@ -30,7 +30,7 @@ public class AppProyectosIES { */ // Generar la estructura de la base de datos en PostgreSQL - // GestorSesionesHibernate.getSession(); + GestorSesionesHibernate.getSession(); try { app.procesarFicheros(); @@ -65,14 +65,14 @@ public class AppProyectosIES { private void procesarFicheros() throws ProyectosIESException { // Procesar datos de catálogos ProcesadorFicheroXML procesadorFicheroXML = new ProcesadorFicheroXML(); - // procesadorFicheroXML.procesarFicheroXMLCatalogos(); + procesadorFicheroXML.procesarFicheroXMLCatalogos(); // Procesar datos de Gastos ProcesadorFicheroJSON procesadorFicheroJSON = new ProcesadorFicheroJSON(); - // procesadorFicheroJSON.procesarFicheroJSONGastos(); + procesadorFicheroJSON.procesarFicheroJSONGastos(); // Procesar datos de Ingresos ProcesadorFicheroCSV procesadorFicheroCSV = new ProcesadorFicheroCSV(); - procesadorFicheroCSV.procesarFicheroCSVIngresos(); + // procesadorFicheroCSV.procesarFicheroCSVIngresos(); } } \ No newline at end of file diff --git a/src/main/java/es/palomafp/aadd/inm/dao/IOperacionesDAOEntidad.java b/src/main/java/es/palomafp/aadd/inm/dao/IOperacionesDAOEntidad.java index 5f3c202..1041c3b 100644 --- a/src/main/java/es/palomafp/aadd/inm/dao/IOperacionesDAOEntidad.java +++ b/src/main/java/es/palomafp/aadd/inm/dao/IOperacionesDAOEntidad.java @@ -13,6 +13,8 @@ import es.palomafp.aadd.inm.excepcion.ProyectosIESException; public interface IOperacionesDAOEntidad { T obtenerEntidadPorID(ID clave) throws ProyectosIESException; + void borrarEntidad(ID clave) throws ProyectosIESException; + void actualizarEntidad(T entidad) throws ProyectosIESException; void crearEntidad(T entidad) 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 index ee0ac89..6705c3d 100644 --- a/src/main/java/es/palomafp/aadd/inm/dao/hbm/ConceptoDaoHibernate.java +++ b/src/main/java/es/palomafp/aadd/inm/dao/hbm/ConceptoDaoHibernate.java @@ -11,7 +11,7 @@ import es.palomafp.aadd.inm.vo.Concepto; /** * - * ConceptoDaoHibernate: Clase que implementa el interfaz IOperacionesDAOEntidad + * ConceptoDaoHibernate: Clase que implementa el interfaz IConceptoDAO * * @author Isidoro Nevares Martín - IES Virgen de la Paloma * @date 31 oct 2025 @@ -43,12 +43,6 @@ public class ConceptoDaoHibernate implements IConceptoDAO{ } - @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; @@ -65,4 +59,43 @@ public class ConceptoDaoHibernate implements IConceptoDAO{ } return concepto; } + + @Override + public void actualizarEntidad(Concepto entidad) throws ProyectosIESException { + Transaction transaccion = null; + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); + transaccion = sesion.beginTransaction(); + + if(sesion.contains(entidad)) + sesion.merge(entidad); + + transaccion.commit(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } + throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_ACTUALIZACION); + } finally { + if (sesion != null) { + sesion.close(); + } + } + } + + @Override + public Concepto obtenerEntidadPorID(Integer clave) throws ProyectosIESException { + // TODO Auto-generated method stub + return null; + } + + + @Override + public void borrarEntidad(Integer clave) throws ProyectosIESException { + // TODO Auto-generated method stub + + } + } 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 index a1d40c5..ab5e406 100644 --- a/src/main/java/es/palomafp/aadd/inm/dao/hbm/CursoAcademicoDaoHibernate.java +++ b/src/main/java/es/palomafp/aadd/inm/dao/hbm/CursoAcademicoDaoHibernate.java @@ -10,8 +10,7 @@ import es.palomafp.aadd.inm.vo.CursoAcademico; /** * - * CursoAcademicoDaoHibernate: Clase que implementa el interfaz - * IOperacionesDAOEntidad + * CursoAcademicoDaoHibernate: Clase que implementa el interfaz IOperacionesDAOEntidad * * @author Isidoro Nevares Martín - IES Virgen de la Paloma * @date 31 oct 2025 @@ -43,11 +42,43 @@ public class CursoAcademicoDaoHibernate implements IOperacionesDAOEntidad 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; + } + @Override public CursoProyecto obtenerEntidadPorID(Integer clave) throws ProyectosIESException { // TODO Auto-generated method stub @@ -51,21 +95,9 @@ public class CursoProyectoDaoHibernate implements ICursoProyectoDAO { } @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"; + public void borrarEntidad(Integer clave) throws ProyectosIESException { + // TODO Auto-generated method stub - // 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/GastoDaoHibernate.java b/src/main/java/es/palomafp/aadd/inm/dao/hbm/GastoDaoHibernate.java index 3c9057c..6258577 100644 --- a/src/main/java/es/palomafp/aadd/inm/dao/hbm/GastoDaoHibernate.java +++ b/src/main/java/es/palomafp/aadd/inm/dao/hbm/GastoDaoHibernate.java @@ -2,9 +2,8 @@ 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.IGastoDAO; +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.Gasto; @@ -16,7 +15,7 @@ import es.palomafp.aadd.inm.vo.Gasto; * @author Isidoro Nevares Martín - IES Virgen de la Paloma * @date 31 oct 2025 */ -public class GastoDaoHibernate implements IGastoDAO { +public class GastoDaoHibernate implements IOperacionesDAOEntidad { @Override public void crearEntidad(Gasto entidad) throws ProyectosIESException { @@ -44,20 +43,29 @@ public class GastoDaoHibernate implements IGastoDAO { } @Override - public Gasto obtenerGastoPorNombre(String nombreGasto) throws ProyectosIESException { - Gasto gasto = null; - String sentenciaHQL = "SELECT g FROM Gasto g WHERE g.nombre = :nombre"; + public void actualizarEntidad(Gasto entidad) throws ProyectosIESException { + Transaction transaccion = null; + Session sesion = null; - // try con recursos "cerrables": Session - try (Session sesion = GestorSesionesHibernate.getSession();) { - SelectionQuery sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Gasto.class); - sentenciaConsulta.setParameter("nombre", nombreGasto); + try { + sesion = GestorSesionesHibernate.getSession(); + transaccion = sesion.beginTransaction(); - gasto = sentenciaConsulta.getSingleResultOrNull(); + if (sesion.contains(entidad)) + sesion.merge(entidad); + + transaccion.commit(); } catch (Exception e) { - throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA); + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } + throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_ACTUALIZACION); + } finally { + if (sesion != null) { + sesion.close(); + } } - return gasto; + } @Override @@ -66,4 +74,10 @@ public class GastoDaoHibernate implements IGastoDAO { return null; } + @Override + public void borrarEntidad(Integer clave) throws ProyectosIESException { + // TODO Auto-generated method stub + + } + } diff --git a/src/main/java/es/palomafp/aadd/inm/dao/hbm/IngresoDaoHibernate.java b/src/main/java/es/palomafp/aadd/inm/dao/hbm/IngresoDaoHibernate.java index e250c38..68a040c 100644 --- a/src/main/java/es/palomafp/aadd/inm/dao/hbm/IngresoDaoHibernate.java +++ b/src/main/java/es/palomafp/aadd/inm/dao/hbm/IngresoDaoHibernate.java @@ -2,12 +2,11 @@ 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.IGastoDAO; +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.Gasto; +import es.palomafp.aadd.inm.vo.Ingreso; /** * @@ -16,10 +15,10 @@ import es.palomafp.aadd.inm.vo.Gasto; * @author Isidoro Nevares Martín - IES Virgen de la Paloma * @date 31 oct 2025 */ -public class IngresoDaoHibernate implements IGastoDAO { +public class IngresoDaoHibernate implements IOperacionesDAOEntidad { @Override - public void crearEntidad(Gasto entidad) throws ProyectosIESException { + public void crearEntidad(Ingreso entidad) throws ProyectosIESException { Transaction transaccion = null; Session sesion = null; @@ -44,26 +43,41 @@ public class IngresoDaoHibernate implements IGastoDAO { } @Override - public Gasto obtenerGastoPorNombre(String nombreGasto) throws ProyectosIESException { - Gasto gasto = null; - String sentenciaHQL = "SELECT g FROM Gasto g WHERE g.nombre = :nombre"; + public void actualizarEntidad(Ingreso entidad) throws ProyectosIESException { + Transaction transaccion = null; + Session sesion = null; - // try con recursos "cerrables": Session - try (Session sesion = GestorSesionesHibernate.getSession();) { - SelectionQuery sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Gasto.class); - sentenciaConsulta.setParameter("nombre", nombreGasto); + try { + sesion = GestorSesionesHibernate.getSession(); + transaccion = sesion.beginTransaction(); - gasto = sentenciaConsulta.getSingleResultOrNull(); + if (sesion.contains(entidad)) + sesion.merge(entidad); + + transaccion.commit(); } catch (Exception e) { - throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA); + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } + throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_ACTUALIZACION); + } finally { + if (sesion != null) { + sesion.close(); + } } - return gasto; + } @Override - public Gasto obtenerEntidadPorID(Integer clave) throws ProyectosIESException { + public Ingreso obtenerEntidadPorID(Integer clave) throws ProyectosIESException { // TODO Auto-generated method stub return null; } + @Override + public void borrarEntidad(Integer clave) throws ProyectosIESException { + // TODO Auto-generated method stub + + } + } 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 index 5a2b79f..58a9bb0 100644 --- a/src/main/java/es/palomafp/aadd/inm/dao/hbm/PatrocinadorDaoHibernate.java +++ b/src/main/java/es/palomafp/aadd/inm/dao/hbm/PatrocinadorDaoHibernate.java @@ -2,8 +2,9 @@ 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.IOperacionesDAOEntidad; +import es.palomafp.aadd.inm.dao.IPatrocinadorDAO; import es.palomafp.aadd.inm.excepcion.ProyectosIESException; import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate; import es.palomafp.aadd.inm.vo.Patrocinador; @@ -15,7 +16,7 @@ import es.palomafp.aadd.inm.vo.Patrocinador; * @author Isidoro Nevares Martín - IES Virgen de la Paloma * @date 31 oct 2025 */ -public class PatrocinadorDaoHibernate implements IOperacionesDAOEntidad{ +public class PatrocinadorDaoHibernate implements IPatrocinadorDAO { @Override public void crearEntidad(Patrocinador entidad) throws ProyectosIESException { @@ -39,7 +40,50 @@ public class PatrocinadorDaoHibernate implements IOperacionesDAOEntidad sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, + Patrocinador.class); + sentenciaConsulta.setParameter("nombre", nombrePatrocinador); + + patrocinador = sentenciaConsulta.getSingleResultOrNull(); + } catch (Exception e) { + throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA); + } + return patrocinador; } @Override @@ -48,4 +92,10 @@ public class PatrocinadorDaoHibernate implements IOperacionesDAOEntidad { @Override public void crearEntidad(Gasto entidad) throws ProyectosIESException{ @@ -43,25 +42,29 @@ public class GastoDaoJPA implements IGastoDAO { } @Override - public Gasto obtenerGastoPorNombre(String nombreGasto) throws ProyectosIESException { - Gasto gasto = null; + public void actualizarEntidad(Gasto entidad) throws ProyectosIESException { + EntityManager gestorEntidades = null; + EntityTransaction transaccion = null; - String sentenciaJPQL = """ - SELECT g FROM Gasto g - WHERE g.nombre= :nombre - """; + try { + gestorEntidades = GestorEntityManagerJPA.getEntityManager(); + transaccion = gestorEntidades.getTransaction(); + transaccion.begin(); - // try con recursos "cerrables": Session - try (EntityManager entityManager = GestorEntityManagerJPA.getEntityManager();) { - TypedQuery query = entityManager.createQuery(sentenciaJPQL, Gasto.class); - query.setParameter("nombre", nombreGasto); + if (gestorEntidades.contains(entidad)) + gestorEntidades.merge(entidad); - gasto = query.getSingleResult(); + transaccion.commit(); } catch (Exception e) { - throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA); - } - - return gasto; + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } + throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_ACTUALIZACION); + } finally { + if (gestorEntidades != null) { + gestorEntidades.close(); + } + } } @Override @@ -70,4 +73,11 @@ public class GastoDaoJPA implements IGastoDAO { return null; } + @Override + public void borrarEntidad(Integer clave) throws ProyectosIESException { + // TODO Auto-generated method stub + + } + + } diff --git a/src/main/java/es/palomafp/aadd/inm/dao/jpa/IngresoDaoJPA.java b/src/main/java/es/palomafp/aadd/inm/dao/jpa/IngresoDaoJPA.java new file mode 100644 index 0000000..0431599 --- /dev/null +++ b/src/main/java/es/palomafp/aadd/inm/dao/jpa/IngresoDaoJPA.java @@ -0,0 +1,83 @@ +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.Ingreso; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityTransaction; + +/** + * + * IngresoDaoJPA: Clase que implementa el interfaz IOperacionesDAOEntidad + * + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 31 oct 2025 + */ +public class IngresoDaoJPA implements IOperacionesDAOEntidad { + + @Override + public void crearEntidad(Ingreso 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 void actualizarEntidad(Ingreso entidad) throws ProyectosIESException { + EntityManager gestorEntidades = null; + EntityTransaction transaccion = null; + + try { + gestorEntidades = GestorEntityManagerJPA.getEntityManager(); + transaccion = gestorEntidades.getTransaction(); + transaccion.begin(); + + if (gestorEntidades.contains(entidad)) + gestorEntidades.merge(entidad); + + transaccion.commit(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } + throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_ACTUALIZACION); + } finally { + if (gestorEntidades != null) { + gestorEntidades.close(); + } + } + } + + @Override + public Ingreso obtenerEntidadPorID(Integer clave) throws ProyectosIESException { + // TODO Auto-generated method stub + return null; + } + + @Override + public void borrarEntidad(Integer clave) throws ProyectosIESException { + // TODO Auto-generated method stub + + } + + +} 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 index bda2a17..5e05e4b 100644 --- a/src/main/java/es/palomafp/aadd/inm/dao/jpa/PatrocinadorDaoJPA.java +++ b/src/main/java/es/palomafp/aadd/inm/dao/jpa/PatrocinadorDaoJPA.java @@ -1,11 +1,17 @@ package es.palomafp.aadd.inm.dao.jpa; -import es.palomafp.aadd.inm.dao.IOperacionesDAOEntidad; +import org.hibernate.Session; +import org.hibernate.Transaction; + +import es.palomafp.aadd.inm.dao.IPatrocinadorDAO; import es.palomafp.aadd.inm.excepcion.ProyectosIESException; import es.palomafp.aadd.inm.gestor.GestorEntityManagerJPA; +import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate; import es.palomafp.aadd.inm.vo.Patrocinador; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityTransaction; +import jakarta.persistence.NoResultException; +import jakarta.persistence.TypedQuery; /** * @@ -14,7 +20,7 @@ import jakarta.persistence.EntityTransaction; * @author Isidoro Nevares Martín - IES Virgen de la Paloma * @date 31 oct 2025 */ -public class PatrocinadorDaoJPA implements IOperacionesDAOEntidad { +public class PatrocinadorDaoJPA implements IPatrocinadorDAO { @Override public void crearEntidad(Patrocinador entidad) throws ProyectosIESException{ EntityManager gestorEntidades= null; @@ -40,9 +46,65 @@ public class PatrocinadorDaoJPA implements IOperacionesDAOEntidad query = entityManager.createQuery(sentenciaJPQL, Patrocinador.class); + query.setParameter("nombre", nombrePatrocinador); + + patrocinador = query.getSingleResult(); + } catch (NoResultException e) { // no hace nada, devuelve null + } catch (Exception e) { + throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA); + } + + return patrocinador; + } + @Override public Patrocinador obtenerEntidadPorID(Integer clave) throws ProyectosIESException { // TODO Auto-generated method stub return null; } + + @Override + public void borrarEntidad(Integer clave) throws ProyectosIESException { + // TODO Auto-generated method stub + + } + + } 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 index 1b36bbe..e4ea959 100644 --- a/src/main/java/es/palomafp/aadd/inm/dao/jpa/ProyectoDaoJPA.java +++ b/src/main/java/es/palomafp/aadd/inm/dao/jpa/ProyectoDaoJPA.java @@ -1,11 +1,16 @@ package es.palomafp.aadd.inm.dao.jpa; +import org.hibernate.Session; +import org.hibernate.Transaction; + 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.gestor.GestorSesionesHibernate; import es.palomafp.aadd.inm.vo.Proyecto; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityTransaction; +import jakarta.persistence.NoResultException; import jakarta.persistence.TypedQuery; /** @@ -56,17 +61,49 @@ public class ProyectoDaoJPA implements IProyectoDAO { query.setParameter("nombre", nombreProyecto); proyecto = query.getSingleResult(); - } catch (Exception e) { + }catch (NoResultException e) { // no hace nada, devuelve null + }catch (Exception e) { throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA); } return proyecto; } + @Override + public void actualizarEntidad(Proyecto entidad) throws ProyectosIESException { + Transaction transaccion = null; + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); + transaccion = sesion.beginTransaction(); + + if (sesion.contains(entidad)) + sesion.merge(entidad); + + transaccion.commit(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } + throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_ACTUALIZACION); + } finally { + if (sesion != null) { + sesion.close(); + } + } + } + @Override public Proyecto obtenerEntidadPorID(Integer clave) throws ProyectosIESException { // TODO Auto-generated method stub return null; } + @Override + public void borrarEntidad(Integer clave) throws ProyectosIESException { + // TODO Auto-generated method stub + + } + } diff --git a/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroCSV.java b/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroCSV.java index 6161495..9bb3909 100644 --- a/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroCSV.java +++ b/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroCSV.java @@ -6,161 +6,65 @@ import java.io.FileReader; import java.io.IOException; import java.time.LocalDate; -import es.palomafp.aadd.inm.dao.IConceptoDAO; -import es.palomafp.aadd.inm.dao.ICursoProyectoDAO; -import es.palomafp.aadd.inm.dao.IGastoDAO; -import es.palomafp.aadd.inm.dao.IPatrocinadorDAO; -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.GastoDaoHibernate; -import es.palomafp.aadd.inm.dao.hbm.PatrocinadorDaoHibernate; -import es.palomafp.aadd.inm.dao.hbm.ProyectoDaoHibernate; -import es.palomafp.aadd.inm.dao.jpa.CursoProyectoDaoJPA; -import es.palomafp.aadd.inm.dao.jpa.GastoDaoJPA; +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.service.ProyectosIESService; import es.palomafp.aadd.inm.vo.CursoProyecto; -import es.palomafp.aadd.inm.vo.Gasto; -import es.palomafp.aadd.inm.vo.Ingreso; import es.palomafp.aadd.inm.vo.Proyecto; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.node.ArrayNode; public class ProcesadorFicheroCSV { - public void procesarFicheroCSVIngresos() { + public void procesarFicheroCSVIngresos() throws ProyectosIESException { 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 + + // Se asume que Curso Académico existe (no disponemos de información suficiente + // para crearlo) String codigoCurso = campos[0]; - String nombreProyecto= campos[1]; + String nombreProyecto = campos[1]; - IProyectoDAO proyectoDAO = new ProyectoDaoHibernate(); - Proyecto proyecto = proyectoDAO.obtenerProyectoPorNombre(nombreProyecto); - if(proyecto==null) { - // Inserción en PostgreSQL con Hibernate - proyectoDAO.crearEntidad(proyecto); - } + ProyectosIESService proyectoIESService = new ProyectosIESService(); - // Se obtiene el CursoProyecto ya persistido - ICursoProyectoDAO operacionesDAOCursoProyecto = new CursoProyectoDaoHibernate(); - CursoProyecto cursoProyecto = operacionesDAOCursoProyecto.obtenerCursoProyectoPorCursoYProyecto(codigoCurso, + // Tratamiento de proyecto en PostgreSQL y ObjectDB (se devuelve el proyecto + // existente o el creado) + Proyecto proyecto = new Proyecto(); + proyecto.setNombre(nombreProyecto); + proyecto = proyectoIESService.realizarTratamientoProyecto(proyecto); + + // Tratamiento de CursoProyecto en PostgreSQL y ObjectDB (se devuelve el + // proyecto existente o el creado) + CursoProyecto cursoProyecto = proyectoIESService.realizarTratamientoCursoProyecto(codigoCurso, proyecto.getIdentificador()); - // Si no existe en Hibernate - if (cursoProyecto==null) { - cursoProyecto= new CursoProyecto(); - CursoAcademico cursoAcademico = new CursoAcademico(); - cursoAcademico.setCodigo(codigoCurso); - cursoProyecto.setProyecto(proyecto); - // Inserción en PostgreSQL con Hibernate - operacionesDAOCursoProyecto.crearEntidad(cursoProyecto); - - // Inserción en ObjectDB con JPA - operacionesDAOCursoProyecto = new CursoProyectoDaoJPA(); - operacionesDAOCursoProyecto.crearEntidad(cursoProyecto); - - } - - - // Información ingreso - String nombrePatrocinador= campos[2]; - String cantidadIngreso = campos[3]; + String nombrePatrocinador = campos[2]; + String sCantidadIngreso = campos[3]; + Double cantidadIngreso = Double.parseDouble(sCantidadIngreso); String observacion = campos[4]; - String fecha= campos[5]; - - // Aquí iría la lógica para procesar cada línea - Ingreso ingreso= new Ingreso(); - ingreso.setCantidad(); - ingreso.setCursoProyecto(cursoProyecto); - ingreso.setFecha(null); - ingreso.setObservacion(observacion); - ingreso.setPatrocinador(null); - - // Tratmiento para ingresos - IPatrocinadorDAO patrocinadorDAO = new PatrocinadorDaoHibernate(); - Concepto concepto = conceptoDAO.obtenerConceptoPorNombre(nombreConcepto); - gasto.setConcepto(concepto); - gasto.setCursoProyecto(cursoProyecto); + // Fecha en formato yyyy-MM-dd (formato por defecto) + String sFecha = campos[5]; + LocalDate fecha = LocalDate.parse(sFecha); - // Inserción en PostgreSQL con Hibernate - IIngresoDAO operacionesDAOGasto = new GastoDaoHibernate(); - operacionesDAOGasto.crearEntidad(gasto); - // Inserción en ObjectDB con JPA - operacionesDAOGasto = new GastoDaoJPA(); - operacionesDAOGasto.crearEntidad(gasto); + // Tratamiento de Ingresos en PostgreSQL y ObjectDB + proyectoIESService.realizarTratamientoIngreso(cantidadIngreso, fecha, observacion, nombrePatrocinador, cursoProyecto); - - System.out.println(codCursoAcademico+ nombreProyecto + nombrePatrocinador + ingreso + fecha ); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } - } - /* - - 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); - - 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); - - // Obtener el concepto para asociárselo al gasto - IConceptoDAO conceptoDAO = new ConceptoDaoHibernate(); - Concepto concepto = conceptoDAO.obtenerConceptoPorNombre(nombreConcepto); - gasto.setConcepto(concepto); - gasto.setCursoProyecto(cursoProyecto); - - // Inserción en PostgreSQL con Hibernate - IGastoDAO operacionesDAOGasto = new GastoDaoHibernate(); - operacionesDAOGasto.crearEntidad(gasto); - // Inserción en ObjectDB con JPA - operacionesDAOGasto = new GastoDaoJPA(); - operacionesDAOGasto.crearEntidad(gasto); - } -*/ - } diff --git a/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroJSON.java b/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroJSON.java index a97fdc8..2350e46 100644 --- a/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroJSON.java +++ b/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroJSON.java @@ -3,22 +3,10 @@ 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.IGastoDAO; -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.GastoDaoHibernate; -import es.palomafp.aadd.inm.dao.hbm.ProyectoDaoHibernate; -import es.palomafp.aadd.inm.dao.jpa.CursoProyectoDaoJPA; -import es.palomafp.aadd.inm.dao.jpa.GastoDaoJPA; 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.service.ProyectosIESService; 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; @@ -37,24 +25,17 @@ public class ProcesadorFicheroJSON { 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); + ProyectosIESService proyectoIESService = new ProyectosIESService(); - 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, + // Tratamiento de proyecto en PostgreSQL y ObjectDB (se devuelve el proyecto + // existente o el creado) + Proyecto proyecto = new Proyecto(); + proyecto.setNombre(nombreProyecto); + proyecto = proyectoIESService.realizarTratamientoProyecto(proyecto); + + // Tratamiento de CursoProyecto en PostgreSQL y ObjectDB (se devuelve el + // proyecto existente o el creado) + CursoProyecto cursoProyecto = proyectoIESService.realizarTratamientoCursoProyecto(codigoCurso, proyecto.getIdentificador()); JsonNode nodoGastos = root.get("gastos"); @@ -63,32 +44,19 @@ public class ProcesadorFicheroJSON { for (JsonNode gastoNode : nodosGasto) { String nombreConcepto = gastoNode.get("concepto").asString(); - double precioUnitario = gastoNode.get("precio_unitario").asDouble(); int unidades = gastoNode.get("unidades").asInt(); + double precioUnitario = gastoNode.get("precio_unitario").asDouble(); String sFecha = gastoNode.get("fecha").asString(); LocalDate fecha = LocalDate.parse(sFecha); - Gasto gasto = new Gasto(); - gasto.setFecha(fecha); - gasto.setNumeroUnidades(unidades); - gasto.setPrecioUnidad(precioUnitario); - // Obtener el concepto para asociárselo al gasto - IConceptoDAO conceptoDAO = new ConceptoDaoHibernate(); - Concepto concepto = conceptoDAO.obtenerConceptoPorNombre(nombreConcepto); - gasto.setConcepto(concepto); - gasto.setCursoProyecto(cursoProyecto); - - // Inserción en PostgreSQL con Hibernate - IGastoDAO operacionesDAOGasto = new GastoDaoHibernate(); - operacionesDAOGasto.crearEntidad(gasto); - // Inserción en ObjectDB con JPA - operacionesDAOGasto = new GastoDaoJPA(); - operacionesDAOGasto.crearEntidad(gasto); + // Tratamiento de Gastos en PostgreSQL y ObjectDB + proyectoIESService.realizarTratamientoGasto(fecha, unidades, precioUnitario, nombreConcepto, cursoProyecto); } } + private ArrayNode convertirJsonNodeEnArrayNode(JsonNode node) { ObjectMapper mapper = new ObjectMapper(); if (node.isArray()) { diff --git a/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroXML.java b/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroXML.java index f2614ef..c26afbf 100644 --- a/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroXML.java +++ b/src/main/java/es/palomafp/aadd/inm/procesador/ProcesadorFicheroXML.java @@ -3,18 +3,9 @@ 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.IProyectoDAO; -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.service.ProyectosIESService; import es.palomafp.aadd.inm.vo.Concepto; import es.palomafp.aadd.inm.vo.CursoAcademico; import es.palomafp.aadd.inm.vo.Patrocinador; @@ -36,7 +27,7 @@ public class ProcesadorFicheroXML { // procesar nodos Curso JsonNode nodoCursos = root.get("Cursos"); - procesarCursos(nodoCursos); + procesarCursosAcademicos(nodoCursos); // procesar nodos Proyectos JsonNode nodoProyectos = root.get("Proyectos"); @@ -52,7 +43,7 @@ public class ProcesadorFicheroXML { } - private void procesarCursos(JsonNode nodoCursos) throws ProyectosIESException { + private void procesarCursosAcademicos(JsonNode nodoCursos) throws ProyectosIESException { // Se obtienen los nodos Curso ArrayNode nodosCurso = convertirJsonNodeEnArrayNode(nodoCursos.get("Curso")); for (JsonNode nodoCurso : nodosCurso) { @@ -69,13 +60,12 @@ public class ProcesadorFicheroXML { 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); - } + ProyectosIESService proyectoIESService = new ProyectosIESService(); + + // Tratamiento de CursoAcademico en PostgreSQL y ObjectDB + proyectoIESService.realizarTratamientoCursoAcademico(curso); + + } } private void procesarProyectos(JsonNode nodoProyectos) throws ProyectosIESException { @@ -92,12 +82,12 @@ public class ProcesadorFicheroXML { proyecto.setDescripcion(descripcion); proyecto.setUrlLogo(urlImagenLogo); - // Inserción en PostgreSQL con Hibernate - IProyectoDAO operacionesDAOProyecto = new ProyectoDaoHibernate(); - operacionesDAOProyecto.crearEntidad(proyecto); - // Inserción en ObjectDB con JPA - operacionesDAOProyecto = new ProyectoDaoJPA(); - operacionesDAOProyecto.crearEntidad(proyecto); + ProyectosIESService proyectoIESService = new ProyectosIESService(); + + // Tratamiento de proyecto en PostgreSQL y ObjectDB (se devuelve el proyecto + // existente o el creado) + proyectoIESService.realizarTratamientoProyecto(proyecto); + } } @@ -111,13 +101,11 @@ public class ProcesadorFicheroXML { 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); + + ProyectosIESService proyectoIESService = new ProyectosIESService(); + + // Tratamiento de concepto en PostgreSQL y ObjectDB + proyectoIESService.realizarTratamientoConcepto(concepto); } } @@ -130,12 +118,10 @@ public class ProcesadorFicheroXML { 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); + ProyectosIESService proyectoIESService = new ProyectosIESService(); + + // Tratamiento de patrocinador en PostgreSQL y ObjectDB + proyectoIESService.realizarTratamientoPatrocinador(patrocinador); } } diff --git a/src/main/java/es/palomafp/aadd/inm/service/ProyectosIESService.java b/src/main/java/es/palomafp/aadd/inm/service/ProyectosIESService.java new file mode 100644 index 0000000..3af3d3d --- /dev/null +++ b/src/main/java/es/palomafp/aadd/inm/service/ProyectosIESService.java @@ -0,0 +1,236 @@ +package es.palomafp.aadd.inm.service; + +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.IPatrocinadorDAO; +import es.palomafp.aadd.inm.dao.IProyectoDAO; +import es.palomafp.aadd.inm.dao.hbm.ConceptoDaoHibernate; +import es.palomafp.aadd.inm.dao.hbm.CursoAcademicoDaoHibernate; +import es.palomafp.aadd.inm.dao.hbm.CursoProyectoDaoHibernate; +import es.palomafp.aadd.inm.dao.hbm.GastoDaoHibernate; +import es.palomafp.aadd.inm.dao.hbm.IngresoDaoHibernate; +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.CursoProyectoDaoJPA; +import es.palomafp.aadd.inm.dao.jpa.GastoDaoJPA; +import es.palomafp.aadd.inm.dao.jpa.IngresoDaoJPA; +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.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.Ingreso; +import es.palomafp.aadd.inm.vo.Patrocinador; +import es.palomafp.aadd.inm.vo.Proyecto; + +public class ProyectosIESService { + public CursoAcademico realizarTratamientoCursoAcademico(CursoAcademico cursoAcademico) + throws ProyectosIESException { + // Tratamiento en PostgreSQL + IOperacionesDAOEntidad cursoAcademicoDAO = new CursoAcademicoDaoHibernate(); + CursoAcademico cursoAcademicoBBDD = cursoAcademicoDAO.obtenerEntidadPorID(cursoAcademico.getCodigo()); + + if (cursoAcademicoBBDD == null) { + // Inserción en PostgreSQL con Hibernate + cursoAcademicoDAO.crearEntidad(cursoAcademico); + } else { + cursoAcademico = cursoAcademicoBBDD; + } + + // Tratamiento en ObjectDB + cursoAcademicoDAO = new CursoAcademicoDaoJPA(); + cursoAcademicoBBDD = cursoAcademicoDAO.obtenerEntidadPorID(cursoAcademico.getCodigo()); + if (cursoAcademicoBBDD == null) { + // Inserción en PostgreSQL con Hibernate + cursoAcademicoDAO.crearEntidad(cursoAcademico); + } + + return cursoAcademico; + } + + public Proyecto realizarTratamientoProyecto(Proyecto proyecto) throws ProyectosIESException { + // Tratamiento en PostgreSQL + IProyectoDAO proyectoDAO = new ProyectoDaoHibernate(); + Proyecto proyectoBBDD = proyectoDAO.obtenerProyectoPorNombre(proyecto.getNombre()); + + if (proyectoBBDD == null) { + // Inserción en PostgreSQL con Hibernate + proyectoDAO.crearEntidad(proyecto); + }else{ + proyecto = proyectoBBDD; + } + + // Tratamiento en ObjectDB + proyectoDAO = new ProyectoDaoJPA(); + proyectoBBDD = proyectoDAO.obtenerProyectoPorNombre(proyecto.getNombre()); + if (proyectoBBDD == null) { + // Inserción en PostgreSQL con Hibernate + proyectoDAO.crearEntidad(proyecto); + } + + return proyecto; + } + + public Concepto realizarTratamientoConcepto(Concepto concepto) throws ProyectosIESException { + // Tratamiento en PostgreSQL + // Inserción en PostgreSQL con Hibernate + IConceptoDAO operacionesDAOConcepto = new ConceptoDaoHibernate(); + Concepto conceptoBBDD = operacionesDAOConcepto.obtenerConceptoPorNombre(concepto.getNombre()); + + if (conceptoBBDD == null) { + // Inserción en PostgreSQL con Hibernate + operacionesDAOConcepto.crearEntidad(concepto); + } else { + // Inserción en PostgreSQL con Hibernate + operacionesDAOConcepto.actualizarEntidad(concepto); + } + + // Tratamiento en ObjectDB + operacionesDAOConcepto = new ConceptoDaoJPA(); + conceptoBBDD = operacionesDAOConcepto.obtenerConceptoPorNombre(concepto.getNombre()); + if (conceptoBBDD == null) { + // Inserción en PostgreSQL con Hibernate + operacionesDAOConcepto.crearEntidad(concepto); + } else { + // Inserción en PostgreSQL con Hibernate + operacionesDAOConcepto.actualizarEntidad(concepto); + } + + return concepto; + } + + public Patrocinador realizarTratamientoPatrocinador(Patrocinador patrocinador) throws ProyectosIESException { + // Tratamiento en PostgreSQL + // Inserción en PostgreSQL con Hibernate + IPatrocinadorDAO operacionesDAOPatrocinador = new PatrocinadorDaoHibernate(); + Patrocinador patrocinadorBBDD = operacionesDAOPatrocinador + .obtenerPatrocinadorPorNombre(patrocinador.getNombre()); + + if (patrocinadorBBDD == null) { + // Inserción en PostgreSQL con Hibernate + operacionesDAOPatrocinador.crearEntidad(patrocinador); + } else { + // Inserción en PostgreSQL con Hibernate + operacionesDAOPatrocinador.actualizarEntidad(patrocinador); + } + + // Tratamiento en ObjectDB + operacionesDAOPatrocinador = new PatrocinadorDaoJPA(); + patrocinadorBBDD = operacionesDAOPatrocinador.obtenerPatrocinadorPorNombre(patrocinador.getNombre()); + if (patrocinadorBBDD == null) { + // Inserción en PostgreSQL con Hibernate + operacionesDAOPatrocinador.crearEntidad(patrocinador); + } else { + // Inserción en PostgreSQL con Hibernate + operacionesDAOPatrocinador.actualizarEntidad(patrocinador); + } + + return patrocinador; + } + + + public CursoProyecto realizarTratamientoCursoProyecto(String codigoCurso, Integer idProyecto) + throws ProyectosIESException { + CursoProyecto cursoProyecto = null; + + // Tratamiento en PostgreSQL + ICursoProyectoDAO operacionesDAOCursoProyecto = new CursoProyectoDaoHibernate(); + CursoProyecto cursoProyectoBBDD = operacionesDAOCursoProyecto.obtenerCursoProyectoPorCursoYProyecto(codigoCurso, + idProyecto); + + // Si no existe CursoProyecto en Hibernate se inserta + if (cursoProyectoBBDD == null) { + cursoProyecto = new CursoProyecto(); + CursoAcademico cursoAcademico = new CursoAcademico(); + cursoAcademico.setCodigo(codigoCurso); + cursoAcademico = realizarTratamientoCursoAcademico(cursoAcademico); + Proyecto proyecto = new Proyecto(); + proyecto.setIdentificador(idProyecto); + proyecto = realizarTratamientoProyecto(proyecto); + cursoProyecto.setProyecto(proyecto); + // Inserción en PostgreSQL con Hibernate + operacionesDAOCursoProyecto.crearEntidad(cursoProyecto); + + } + + // Tratamiento en ObjectDB + operacionesDAOCursoProyecto = new CursoProyectoDaoJPA(); + cursoProyectoBBDD = operacionesDAOCursoProyecto.obtenerCursoProyectoPorCursoYProyecto(codigoCurso, idProyecto); + + // Si no existe CursoProyecto en Hibernate se inserta + if (cursoProyectoBBDD == null) { + cursoProyecto = new CursoProyecto(); + CursoAcademico cursoAcademico = new CursoAcademico(); + cursoAcademico.setCodigo(codigoCurso); + Proyecto proyecto = new Proyecto(); + proyecto.setIdentificador(idProyecto); + cursoProyecto.setProyecto(proyecto); + + operacionesDAOCursoProyecto.crearEntidad(cursoProyecto); + + } + + return cursoProyecto; + + } + + public void realizarTratamientoIngreso(Double cantidadIngreso, LocalDate fecha, String observacion, + String nombrePatrocinador, CursoProyecto cursoProyecto) throws ProyectosIESException { + + // Tratmiento para patrocinador (se asume que la información del patrocinaor + // existe) + Patrocinador patrocinador = new Patrocinador(); + patrocinador.setNombre(nombrePatrocinador); + patrocinador = realizarTratamientoPatrocinador(patrocinador); + + // Cargar info de patrocinador + Ingreso ingreso = new Ingreso(); + ingreso.setCantidad(cantidadIngreso); + ingreso.setCursoProyecto(cursoProyecto); + ingreso.setFecha(fecha); + ingreso.setObservacion(observacion); + ingreso.setPatrocinador(patrocinador); + + // Inserción en PostgreSQL con Hibernate + IOperacionesDAOEntidad operacionesDAOIngreso = new IngresoDaoHibernate(); + operacionesDAOIngreso.crearEntidad(ingreso); + + // Inserción en ObjectDB con JPA + operacionesDAOIngreso = new IngresoDaoJPA(); + operacionesDAOIngreso.crearEntidad(ingreso); + + } + + public Gasto realizarTratamientoGasto(LocalDate fecha, Integer unidades, Double precioUnitario, + String nombreConcepto, CursoProyecto cursoProyecto) throws ProyectosIESException { + + Gasto gasto = new Gasto(); + gasto.setFecha(fecha); + gasto.setNumeroUnidades(unidades); + gasto.setPrecioUnidad(precioUnitario); + + // Obtener el concepto para asociárselo al gasto + Concepto concepto = new Concepto(); + concepto = realizarTratamientoConcepto(concepto); + gasto.setConcepto(concepto); + gasto.setCursoProyecto(cursoProyecto); + + // 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); + + return gasto; + } + +} diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml index ad540b5..39e77e6 100644 --- a/src/main/resources/hibernate.cfg.xml +++ b/src/main/resources/hibernate.cfg.xml @@ -4,7 +4,7 @@ "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> - jdbc:postgresql://10.13.0.130:5432/proyectos_ies + jdbc:postgresql://172.16.0.181:5432/proyectos_ies org.postgresql.Driver org.hibernate.dialect.PostgreSQLDialect @@ -13,7 +13,7 @@ postgresql_123 - none + create-drop true true