Commit inicial
This commit is contained in:
commit
e447864322
41
.classpath
Normal file
41
.classpath
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="module" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="output" path="target/classes"/>
|
||||||
|
</classpath>
|
||||||
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
/bin/
|
||||||
|
*.class
|
||||||
|
/target/
|
||||||
23
.project
Normal file
23
.project
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>aadd_act4_2</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
||||||
2
.settings/org.eclipse.core.resources.prefs
Normal file
2
.settings/org.eclipse.core.resources.prefs
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
encoding/<project>=UTF-8
|
||||||
13
.settings/org.eclipse.jdt.core.prefs
Normal file
13
.settings/org.eclipse.jdt.core.prefs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=24
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=24
|
||||||
|
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||||
|
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||||
|
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
|
||||||
|
org.eclipse.jdt.core.compiler.release=disabled
|
||||||
|
org.eclipse.jdt.core.compiler.source=24
|
||||||
4
.settings/org.eclipse.m2e.core.prefs
Normal file
4
.settings/org.eclipse.m2e.core.prefs
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
activeProfiles=
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
resolveWorkspaceProjects=true
|
||||||
|
version=1
|
||||||
124
ficheros/catalogos.xml
Normal file
124
ficheros/catalogos.xml
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Catalogos>
|
||||||
|
<Cursos>
|
||||||
|
<Curso>
|
||||||
|
<Codigo>2024/2025</Codigo>
|
||||||
|
<Fechas>
|
||||||
|
<FechaInicio>2024-09-01</FechaInicio>
|
||||||
|
<FechaFin>2025-08-31</FechaFin>
|
||||||
|
</Fechas>
|
||||||
|
<Nombre>Curso 2024/2025</Nombre>
|
||||||
|
</Curso>
|
||||||
|
</Cursos>
|
||||||
|
|
||||||
|
<Proyectos>
|
||||||
|
<Proyecto>
|
||||||
|
<Informacion_descriptiva>
|
||||||
|
<Nombre>Hiperbaric</Nombre>
|
||||||
|
<Descripcion>Proyecto Hiperbaric, alumnos de 1º de grado medio de electromecánica de vehículos.</Descripcion>
|
||||||
|
<url_imagen_logo>https://eedd1dam.decieloytierra.es/avatars/e33ba9460633123bf4368fb219a43ad6f4c3a2403fece22134456e6009e4f485</url_imagen_logo>
|
||||||
|
</Informacion_descriptiva>
|
||||||
|
<ciclo_formativo>Grado Medio de Electromecánica de Vehículos</ciclo_formativo>
|
||||||
|
</Proyecto>
|
||||||
|
</Proyectos>
|
||||||
|
|
||||||
|
<Conceptos>
|
||||||
|
<Concepto>
|
||||||
|
<Nombre>Chasis</Nombre>
|
||||||
|
<Descripcion>Chasis para el vehículo</Descripcion>
|
||||||
|
</Concepto>
|
||||||
|
<Concepto>
|
||||||
|
<Nombre>Asiento</Nombre>
|
||||||
|
<Descripcion>Asiento para el vehículo</Descripcion>
|
||||||
|
</Concepto>
|
||||||
|
<Concepto>
|
||||||
|
<Nombre>Suspensión</Nombre>
|
||||||
|
<Descripcion>Sistema de suspensión para el vehículo</Descripcion>
|
||||||
|
</Concepto>
|
||||||
|
<Concepto>
|
||||||
|
<Nombre>Dirección</Nombre>
|
||||||
|
<Descripcion>Sistema de dirección para el vehículo</Descripcion>
|
||||||
|
</Concepto>
|
||||||
|
<Concepto>
|
||||||
|
<Nombre>Frenos</Nombre>
|
||||||
|
<Descripcion>Frenos del vehículo</Descripcion>
|
||||||
|
</Concepto>
|
||||||
|
<Concepto>
|
||||||
|
<Nombre>Neumáticos y llantas</Nombre>
|
||||||
|
<Descripcion>Neumáticos y llantas del vehículo</Descripcion>
|
||||||
|
</Concepto>
|
||||||
|
<Concepto>
|
||||||
|
<Nombre>Elementos comerciales</Nombre>
|
||||||
|
<Descripcion>Elementos comerciales para la venta o publicidad</Descripcion>
|
||||||
|
</Concepto>
|
||||||
|
<Concepto>
|
||||||
|
<Nombre>Carrocería</Nombre>
|
||||||
|
<Descripcion>Carrocería del vehículo</Descripcion>
|
||||||
|
</Concepto>
|
||||||
|
<Concepto>
|
||||||
|
<Nombre>Cinturón</Nombre>
|
||||||
|
<Descripcion>Cinturón de seguridad del vehículo</Descripcion>
|
||||||
|
</Concepto>
|
||||||
|
<Concepto>
|
||||||
|
<Nombre>Equipos de protección</Nombre>
|
||||||
|
<Descripcion>Equipos de protección para los conductores</Descripcion>
|
||||||
|
</Concepto>
|
||||||
|
<Concepto>
|
||||||
|
<Nombre>Logística</Nombre>
|
||||||
|
<Descripcion>Gastos de logística para el proyecto</Descripcion>
|
||||||
|
</Concepto>
|
||||||
|
<Concepto>
|
||||||
|
<Nombre>Equipamiento, GPS y velocímetro</Nombre>
|
||||||
|
<Descripcion>Equipamiento como GPS y velocímetro para el vehículo</Descripcion>
|
||||||
|
</Concepto>
|
||||||
|
<Concepto>
|
||||||
|
<Nombre>Soportes para el vehículo</Nombre>
|
||||||
|
<Descripcion>Soportes necesarios para montar el vehículo</Descripcion>
|
||||||
|
</Concepto>
|
||||||
|
</Conceptos>
|
||||||
|
|
||||||
|
<Patrocinadores>
|
||||||
|
<Patrocinador>
|
||||||
|
<Nombre>Soluciones Nerva</Nombre>
|
||||||
|
<Direccion/>
|
||||||
|
<Telefono/>
|
||||||
|
<Imagen/>
|
||||||
|
</Patrocinador>
|
||||||
|
<Patrocinador>
|
||||||
|
<Nombre>Fibritel</Nombre>
|
||||||
|
<Direccion/>
|
||||||
|
<Telefono/>
|
||||||
|
<Imagen/>
|
||||||
|
</Patrocinador>
|
||||||
|
<Patrocinador>
|
||||||
|
<Nombre>Karting Ángel Burgueño</Nombre>
|
||||||
|
<Direccion/>
|
||||||
|
<Telefono/>
|
||||||
|
<Imagen/>
|
||||||
|
</Patrocinador>
|
||||||
|
<Patrocinador>
|
||||||
|
<Nombre>Mann filter</Nombre>
|
||||||
|
<Direccion/>
|
||||||
|
<Telefono/>
|
||||||
|
<Imagen/>
|
||||||
|
</Patrocinador>
|
||||||
|
<Patrocinador>
|
||||||
|
<Nombre>IES Virgen de la Paloma</Nombre>
|
||||||
|
<Direccion/>
|
||||||
|
<Telefono/>
|
||||||
|
<Imagen/>
|
||||||
|
</Patrocinador>
|
||||||
|
<Patrocinador>
|
||||||
|
<Nombre>Acer logística</Nombre>
|
||||||
|
<Direccion/>
|
||||||
|
<Telefono/>
|
||||||
|
<Imagen/>
|
||||||
|
</Patrocinador>
|
||||||
|
<Patrocinador>
|
||||||
|
<Nombre>Talleres TUDAM</Nombre>
|
||||||
|
<Direccion/>
|
||||||
|
<Telefono/>
|
||||||
|
<Imagen/>
|
||||||
|
</Patrocinador>
|
||||||
|
</Patrocinadores>
|
||||||
|
</Catalogos>
|
||||||
84
ficheros/gastos.json
Normal file
84
ficheros/gastos.json
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
{
|
||||||
|
"curso": "2024/2025",
|
||||||
|
"proyecto": "Hiperbaric",
|
||||||
|
"gastos": [
|
||||||
|
{
|
||||||
|
"concepto": "Chasis",
|
||||||
|
"precio_unitario": 500,
|
||||||
|
"unidades": 1,
|
||||||
|
"fecha": "2024-09-15"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"concepto": "Asiento",
|
||||||
|
"precio_unitario": 200,
|
||||||
|
"unidades": 1,
|
||||||
|
"fecha": "2024-09-16"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"concepto": "Suspensión",
|
||||||
|
"precio_unitario": 100,
|
||||||
|
"unidades": 4,
|
||||||
|
"fecha": "2024-09-17"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"concepto": "Dirección",
|
||||||
|
"precio_unitario": 800,
|
||||||
|
"unidades": 1,
|
||||||
|
"fecha": "2024-09-18"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"concepto": "Frenos",
|
||||||
|
"precio_unitario": 600,
|
||||||
|
"unidades": 1,
|
||||||
|
"fecha": "2024-09-19"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"concepto": "Neumáticos y llantas",
|
||||||
|
"precio_unitario": 250,
|
||||||
|
"unidades": 4,
|
||||||
|
"fecha": "2024-09-20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"concepto": "Elementos comerciales",
|
||||||
|
"precio_unitario": 400,
|
||||||
|
"unidades": 1,
|
||||||
|
"fecha": "2024-09-21"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"concepto": "Carrocería",
|
||||||
|
"precio_unitario": 1000,
|
||||||
|
"unidades": 1,
|
||||||
|
"fecha": "2024-09-22"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"concepto": "Cinturón",
|
||||||
|
"precio_unitario": 200,
|
||||||
|
"unidades": 1,
|
||||||
|
"fecha": "2024-09-23"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"concepto": "Equipos de protección",
|
||||||
|
"precio_unitario": 950,
|
||||||
|
"unidades": 1,
|
||||||
|
"fecha": "2024-09-24"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"concepto": "Logística",
|
||||||
|
"precio_unitario": 150,
|
||||||
|
"unidades": 1,
|
||||||
|
"fecha": "2024-09-25"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"concepto": "Equipamiento, GPS y velocímetro",
|
||||||
|
"precio_unitario": 25,
|
||||||
|
"unidades": 30,
|
||||||
|
"fecha": "2024-09-26"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"concepto": "Soportes para el vehículo",
|
||||||
|
"precio_unitario": 300,
|
||||||
|
"unidades": 1,
|
||||||
|
"fecha": "2024-09-27"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
8
ficheros/ingresos.csv
Normal file
8
ficheros/ingresos.csv
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
curso,proyecto,patrocinador,cantidad,observacion,fecha
|
||||||
|
2024/2025,Hiperbaric,Soluciones Nerva,1000,Donación para chasis,2024-09-15
|
||||||
|
2024/2025,Hiperbaric,Fibritel,1500,Donación para suspensión y elementos comerciales,2024-09-16
|
||||||
|
2024/2025,Hiperbaric,Karting Ángel Burgueño,800,Dirección,2024-09-17
|
||||||
|
2024/2025,Hiperbaric,Mann filter,950,Donación para equipos de protección,2024-09-18
|
||||||
|
2024/2025,Hiperbaric,IES Virgen de la Paloma,1000,Dietas y soportes para vehículo,2024-09-19
|
||||||
|
2024/2025,Hiperbaric,Acer logística,150,Logística,2024-09-20
|
||||||
|
2024/2025,Hiperbaric,Talleres TUDAM,700,Donación general,2024-09-21
|
||||||
|
55
pom.xml
Normal file
55
pom.xml
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>aadd_act4_3</groupId>
|
||||||
|
<artifactId>aadd_act4_3</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
|
||||||
|
<!-- Repositorio propio de ObjectDB -->
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>objectdb</id>
|
||||||
|
<name>ObjectDB Repository</name>
|
||||||
|
<url>https://m2.objectdb.com</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<!-- JACKSON para XML y JSON -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>tools.jackson.dataformat</groupId>
|
||||||
|
<artifactId>jackson-dataformat-xml</artifactId>
|
||||||
|
<version>3.0.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Dependencia de ObjectDB buscada en el repositorio propio de ObjectDB -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.objectdb</groupId>
|
||||||
|
<artifactId>objectdb-jk</artifactId>
|
||||||
|
<version>2.9.4</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Hibernate Core -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.hibernate.orm</groupId>
|
||||||
|
<artifactId>hibernate-core</artifactId>
|
||||||
|
<version>7.1.14.Final</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Jakarta Persistence API (requerida por Hibernate 7) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>jakarta.persistence</groupId>
|
||||||
|
<artifactId>jakarta.persistence-api</artifactId>
|
||||||
|
<version>3.2.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Source: https://mvnrepository.com/artifact/org.postgresql/postgresql -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.postgresql</groupId>
|
||||||
|
<artifactId>postgresql</artifactId>
|
||||||
|
<version>42.7.9</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
</project>
|
||||||
33
src/main/java/es/palomafp/aadd/inm/AppProyectosIES.java
Normal file
33
src/main/java/es/palomafp/aadd/inm/AppProyectosIES.java
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package es.palomafp.aadd.inm;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.procesador.ProcesadorFicheros;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* GestorMapaMundi: Clase que accede a información de la BBDD MapaMundi.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 26 sept 2025
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class AppProyectosIES {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
AppProyectosIES app = new AppProyectosIES();
|
||||||
|
|
||||||
|
// Generar la estructura de la base de datos en PostgreSQL
|
||||||
|
//GestorSesionesHibernate.getSession();
|
||||||
|
|
||||||
|
app.procesarFicheros();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void procesarFicheros() {
|
||||||
|
ProcesadorFicheros procesador = new ProcesadorFicheros();
|
||||||
|
|
||||||
|
procesador.procesarFicheroXMLCatalogos();
|
||||||
|
|
||||||
|
procesador.procesarFicheroJSONGastos();
|
||||||
|
|
||||||
|
procesador.procesarFicheroCSVIngresos();
|
||||||
|
}
|
||||||
|
}
|
||||||
23
src/main/java/es/palomafp/aadd/inm/dao/IContinenteDAO.java
Normal file
23
src/main/java/es/palomafp/aadd/inm/dao/IContinenteDAO.java
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.vo.Patrocinador;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* IContinenteDAO: Interfaz que define las operaciones de acceso a datos para
|
||||||
|
* Continente.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 31 oct 2025
|
||||||
|
*/
|
||||||
|
public interface IContinenteDAO {
|
||||||
|
Patrocinador obtenerContinentePorID(String codigo);
|
||||||
|
|
||||||
|
List<Patrocinador> obtenerListaContientes();
|
||||||
|
|
||||||
|
void crearContinente(Patrocinador continente);
|
||||||
|
|
||||||
|
void actualizarContinente(Patrocinador continente);
|
||||||
|
}
|
||||||
25
src/main/java/es/palomafp/aadd/inm/dao/IPaisDAO.java
Normal file
25
src/main/java/es/palomafp/aadd/inm/dao/IPaisDAO.java
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.vo.Gasto;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* IPaisDAO: Interfaz que define las operaciones de acceso a datos para País.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 31 oct 2025
|
||||||
|
*/
|
||||||
|
public interface IPaisDAO {
|
||||||
|
Gasto obtenerPaisPorID(int identificador);
|
||||||
|
|
||||||
|
List<Gasto> obtenerListaPaises();
|
||||||
|
|
||||||
|
void crearPais(Gasto pais);
|
||||||
|
|
||||||
|
void actualizarPais(Gasto pais);
|
||||||
|
|
||||||
|
Gasto obtenerPaisPorNombre(String nombre);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,52 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao.hbm;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.query.SelectionQuery;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.dao.IContinenteDAO;
|
||||||
|
import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate;
|
||||||
|
import es.palomafp.aadd.inm.vo.Patrocinador;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* ContinenteDaoJDBC: Clase que implementa el interfaz IContinenteDAO
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 31 oct 2025
|
||||||
|
*/
|
||||||
|
public class ContinenteDaoHibernate implements IContinenteDAO {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Patrocinador> obtenerListaContientes() {
|
||||||
|
List<Patrocinador> listaContinentes = null;
|
||||||
|
String sentenciaHQL = """
|
||||||
|
SELECT c
|
||||||
|
FROM Continente c
|
||||||
|
""";
|
||||||
|
// try con recursos "cerrables": Session
|
||||||
|
try (Session sesion = GestorSesionesHibernate.getSession();) {
|
||||||
|
SelectionQuery<Patrocinador> sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Patrocinador.class);
|
||||||
|
listaContinentes = sentenciaConsulta.getResultList();
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return listaContinentes;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void crearContinente(Patrocinador continente) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Patrocinador obtenerContinentePorID(String codigo) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actualizarContinente(Patrocinador continente) {
|
||||||
|
}
|
||||||
|
}
|
||||||
102
src/main/java/es/palomafp/aadd/inm/dao/hbm/PaisDaoHibernate.java
Normal file
102
src/main/java/es/palomafp/aadd/inm/dao/hbm/PaisDaoHibernate.java
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao.hbm;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.Transaction;
|
||||||
|
import org.hibernate.query.SelectionQuery;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.dao.IPaisDAO;
|
||||||
|
import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate;
|
||||||
|
import es.palomafp.aadd.inm.vo.Gasto;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* PaisDaoJDBC: Clase que implementa el interfaz IPaisDAO
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 31 oct 2025
|
||||||
|
*/
|
||||||
|
public class PaisDaoHibernate implements IPaisDAO {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Gasto> obtenerListaPaises() {
|
||||||
|
List<Gasto> listaPaises = null;
|
||||||
|
String sentenciaHQL = """
|
||||||
|
SELECT p
|
||||||
|
FROM Pais p
|
||||||
|
""";
|
||||||
|
|
||||||
|
// try con recursos "cerrables": Session
|
||||||
|
try (Session sesion = GestorSesionesHibernate.getSession();) {
|
||||||
|
|
||||||
|
SelectionQuery<Gasto> sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Gasto.class);
|
||||||
|
listaPaises = sentenciaConsulta.getResultList();
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return listaPaises;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actualizarPais(Gasto pais) {
|
||||||
|
Transaction transaccion = null;
|
||||||
|
Session sesion = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
sesion = GestorSesionesHibernate.getSession();
|
||||||
|
transaccion = sesion.beginTransaction();
|
||||||
|
|
||||||
|
if (!sesion.contains(pais))
|
||||||
|
sesion.merge(pais);
|
||||||
|
|
||||||
|
transaccion.commit();
|
||||||
|
} catch (Exception e) {
|
||||||
|
if (transaccion != null && transaccion.isActive()) {
|
||||||
|
transaccion.rollback();
|
||||||
|
}
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (sesion != null) {
|
||||||
|
sesion.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Gasto obtenerPaisPorID(int identificador) {
|
||||||
|
Gasto pais = null;
|
||||||
|
|
||||||
|
return pais;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void crearPais(Gasto pais) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Gasto obtenerPaisPorNombre(String nombre) {
|
||||||
|
Gasto pais = null;
|
||||||
|
String sentenciaHQL = """
|
||||||
|
SELECT p
|
||||||
|
FROM Pais p
|
||||||
|
where p.nombrePais = :nombre
|
||||||
|
""";
|
||||||
|
|
||||||
|
// try con recursos "cerrables": Session
|
||||||
|
try (Session sesion = GestorSesionesHibernate.getSession();) {
|
||||||
|
|
||||||
|
SelectionQuery<Gasto> sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Gasto.class);
|
||||||
|
sentenciaConsulta.setParameter("nombre", nombre);
|
||||||
|
pais = sentenciaConsulta.getSingleResult();
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return pais;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,90 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao.jpa;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.dao.IContinenteDAO;
|
||||||
|
import es.palomafp.aadd.inm.gestor.GestorEntityManagerJPA;
|
||||||
|
import es.palomafp.aadd.inm.vo.Patrocinador;
|
||||||
|
import jakarta.persistence.EntityManager;
|
||||||
|
import jakarta.persistence.EntityTransaction;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* ContinenteDaoJDBC: Clase que implementa el interfaz IContinenteDAO
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 31 oct 2025
|
||||||
|
*/
|
||||||
|
public class ContinenteDaoJPA implements IContinenteDAO {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Patrocinador obtenerContinentePorID(String codigo) {
|
||||||
|
Patrocinador continente = null;
|
||||||
|
|
||||||
|
// try con recursos "cerrables": Session
|
||||||
|
try (EntityManager gestorEntidades = GestorEntityManagerJPA.getEntityManager()) {
|
||||||
|
continente = gestorEntidades.find(Patrocinador.class, codigo);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return continente;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void crearContinente(Patrocinador continente) {
|
||||||
|
EntityManager gestorEntidades= null;
|
||||||
|
EntityTransaction transaccion = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
gestorEntidades = GestorEntityManagerJPA.getEntityManager();
|
||||||
|
transaccion = gestorEntidades.getTransaction();
|
||||||
|
transaccion .begin();
|
||||||
|
|
||||||
|
gestorEntidades.persist(continente);
|
||||||
|
|
||||||
|
transaccion.commit();
|
||||||
|
} catch (Exception e) {
|
||||||
|
if (transaccion != null && transaccion.isActive()) {
|
||||||
|
transaccion.rollback();
|
||||||
|
}
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (gestorEntidades != null) {
|
||||||
|
gestorEntidades.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actualizarContinente(Patrocinador continente) {
|
||||||
|
EntityManager gestorEntidades= null;
|
||||||
|
EntityTransaction transaccion = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
gestorEntidades = GestorEntityManagerJPA.getEntityManager();
|
||||||
|
transaccion = gestorEntidades.getTransaction();
|
||||||
|
transaccion .begin();
|
||||||
|
|
||||||
|
if (!gestorEntidades.contains(continente))
|
||||||
|
gestorEntidades.merge(continente);
|
||||||
|
|
||||||
|
transaccion.commit();
|
||||||
|
} catch (Exception e) {
|
||||||
|
if (transaccion != null && transaccion.isActive()) {
|
||||||
|
transaccion.rollback();
|
||||||
|
}
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (gestorEntidades != null) {
|
||||||
|
gestorEntidades.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Patrocinador> obtenerListaContientes() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
100
src/main/java/es/palomafp/aadd/inm/dao/jpa/PaisDaoJPA.java
Normal file
100
src/main/java/es/palomafp/aadd/inm/dao/jpa/PaisDaoJPA.java
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao.jpa;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.dao.IPaisDAO;
|
||||||
|
import es.palomafp.aadd.inm.gestor.GestorEntityManagerJPA;
|
||||||
|
import es.palomafp.aadd.inm.vo.Gasto;
|
||||||
|
import jakarta.persistence.EntityManager;
|
||||||
|
import jakarta.persistence.EntityTransaction;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* PaisDaoJPA: Clase que implementa el interfaz IPaisDAO
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 31 oct 2025
|
||||||
|
*/
|
||||||
|
public class PaisDaoJPA implements IPaisDAO {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Gasto obtenerPaisPorID(int identificador) {
|
||||||
|
Gasto pais = null;
|
||||||
|
|
||||||
|
// try con recursos "cerrables": Session
|
||||||
|
try (EntityManager gestorEntidades = GestorEntityManagerJPA.getEntityManager()) {
|
||||||
|
pais = gestorEntidades.find(Gasto.class, identificador);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return pais;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void crearPais(Gasto pais) {
|
||||||
|
EntityManager gestorEntidades = null;
|
||||||
|
EntityTransaction transaccion = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
gestorEntidades = GestorEntityManagerJPA.getEntityManager();
|
||||||
|
transaccion = gestorEntidades.getTransaction();
|
||||||
|
transaccion.begin();
|
||||||
|
|
||||||
|
gestorEntidades.persist(pais);
|
||||||
|
|
||||||
|
transaccion.commit();
|
||||||
|
} catch (Exception e) {
|
||||||
|
if (transaccion != null && transaccion.isActive()) {
|
||||||
|
transaccion.rollback();
|
||||||
|
}
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (gestorEntidades != null) {
|
||||||
|
gestorEntidades.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actualizarPais(Gasto pais) {
|
||||||
|
EntityManager gestorEntidades = null;
|
||||||
|
EntityTransaction transaccion = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
gestorEntidades = GestorEntityManagerJPA.getEntityManager();
|
||||||
|
transaccion = gestorEntidades.getTransaction();
|
||||||
|
transaccion.begin();
|
||||||
|
|
||||||
|
if (!gestorEntidades.contains(pais))
|
||||||
|
gestorEntidades.merge(pais);
|
||||||
|
|
||||||
|
transaccion.commit();
|
||||||
|
} catch (Exception e) {
|
||||||
|
if (transaccion != null && transaccion.isActive()) {
|
||||||
|
transaccion.rollback();
|
||||||
|
}
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (gestorEntidades != null) {
|
||||||
|
gestorEntidades.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Gasto> obtenerListaPaises() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Gasto obtenerPaisPorNombre(String nombre) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
package es.palomafp.aadd.inm.gestor;
|
||||||
|
|
||||||
|
import jakarta.persistence.EntityManager;
|
||||||
|
import jakarta.persistence.EntityManagerFactory;
|
||||||
|
import jakarta.persistence.Persistence;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* GestorEntityManagerJPA: Clase que realiza la gestión de EntityManagers de JPA.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 4 dic 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class GestorEntityManagerJPA {
|
||||||
|
private static EntityManagerFactory entityManagerFactory = null;
|
||||||
|
|
||||||
|
private GestorEntityManagerJPA() { // Constructor privado para evitar instanciación
|
||||||
|
}
|
||||||
|
|
||||||
|
// Carga la configuración desde META-INF/persistence.xml
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
entityManagerFactory = Persistence.createEntityManagerFactory("UP_PROYECTOSIES_ODB");
|
||||||
|
} catch (Throwable ex) {
|
||||||
|
System.err.println("Error en EntityManagerFactory: " + ex);
|
||||||
|
throw new ExceptionInInitializerError(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static EntityManager getEntityManager() {
|
||||||
|
return entityManagerFactory.createEntityManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void closeEntityManagerFactory() {
|
||||||
|
entityManagerFactory.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
package es.palomafp.aadd.inm.gestor;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* GestorConfiguracion: Clase que se encarga de gestionar la configuración de
|
||||||
|
* los ficheros.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 10 oct 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class GestorFicheroConfiguracion {
|
||||||
|
private final static String RUTA_FICHERO_CONFIGURACION = "conf.properties";
|
||||||
|
private static Properties propiedades = null;
|
||||||
|
|
||||||
|
private GestorFicheroConfiguracion() {
|
||||||
|
// Constructor privado para evitar instanciación
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bloque estático que se ejecuta una única vez al cargar la clase
|
||||||
|
static {
|
||||||
|
cargarPropiedadesFichero();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void cargarPropiedadesFichero() {
|
||||||
|
propiedades = new Properties();
|
||||||
|
try {
|
||||||
|
propiedades
|
||||||
|
.load(GestorFicheroConfiguracion.class.getClassLoader()
|
||||||
|
.getResourceAsStream(RUTA_FICHERO_CONFIGURACION));
|
||||||
|
} catch (IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getValorfromClave(String clave) {
|
||||||
|
return propiedades.getProperty(clave);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
package es.palomafp.aadd.inm.gestor;
|
||||||
|
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.SessionFactory;
|
||||||
|
import org.hibernate.cfg.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* GestorSesionesHibernate: Clase que realiza ....
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 4 dic 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class GestorSesionesHibernate {
|
||||||
|
private static SessionFactory sessionFactory = null;
|
||||||
|
|
||||||
|
private GestorSesionesHibernate() {// Constructor privado para evitar instanciación
|
||||||
|
}
|
||||||
|
|
||||||
|
// Carga la configuración desde hibernate.cfg.xml
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
sessionFactory = new Configuration().configure().buildSessionFactory();
|
||||||
|
} catch (Throwable ex) {
|
||||||
|
System.err.println("Error en SessionFactory: " + ex);
|
||||||
|
throw new ExceptionInInitializerError(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Session getSession() {
|
||||||
|
return sessionFactory.openSession();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Session getCurrentSession() {
|
||||||
|
return sessionFactory.getCurrentSession();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void cerrarFactoria() {
|
||||||
|
if (sessionFactory != null) {
|
||||||
|
sessionFactory.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,59 @@
|
|||||||
|
package es.palomafp.aadd.inm.procesador;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion;
|
||||||
|
import tools.jackson.databind.JsonNode;
|
||||||
|
import tools.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
|
public class ProcesadorFicheros {
|
||||||
|
|
||||||
|
public void procesarFicheroXMLCatalogos() {
|
||||||
|
String rutaFichero = GestorFicheroConfiguracion.getValorfromClave("catalogos.fichero.xml.ruta");
|
||||||
|
File fichero = new File(rutaFichero);
|
||||||
|
|
||||||
|
// Se asume que la información de Paises es correcta y ya existe en la BD
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
JsonNode root = mapper.readTree(fichero);
|
||||||
|
JsonNode nodoPeliculas = root.get("peliculas");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void procesarFicheroJSONGastos() {
|
||||||
|
String rutaFichero = GestorFicheroConfiguracion.getValorfromClave("gastos.fichero.json.ruta");
|
||||||
|
File fichero = new File(rutaFichero);
|
||||||
|
|
||||||
|
// Se asume que la información de Paises es correcta y ya existe en la BD
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
JsonNode root = mapper.readTree(fichero);
|
||||||
|
JsonNode nodoPeliculas = root.get("peliculas");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void procesarFicheroCSVIngresos() {
|
||||||
|
|
||||||
|
String rutaFichero = GestorFicheroConfiguracion.getValorfromClave("ingresos.fichero.csv.ruta");
|
||||||
|
File fichero = new File(rutaFichero);
|
||||||
|
|
||||||
|
try (BufferedReader lector = new BufferedReader(new FileReader(fichero));) {
|
||||||
|
String linea;
|
||||||
|
while ((linea = lector.readLine()) != null) {
|
||||||
|
// Procesar la línea leída
|
||||||
|
String[] campos = linea.split(",");
|
||||||
|
// Suponiendo que el CSV tiene dos columnas: id, ingreso
|
||||||
|
String id = campos[0];
|
||||||
|
String ingreso = campos[1];
|
||||||
|
// Aquí iría la lógica para procesar cada línea
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
33
src/main/java/es/palomafp/aadd/inm/vo/Concepto.java
Normal file
33
src/main/java/es/palomafp/aadd/inm/vo/Concepto.java
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package es.palomafp.aadd.inm.vo;
|
||||||
|
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Concepto: Clase que se usa para mapear la tabla de conceptos
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 5 dic 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name = "T_CONCEPTO")
|
||||||
|
public class Concepto {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@Column(name = "identificador")
|
||||||
|
private int identificador;
|
||||||
|
|
||||||
|
@Column(name = "nombre", length = 100, nullable = false, unique = true)
|
||||||
|
private String nombre;
|
||||||
|
|
||||||
|
@Column(name = "descripcion", length = 255)
|
||||||
|
private String descripcion;
|
||||||
|
}
|
||||||
36
src/main/java/es/palomafp/aadd/inm/vo/CursoAcademico.java
Normal file
36
src/main/java/es/palomafp/aadd/inm/vo/CursoAcademico.java
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package es.palomafp.aadd.inm.vo;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* CursoAcademico: Clase que se usa para mapear la tabla de Cursos Académicos.
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 5 dic 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name="T_CURSO_ACADEMICO")
|
||||||
|
public class CursoAcademico {
|
||||||
|
@Id
|
||||||
|
@Column(name="codigo", columnDefinition = "CHAR(9)")
|
||||||
|
private String codigo;
|
||||||
|
|
||||||
|
@Column(name="nombre", length=100, nullable = false, unique = true)
|
||||||
|
private String nombre;
|
||||||
|
|
||||||
|
@Column(name="fecha_inicio", nullable = false)
|
||||||
|
private LocalDate fechaInicio;
|
||||||
|
|
||||||
|
@Column(name="fecha_fin")
|
||||||
|
private LocalDate fechaFin;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
36
src/main/java/es/palomafp/aadd/inm/vo/CursoProyecto.java
Normal file
36
src/main/java/es/palomafp/aadd/inm/vo/CursoProyecto.java
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package es.palomafp.aadd.inm.vo;
|
||||||
|
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.FetchType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.JoinColumn;
|
||||||
|
import jakarta.persistence.ManyToOne;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* CursoProyecto: Clase que se usa para mapear la tabla de Proyectos de un Curso
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 5 dic 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name = "T_CURSO_PROYECTO")
|
||||||
|
public class CursoProyecto {
|
||||||
|
@Id
|
||||||
|
@Column(name = "identificador")
|
||||||
|
private int identificador;
|
||||||
|
|
||||||
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
|
@JoinColumn(name = "cod_curso", columnDefinition = "CHAR(9)", nullable = false)
|
||||||
|
private CursoAcademico cursoAcademico;
|
||||||
|
|
||||||
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
|
@JoinColumn(name = "id_proyecto", nullable = false)
|
||||||
|
private Proyecto proyecto;
|
||||||
|
|
||||||
|
}
|
||||||
49
src/main/java/es/palomafp/aadd/inm/vo/Gasto.java
Normal file
49
src/main/java/es/palomafp/aadd/inm/vo/Gasto.java
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
package es.palomafp.aadd.inm.vo;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.FetchType;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.JoinColumn;
|
||||||
|
import jakarta.persistence.ManyToOne;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Gasto: Clase que se usa para mapear la tabla de Gastos
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 5 dic 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name="T_GASTO")
|
||||||
|
public class Gasto {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@Column(name="identificador")
|
||||||
|
private int identificador;
|
||||||
|
|
||||||
|
@Column(name="num_unidades", nullable = false)
|
||||||
|
private int numeroUnidades;
|
||||||
|
|
||||||
|
@Column(name="precio_unidad", columnDefinition = "DECIMAL(10,2)", nullable = false)
|
||||||
|
private double precioUnidad;
|
||||||
|
|
||||||
|
@Column(name="fecha")
|
||||||
|
private LocalDate fecha;
|
||||||
|
|
||||||
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
|
@JoinColumn(name="id_concepto", nullable = false)
|
||||||
|
private Concepto concepto;
|
||||||
|
|
||||||
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
|
@JoinColumn(name="id_cursoproyecto", nullable = false)
|
||||||
|
private CursoProyecto cursoProyecto;
|
||||||
|
}
|
||||||
|
|
||||||
48
src/main/java/es/palomafp/aadd/inm/vo/Ingreso.java
Normal file
48
src/main/java/es/palomafp/aadd/inm/vo/Ingreso.java
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
package es.palomafp.aadd.inm.vo;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.FetchType;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.JoinColumn;
|
||||||
|
import jakarta.persistence.ManyToOne;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Ingreso: Clase que se usa para mapear la tabla de Ingresos
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 5 dic 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name="T_INGRESO")
|
||||||
|
public class Ingreso {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@Column(name="identificador")
|
||||||
|
private int identificador;
|
||||||
|
|
||||||
|
@Column(name="cantidad", columnDefinition = "DECIMAL(10,2)", nullable = false)
|
||||||
|
private double cantidad;
|
||||||
|
|
||||||
|
@Column(name="fecha")
|
||||||
|
private LocalDate fecha;
|
||||||
|
|
||||||
|
@Column(name="observacion")
|
||||||
|
private String observacion;
|
||||||
|
|
||||||
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
|
@JoinColumn(name="id_patrocinador", nullable = false)
|
||||||
|
private Patrocinador patrocinador;
|
||||||
|
|
||||||
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
|
@JoinColumn(name="id_cursoproyecto", nullable = false)
|
||||||
|
private CursoProyecto cursoProyecto;}
|
||||||
|
|
||||||
36
src/main/java/es/palomafp/aadd/inm/vo/Patrocinador.java
Normal file
36
src/main/java/es/palomafp/aadd/inm/vo/Patrocinador.java
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package es.palomafp.aadd.inm.vo;
|
||||||
|
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.Lob;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Patrocinador: Clase que se usa para mapear la tabla de patrocinadoes
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 5 dic 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name="T_PATROCINADOR")
|
||||||
|
public class Patrocinador {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@Column(name="identificador")
|
||||||
|
private int identificador;
|
||||||
|
|
||||||
|
@Column(name="nombre", length=100, nullable = false, unique = true)
|
||||||
|
private String nombre;
|
||||||
|
|
||||||
|
@Lob
|
||||||
|
@Column(name = "imagen")
|
||||||
|
private byte[] imagenLogo;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
36
src/main/java/es/palomafp/aadd/inm/vo/Proyecto.java
Normal file
36
src/main/java/es/palomafp/aadd/inm/vo/Proyecto.java
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package es.palomafp.aadd.inm.vo;
|
||||||
|
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Proyecto: Clase que se usa para mapear la tabla de Proyectos
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 5 dic 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name="T_PROYECTO")
|
||||||
|
public class Proyecto {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@Column(name="identificador")
|
||||||
|
private int identificador;
|
||||||
|
|
||||||
|
@Column(name="nombre", length=100, nullable = false, unique = true)
|
||||||
|
private String nombre;
|
||||||
|
|
||||||
|
@Column(name="descripcion", length=255)
|
||||||
|
private String descripcion;
|
||||||
|
|
||||||
|
@Column(name="url_logo", length=255)
|
||||||
|
private String urlLogo;
|
||||||
|
}
|
||||||
|
|
||||||
30
src/main/resources/META-INF/persistence.xml
Normal file
30
src/main/resources/META-INF/persistence.xml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="
|
||||||
|
http://xmlns.jcp.org/xml/ns/persistence
|
||||||
|
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
|
||||||
|
version="2.1">
|
||||||
|
|
||||||
|
<persistence-unit name="UP_PROYECTOSIES_ODB" transaction-type="RESOURCE_LOCAL">
|
||||||
|
<!-- Proveedor de persistencia JPA -->
|
||||||
|
<provider>com.objectdb.jpa.Provider</provider>
|
||||||
|
|
||||||
|
<!-- Mapeo de clases -->
|
||||||
|
<class>es.palomafp.aadd.inm.vo.Concepto</class>
|
||||||
|
<class>es.palomafp.aadd.inm.vo.Patrocinador</class>
|
||||||
|
<class>es.palomafp.aadd.inm.vo.Proyecto</class>
|
||||||
|
<class>es.palomafp.aadd.inm.vo.CursoAcademico</class>
|
||||||
|
<class>es.palomafp.aadd.inm.vo.CursoProyecto</class>
|
||||||
|
<class>es.palomafp.aadd.inm.vo.Gasto</class>
|
||||||
|
<class>es.palomafp.aadd.inm.vo.Ingreso</class>
|
||||||
|
|
||||||
|
<!-- Configuración de propiedades del SGDB (ObjectDB)-->
|
||||||
|
<properties>
|
||||||
|
<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>
|
||||||
|
</persistence-unit>
|
||||||
|
|
||||||
|
</persistence>
|
||||||
10
src/main/resources/conf.properties
Normal file
10
src/main/resources/conf.properties
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Información sobre fichero XML
|
||||||
|
catalogos.fichero.xml.ruta=ficheros/catalogos.xml
|
||||||
|
|
||||||
|
|
||||||
|
# Información sobre fichero JSON
|
||||||
|
gastos.fichero.json.ruta=ficheros/gastos.json
|
||||||
|
|
||||||
|
|
||||||
|
# Información sobre fichero CSV
|
||||||
|
ingresos.fichero.csv.ruta=ficheros/ingresos.csv
|
||||||
30
src/main/resources/hibernate.cfg.xml
Normal file
30
src/main/resources/hibernate.cfg.xml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<!DOCTYPE hibernate-configuration PUBLIC
|
||||||
|
"-//Hibernate/Hibernate Configuration DTD//EN"
|
||||||
|
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
|
||||||
|
<hibernate-configuration>
|
||||||
|
<session-factory>
|
||||||
|
<property name="connection.url">jdbc:postgresql://192.168.1.36:5432/proyectos_ies</property>
|
||||||
|
<property name="connection.driver_class">org.postgresql.Driver</property>
|
||||||
|
|
||||||
|
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
|
||||||
|
|
||||||
|
<property name="connection.username">vdlp</property>
|
||||||
|
<property name="connection.password">postgresql_123</property>
|
||||||
|
|
||||||
|
<!-- DB schema will be updated if needed -->
|
||||||
|
<property name="hbm2ddl.auto">create-drop</property>
|
||||||
|
<property name="show_sql">true</property>
|
||||||
|
<property name="format_sql">true</property>
|
||||||
|
|
||||||
|
<!-- Mapeo de clases -->
|
||||||
|
<mapping class="es.palomafp.aadd.inm.vo.Concepto"></mapping>
|
||||||
|
<mapping class="es.palomafp.aadd.inm.vo.Patrocinador"></mapping>
|
||||||
|
<mapping class="es.palomafp.aadd.inm.vo.Proyecto"></mapping>
|
||||||
|
<mapping class="es.palomafp.aadd.inm.vo.CursoAcademico"></mapping>
|
||||||
|
<mapping class="es.palomafp.aadd.inm.vo.CursoProyecto"></mapping>
|
||||||
|
<mapping class="es.palomafp.aadd.inm.vo.Gasto"></mapping>
|
||||||
|
<mapping class="es.palomafp.aadd.inm.vo.Ingreso"></mapping>
|
||||||
|
|
||||||
|
</session-factory>
|
||||||
|
</hibernate-configuration>
|
||||||
Loading…
Reference in New Issue
Block a user