Persistencia de Gastos

This commit is contained in:
Isidoro Nevares Martín 2026-01-20 19:35:34 +01:00
parent 6f0b89e8a3
commit 77cc793ac1
5 changed files with 97 additions and 25 deletions

View File

@ -25,12 +25,12 @@ public class AppProyectosIES {
delete from t_curso_proyecto;
delete from t_concepto ;
delete from t_patrocinador;
delete from t_curso_academico ;
delete from t_proyecto ;
delete from t_proyecto
*/
// Generar la estructura de la base de datos en PostgreSQL
GestorSesionesHibernate.getSession();
// GestorSesionesHibernate.getSession();
try {
app.procesarFicheros();
@ -65,11 +65,11 @@ 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();

View File

@ -4,8 +4,26 @@ import java.io.BufferedReader;
import java.io.File;
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.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.gestor.GestorFicheroConfiguracion;
import es.palomafp.aadd.inm.vo.Concepto;
import es.palomafp.aadd.inm.vo.CursoAcademico;
import es.palomafp.aadd.inm.vo.CursoProyecto;
import es.palomafp.aadd.inm.vo.Gasto;
import es.palomafp.aadd.inm.vo.Proyecto;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.node.ArrayNode;
public class ProcesadorFicheroCSV {
@ -24,15 +42,72 @@ public class ProcesadorFicheroCSV {
// Procesar la línea leída
String[] campos = linea.split(",");
// Suponiendo que el CSV tiene dos columnas: id, ingreso
String id = campos[0];
String ingreso = campos[1];
String codCursoAcademico = campos[0];
String nombreProyecto= campos[1];
String nombrePatrocinador= campos[2];
String ingreso = campos[3];
String fecha= campos[4];
// Aquí iría la lógica para procesar cada línea
System.out.println(codCursoAcademico+ nombreProyecto + nombrePatrocinador + ingreso + fecha );
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
CursoAcademico cursoAcademico = new CursoAcademico();
cursoAcademico.setCodigo(codigoCurso);
IProyectoDAO proyectoDAO = new ProyectoDaoHibernate();
Proyecto proyecto = proyectoDAO.obtenerProyectoPorNombre(nombreProyecto);
CursoProyecto cursoProyecto = new CursoProyecto();
cursoProyecto.setCursoAcademico(cursoAcademico);
cursoProyecto.setProyecto(proyecto);
// Inserción en PostgreSQL con Hibernate
ICursoProyectoDAO operacionesDAOCursoProyecto = new CursoProyectoDaoHibernate();
operacionesDAOCursoProyecto.crearEntidad(cursoProyecto);
// Inserción en ObjectDB con JPA
operacionesDAOCursoProyecto = new CursoProyectoDaoJPA();
operacionesDAOCursoProyecto.crearEntidad(cursoProyecto);
// Se obtiene el CursoProyecto ya persistido
cursoProyecto = operacionesDAOCursoProyecto.obtenerCursoProyectoPorCursoYProyecto(codigoCurso,
proyecto.getIdentificador());
JsonNode nodoGastos = root.get("gastos");
// Se obtienen los nodos Gasto
ArrayNode nodosGasto = convertirJsonNodeEnArrayNode(nodoGastos);
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

@ -26,7 +26,6 @@ import tools.jackson.databind.node.ArrayNode;
public class ProcesadorFicheroJSON {
public void procesarFicheroJSONGastos() throws ProyectosIESException {
String rutaFichero = GestorFicheroConfiguracion.getValorfromClave("gastos.fichero.json.ruta");
File fichero = new File(rutaFichero);
@ -35,7 +34,7 @@ public class ProcesadorFicheroJSON {
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(fichero);
String codigoCurso= root.get("curso").asString();
String codigoCurso = root.get("curso").asString();
String nombreProyecto = root.get("proyecto").asString();
CursoAcademico cursoAcademico = new CursoAcademico();
@ -55,14 +54,15 @@ public class ProcesadorFicheroJSON {
operacionesDAOCursoProyecto.crearEntidad(cursoProyecto);
// Se obtiene el CursoProyecto ya persistido
cursoProyecto = operacionesDAOCursoProyecto.obtenerCursoProyectoPorCursoYProyecto(codigoCurso, proyecto.getIdentificador());
cursoProyecto = operacionesDAOCursoProyecto.obtenerCursoProyectoPorCursoYProyecto(codigoCurso,
proyecto.getIdentificador());
JsonNode nodoGastos= root.get("gastos");
JsonNode nodoGastos = root.get("gastos");
// Se obtienen los nodos Gasto
ArrayNode nodosGasto= convertirJsonNodeEnArrayNode(nodoGastos.get("gasto"));
ArrayNode nodosGasto = convertirJsonNodeEnArrayNode(nodoGastos);
for (JsonNode gastoNode : nodosGasto) {
String nombreConcepto=gastoNode.get("concepto").asString();
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();
@ -75,9 +75,9 @@ public class ProcesadorFicheroJSON {
// Obtener el concepto para asociárselo al gasto
IConceptoDAO conceptoDAO = new ConceptoDaoHibernate();
Concepto concepto=conceptoDAO.obtenerConceptoPorNombre(nombreConcepto);
Concepto concepto = conceptoDAO.obtenerConceptoPorNombre(nombreConcepto);
gasto.setConcepto(concepto);
gasto.setCursoProyecto(cursoProyecto);
// Inserción en PostgreSQL con Hibernate
IGastoDAO operacionesDAOGasto = new GastoDaoHibernate();
@ -87,9 +87,6 @@ public class ProcesadorFicheroJSON {
operacionesDAOGasto.crearEntidad(gasto);
}
System.out.println("nodoGastos:" + nodoGastos);
}
private ArrayNode convertirJsonNodeEnArrayNode(JsonNode node) {

View File

@ -21,7 +21,7 @@
<!-- Configuración de propiedades del SGDB (ObjectDB)-->
<properties>
<property name="jakarta.persistence.jdbc.url" value="objectdb://10.19.0.253:6136/proyectos_ies.odb" />
<property name="jakarta.persistence.jdbc.url" value="objectdb://localhost/proyectos_ies.odb" />
<property name="jakarta.persistence.jdbc.user" value="admin"/>
<property name="jakarta.persistence.jdbc.password" value="admin"/>
</properties>

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.19.0.221:5432/proyectos_ies</property>
<property name="connection.url">jdbc:postgresql://10.13.0.130:5432/proyectos_ies</property>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>