Cambios en gasto

This commit is contained in:
Isidoro Nevares 2026-01-20 20:30:49 +01:00
parent 77cc793ac1
commit 501a37c035
3 changed files with 129 additions and 25 deletions

View File

@ -1,18 +0,0 @@
package es.palomafp.aadd.inm.dao;
import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
import es.palomafp.aadd.inm.vo.Gasto;
/**
*
* IGastoDAO: Interfaz que representa las operaciones a realizar con la entidad Gasto
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 20 ene 2026
*
*
*/
public interface IGastoDAO extends IOperacionesDAOEntidad<Gasto, Integer> {
Gasto obtenerGastoPorNombre(String nombreGasto) throws ProyectosIESException;
}

View File

@ -0,0 +1,69 @@
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.excepcion.ProyectosIESException;
import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate;
import es.palomafp.aadd.inm.vo.Gasto;
/**
*
* ConceptoDaoHibernate: Clase que implementa el interfaz IOperacionesDAOEntidad
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 31 oct 2025
*/
public class IngresoDaoHibernate implements IGastoDAO {
@Override
public void crearEntidad(Gasto entidad) throws ProyectosIESException {
Transaction transaccion = null;
Session sesion = null;
try {
sesion = GestorSesionesHibernate.getSession();
transaccion = sesion.beginTransaction();
sesion.persist(entidad);
transaccion.commit();
} catch (Exception e) {
if (transaccion != null && transaccion.isActive()) {
transaccion.rollback();
}
throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_INSERCION);
} finally {
if (sesion != null) {
sesion.close();
}
}
}
@Override
public Gasto obtenerGastoPorNombre(String nombreGasto) throws ProyectosIESException {
Gasto gasto = null;
String sentenciaHQL = "SELECT g FROM Gasto g WHERE g.nombre = :nombre";
// try con recursos "cerrables": Session
try (Session sesion = GestorSesionesHibernate.getSession();) {
SelectionQuery<Gasto> sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Gasto.class);
sentenciaConsulta.setParameter("nombre", nombreGasto);
gasto = sentenciaConsulta.getSingleResultOrNull();
} catch (Exception e) {
throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA);
}
return gasto;
}
@Override
public Gasto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
// TODO Auto-generated method stub
return null;
}
}

View File

@ -9,10 +9,12 @@ 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;
@ -21,6 +23,7 @@ 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.Proyecto;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.node.ArrayNode;
@ -42,12 +45,66 @@ public class ProcesadorFicheroCSV {
// Procesar la línea leída
String[] campos = linea.split(",");
// Suponiendo que el CSV tiene dos columnas: id, ingreso
String codCursoAcademico = campos[0];
String codigoCurso = campos[0];
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);
}
// Se obtiene el CursoProyecto ya persistido
ICursoProyectoDAO operacionesDAOCursoProyecto = new CursoProyectoDaoHibernate();
CursoProyecto cursoProyecto = operacionesDAOCursoProyecto.obtenerCursoProyectoPorCursoYProyecto(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 ingreso = campos[3];
String fecha= campos[4];
String cantidadIngreso = campos[3];
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);
// 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) {
@ -59,10 +116,6 @@ public class ProcesadorFicheroCSV {
}
/*
CursoAcademico cursoAcademico = new CursoAcademico();
cursoAcademico.setCodigo(codigoCurso);
IProyectoDAO proyectoDAO = new ProyectoDaoHibernate();
Proyecto proyecto = proyectoDAO.obtenerProyectoPorNombre(nombreProyecto);
CursoProyecto cursoProyecto = new CursoProyecto();
cursoProyecto.setCursoAcademico(cursoAcademico);