Centralización en ProyectosIESService

This commit is contained in:
Isidoro Nevares 2026-01-21 19:22:44 +01:00
parent 501a37c035
commit 2ea9bc7d8d
21 changed files with 908 additions and 309 deletions

View File

@ -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();
}
}

View File

@ -13,6 +13,8 @@ import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
public interface IOperacionesDAOEntidad<T, ID> {
T obtenerEntidadPorID(ID clave) throws ProyectosIESException;
void borrarEntidad(ID clave) throws ProyectosIESException;
void actualizarEntidad(T entidad) throws ProyectosIESException;
void crearEntidad(T entidad) throws ProyectosIESException;
}

View File

@ -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
}
}

View File

@ -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<CursoA
}
@Override
public void actualizarEntidad(CursoAcademico 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 CursoAcademico obtenerEntidadPorID(String clave) throws ProyectosIESException {
// TODO Auto-generated method stub
return null;
}
@Override
public void borrarEntidad(String clave) throws ProyectosIESException {
// TODO Auto-generated method stub
}
}

View File

@ -11,8 +11,7 @@ import es.palomafp.aadd.inm.vo.CursoProyecto;
/**
*
* CursoProyectoDaoHibernate: Clase que implementa el interfaz
* IOperacionesDAOEntidad
* CursoProyectoDaoHibernate: Clase que implementa el interfaz ICursoProyectoDAO
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 31 oct 2025
@ -45,19 +44,40 @@ public class CursoProyectoDaoHibernate implements ICursoProyectoDAO {
}
@Override
public CursoProyecto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
// TODO Auto-generated method stub
return null;
public void actualizarEntidad(CursoProyecto 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 CursoProyecto obtenerCursoProyectoPorCursoYProyecto(String codigoCursoAcademico, Integer idProyecto) throws ProyectosIESException {
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<CursoProyecto> sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, CursoProyecto.class);
SelectionQuery<CursoProyecto> sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL,
CursoProyecto.class);
sentenciaConsulta.setParameter("codigo", codigoCursoAcademico);
sentenciaConsulta.setParameter("idProyecto", idProyecto);
@ -68,4 +88,16 @@ public class CursoProyectoDaoHibernate implements ICursoProyectoDAO {
return cursoProyecto;
}
@Override
public CursoProyecto 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
}
}

View File

@ -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<Gasto, Integer> {
@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<Gasto> 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();
}
return gasto;
throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_ACTUALIZACION);
} finally {
if (sesion != null) {
sesion.close();
}
}
}
@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
}
}

View File

@ -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<Ingreso, Integer> {
@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<Gasto> 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();
}
return gasto;
throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_ACTUALIZACION);
} finally {
if (sesion != null) {
sesion.close();
}
}
}
@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
}
}

View File

@ -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<Patrocinador, Integer>{
public class PatrocinadorDaoHibernate implements IPatrocinadorDAO {
@Override
public void crearEntidad(Patrocinador entidad) throws ProyectosIESException {
@ -42,10 +43,59 @@ public class PatrocinadorDaoHibernate implements IOperacionesDAOEntidad<Patrocin
}
@Override
public void actualizarEntidad(Patrocinador 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 Patrocinador obtenerPatrocinadorPorNombre(String nombrePatrocinador) throws ProyectosIESException {
Patrocinador patrocinador = null;
String sentenciaHQL = "SELECT p FROM Patrocinador p WHERE p.nombre = :nombre";
// try con recursos "cerrables": Session
try (Session sesion = GestorSesionesHibernate.getSession();) {
SelectionQuery<Patrocinador> 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
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
}
}

View File

@ -43,6 +43,31 @@ public class ProyectoDaoHibernate implements IProyectoDAO {
}
@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 obtenerProyectoPorNombre(String nombreProyecto) throws ProyectosIESException {
Proyecto proyecto = null;
@ -65,4 +90,11 @@ public class ProyectoDaoHibernate implements IProyectoDAO {
// TODO Auto-generated method stub
return null;
}
@Override
public void borrarEntidad(Integer clave) throws ProyectosIESException {
// TODO Auto-generated method stub
}
}

View File

@ -6,6 +6,7 @@ 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.NoResultException;
import jakarta.persistence.TypedQuery;
/**
@ -17,14 +18,14 @@ import jakarta.persistence.TypedQuery;
*/
public class ConceptoDaoJPA implements IConceptoDAO {
@Override
public void crearEntidad(Concepto entidad) throws ProyectosIESException{
EntityManager gestorEntidades= null;
public void crearEntidad(Concepto entidad) throws ProyectosIESException {
EntityManager gestorEntidades = null;
EntityTransaction transaccion = null;
try {
gestorEntidades = GestorEntityManagerJPA.getEntityManager();
transaccion = gestorEntidades.getTransaction();
transaccion .begin();
transaccion.begin();
gestorEntidades.persist(entidad);
@ -42,9 +43,29 @@ public class ConceptoDaoJPA implements IConceptoDAO {
}
@Override
public Concepto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
// TODO Auto-generated method stub
return null;
public void actualizarEntidad(Concepto 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
@ -52,7 +73,7 @@ public class ConceptoDaoJPA implements IConceptoDAO {
Concepto concepto = null;
String sentenciaJPQL = """
SELECT p FROM Concepto c
SELECT c FROM Concepto c
WHERE c.nombre= :nombre
""";
@ -62,10 +83,24 @@ public class ConceptoDaoJPA implements IConceptoDAO {
query.setParameter("nombre", nombreConcepto);
concepto = 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 concepto;
}
@Override
public void borrarEntidad(Integer clave) throws ProyectosIESException {
// TODO Auto-generated method stub
}
@Override
public Concepto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
// TODO Auto-generated method stub
return null;
}
}

View File

@ -6,6 +6,7 @@ import es.palomafp.aadd.inm.gestor.GestorEntityManagerJPA;
import es.palomafp.aadd.inm.vo.CursoAcademico;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityTransaction;
import jakarta.persistence.NoResultException;
/**
*
@ -40,7 +41,31 @@ public class CursoAcademicoDaoJPA implements IOperacionesDAOEntidad<CursoAcademi
}
}
@Override
public void actualizarEntidad(CursoAcademico 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 CursoAcademico obtenerEntidadPorID(String clave) throws ProyectosIESException {
CursoAcademico cursoAcademico = null;
@ -48,9 +73,20 @@ public class CursoAcademicoDaoJPA implements IOperacionesDAOEntidad<CursoAcademi
// try con recursos "cerrables": Session
try (EntityManager entityManager = GestorEntityManagerJPA.getEntityManager();) {
cursoAcademico = entityManager.find(CursoAcademico.class, clave);
} catch (Exception e) {
}catch (NoResultException e) { // no hace nada, devuelve null
}catch (Exception e) {
throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA);
}
return cursoAcademico;
}
@Override
public void borrarEntidad(String clave) throws ProyectosIESException {
// TODO Auto-generated method stub
}
}

View File

@ -6,6 +6,7 @@ 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.NoResultException;
import jakarta.persistence.TypedQuery;
/**
@ -42,8 +43,29 @@ public class CursoProyectoDaoJPA implements ICursoProyectoDAO {
}
@Override
public CursoProyecto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
return null;
public void actualizarEntidad(CursoProyecto 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
@ -65,9 +87,21 @@ public class CursoProyectoDaoJPA implements ICursoProyectoDAO {
query.setParameter("codigoCurso", codigoCursoAcademico);
cursoProyecto = query.getSingleResult();
} catch (NoResultException e) { // no hace nada, devuelve null
} catch (Exception e) {
throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA);
}
return cursoProyecto;
}
@Override
public void borrarEntidad(Integer clave) throws ProyectosIESException {
// TODO Auto-generated method stub
}
@Override
public CursoProyecto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
return null;
}
}

View File

@ -1,21 +1,20 @@
package es.palomafp.aadd.inm.dao.jpa;
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.GestorEntityManagerJPA;
import es.palomafp.aadd.inm.vo.Gasto;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityTransaction;
import jakarta.persistence.TypedQuery;
/**
*
* ConceptoDaoJPA: Clase que implementa el interfaz IGastoDAO
* GastoDaoJPA: Clase que implementa el interfaz IOperacionesDAOEntidad
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 31 oct 2025
*/
public class GastoDaoJPA implements IGastoDAO {
public class GastoDaoJPA implements IOperacionesDAOEntidad<Gasto, Integer> {
@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<Gasto> 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);
if (transaccion != null && transaccion.isActive()) {
transaccion.rollback();
}
throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_ACTUALIZACION);
} finally {
if (gestorEntidades != null) {
gestorEntidades.close();
}
}
return gasto;
}
@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
}
}

View File

@ -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<Ingreso, Integer> {
@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
}
}

View File

@ -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<Patrocinador, Integer> {
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<Patrocinador,
}
}
@Override
public void actualizarEntidad(Patrocinador 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 Patrocinador obtenerPatrocinadorPorNombre(String nombrePatrocinador) throws ProyectosIESException {
Patrocinador patrocinador = null;
String sentenciaJPQL = """
SELECT p FROM Patrocinador p
WHERE p.nombre= :nombre
""";
// try con recursos "cerrables": Session
try (EntityManager entityManager = GestorEntityManagerJPA.getEntityManager();) {
TypedQuery<Patrocinador> 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
}
}

View File

@ -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
}
}

View File

@ -6,31 +6,15 @@ 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);
@ -44,123 +28,43 @@ public class ProcesadorFicheroCSV {
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];
// Fecha en formato yyyy-MM-dd (formato por defecto)
String sFecha = campos[5];
LocalDate fecha = LocalDate.parse(sFecha);
// 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);
// Tratamiento de Ingresos en PostgreSQL y ObjectDB
proyectoIESService.realizarTratamientoIngreso(cantidadIngreso, fecha, observacion, nombrePatrocinador, cursoProyecto);
// Tratmiento para ingresos
IPatrocinadorDAO patrocinadorDAO = new PatrocinadorDaoHibernate();
Concepto concepto = conceptoDAO.obtenerConceptoPorNombre(nombreConcepto);
gasto.setConcepto(concepto);
gasto.setCursoProyecto(cursoProyecto);
// 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);
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);
}
*/
}

View File

@ -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);
// 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);
// 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 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()) {

View File

@ -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,12 +60,11 @@ public class ProcesadorFicheroXML {
curso.setFechaInicio(fechaInicio);
curso.setFechaFin(fechaFin);
// Inserción en PostgreSQL con Hibernate
IOperacionesDAOEntidad<CursoAcademico, String> 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);
}
}
@ -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);
}
}
@ -112,12 +102,10 @@ public class ProcesadorFicheroXML {
concepto.setNombre(nombre);
concepto.setDescripcion(descripcion);
// Inserción en PostgreSQL con Hibernate
IOperacionesDAOEntidad<Concepto, Integer> 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<Patrocinador, Integer> 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);
}
}

View File

@ -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<CursoAcademico, String> 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<Ingreso, Integer> 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<Gasto, Integer> operacionesDAOGasto = new GastoDaoHibernate();
operacionesDAOGasto.crearEntidad(gasto);
// Inserción en ObjectDB con JPA
operacionesDAOGasto = new GastoDaoJPA();
operacionesDAOGasto.crearEntidad(gasto);
return gasto;
}
}

View File

@ -4,7 +4,7 @@
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:postgresql://10.13.0.130:5432/proyectos_ies</property>
<property name="connection.url">jdbc:postgresql://172.16.0.181:5432/proyectos_ies</property>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
@ -13,7 +13,7 @@
<property name="connection.password">postgresql_123</property>
<!-- DB schema will be updated if needed -->
<property name="hbm2ddl.auto">none</property>
<property name="hbm2ddl.auto">create-drop</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>