Commit inicial

This commit is contained in:
IsidoroNM 2026-02-20 20:20:52 +01:00
commit 2725ebf0ea
36 changed files with 1886 additions and 0 deletions

41
.classpath Normal file
View 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
View File

@ -0,0 +1,3 @@
/bin/
*.class
/target/

23
.project Normal file
View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>examen_aadd_2trim_FP</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>

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8

View 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

View File

@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

View File

@ -0,0 +1,9 @@
a_tratar,cod_formacion, cod_instituto, anyo
S, 1, 1, 2021
S, 1, 2, 2022
S, 2, 1, 2022
S, 2, 2, 2021
N, 2, 3, 2023
S, 3, 1, 2024
S, 3, 3, 2024
S, 4, 3, 2020
1 a_tratar cod_formacion cod_instituto anyo
2 S 1 1 2021
3 S 1 2 2022
4 S 2 1 2022
5 S 2 2 2021
6 N 2 3 2023
7 S 3 1 2024
8 S 3 3 2024
9 S 4 3 2020

53
pom.xml Normal file
View File

@ -0,0 +1,53 @@
<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>FormacionProfesionalDAM2</groupId>
<artifactId>FormacionProfesionalDAM2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- Source: https://mvnrepository.com/artifact/org.mongodb/mongodb-driver-sync -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>5.6.2</version>
<scope>compile</scope>
</dependency>
<!-- Source: https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.8</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>9.5.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate.orm/hibernate-core -->
<dependency>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-core</artifactId>
<version>7.1.11.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/tools.jackson.dataformat/jackson-dataformat-xml -->
<dependency>
<groupId>tools.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>3.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.opencsv/opencsv -->
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.10</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,190 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2;
import java.util.List;
import org.comunidadmadrid.fp.dam2.dao.ICicloFormativoDAO;
import org.comunidadmadrid.fp.dam2.dao.IFormacionDAO;
import org.comunidadmadrid.fp.dam2.dao.IInstitutoDAO;
import org.comunidadmadrid.fp.dam2.dao.IInstitutoFormacionDAO;
import org.comunidadmadrid.fp.dam2.dao.hibernate.CicloFormativoDaoHibernate;
import org.comunidadmadrid.fp.dam2.dao.hibernate.FormacionDaoHibernate;
import org.comunidadmadrid.fp.dam2.dao.hibernate.InstitutoFormacionDaoHibernate;
import org.comunidadmadrid.fp.dam2.dao.jdbc.CicloFormativoDaoJDBC;
import org.comunidadmadrid.fp.dam2.dao.jpa.InstitutoDaoJPA;
import org.comunidadmadrid.fp.dam2.dao.mongodb.InstitutoDaoMongoDB;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.gestores.GestorFicheroConfiguracion;
import org.comunidadmadrid.fp.dam2.procesamiento.ProcesadorDatos;
import org.comunidadmadrid.fp.dam2.utilidades.GestorURLs;
import org.comunidadmadrid.fp.dam2.vo.CicloFormativo;
import org.comunidadmadrid.fp.dam2.vo.Formacion;
import org.comunidadmadrid.fp.dam2.vo.Instituto;
import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion;
/*
Organización: Virgen de la Paloma
Programador: Isidoro Nevares Martín
Fecha: 1 mar 2025
*/
public class ClasePrincipal {
/**
* @param args
*/
public static void main(String[] args) {
ClasePrincipal appPrincipal = new ClasePrincipal();
// GestorSesionHibernate.getSession();
try {
appPrincipal.tratarCiclosFormativos();
appPrincipal.tratarInstitutos();
appPrincipal.tratarFormaciones();
appPrincipal.tratarInstitutoFormacion();
} catch (FormacionException e) {
String mensajeError = "Error en la clase %s al realizar una operación de %s";
String operacion = "Operación desconocida";
int codigoError = e.getCodigoError();
switch (codigoError) {
case FormacionException.ERROR_GESTION_CONEXION:
operacion = "Gestión de Conexión";
break;
case FormacionException.ERROR_CONSULTA:
operacion = "Consulta";
break;
case FormacionException.ERROR_INSERCION:
operacion = "Inserción";
break;
case FormacionException.ERROR_BORRADO:
operacion = "Borrado";
break;
case FormacionException.ERROR_ACTUALIZACION:
operacion = "Actualización";
break;
}
mensajeError = String.format(mensajeError, e.getClaseOrigen().getName(), operacion);
System.err.println(mensajeError);
e.printStackTrace();
}
}
/**
* Tratamiento de información de Ciclos Formativos
*
* @throws FormacionException
*/
private void tratarCiclosFormativos() throws FormacionException {
// Se obtiene la lista de Ciclos formativos de PostgreSQL
ICicloFormativoDAO iCicloFormativoDAO = new CicloFormativoDaoJDBC();
List<CicloFormativo> listaCiclos = iCicloFormativoDAO.obtenerListCiclosFormativosActivos();
if (listaCiclos != null && listaCiclos.size() > 0) {
// Se prepara el AADD de Ciclo formativo para que se realice mediante Hibernate
iCicloFormativoDAO = new CicloFormativoDaoHibernate();
for (CicloFormativo cicloFormativo : listaCiclos) {
System.out.println(cicloFormativo);
if (cicloFormativo.getUrlLogo() != null) {
// Se carga la imagen a partir de la URL.
byte[] bytesImagen = GestorURLs.obtenerBytesImagenDeURL(cicloFormativo.getUrlLogo());
cicloFormativo.setImagenCiclo(bytesImagen);
}
// Se inserta el ciclo formativo mediante Hibernate
iCicloFormativoDAO.insertarCicloFormativo(cicloFormativo);
}
}
}
/**
* Tratamiento de información de Formaciones
*
* @throws FormacionException
*/
private void tratarFormaciones() throws FormacionException {
// Se obtiene la lista de Formaciones a partir de una URL
String urlFormaciones = GestorFicheroConfiguracion.obtenerValor("url.formaciones");
ProcesadorDatos procesador = new ProcesadorDatos();
List<Formacion> listaFormaciones = procesador.obtenerFormacionesDeURL(urlFormaciones);
if (listaFormaciones != null && listaFormaciones.size() > 0) {
// Se prepara el AADD de Formación para que se realice mediante Hibernate
IFormacionDAO iFormacionDAO = new FormacionDaoHibernate();
for (Formacion formacion : listaFormaciones) {
System.out.println(formacion);
iFormacionDAO.insertarFormacion(formacion);
}
}
}
/**
* Tratamiento de información de Institutos
*
* @throws FormacionException
*/
private void tratarInstitutos() throws FormacionException {
// Se obtiene la lista de Institutos a partir de MongoDB
IInstitutoDAO institutoDAO = new InstitutoDaoMongoDB();
List<Instituto> listaInstitutos = institutoDAO.obtenerListaInstitutos();
if (listaInstitutos != null) {
// Se prepara el AADD de Instituto para que se realice mediante Hibernate
institutoDAO = new InstitutoDaoJPA();
for (Instituto instituto : listaInstitutos) {
// Se obiene el instituto en la BBDD
Instituto institutoBBDD = institutoDAO.obtenerInstitutoPorID(instituto.getIdentificador());
System.out.println("instituto: " + instituto);
System.out.println("institutoBBDD: " + institutoBBDD);
if (institutoBBDD == null) // Si no existen en la BBDD se inserta
institutoDAO.insertarInstituto(instituto);
else // En caso contrario se actualizar
institutoDAO.actualizarInstituto(instituto);
}
}
}
/**
* Tratamiento de información de Instituto Formación
*
* @throws FormacionException
*/
private void tratarInstitutoFormacion() throws FormacionException {
// Se obtiene la lista de Instituto Formación a partir de un fichero en CSV
String rutaCSVInstitutoFormacion = GestorFicheroConfiguracion.obtenerValor("ruta.csv");
ProcesadorDatos procesador = new ProcesadorDatos();
List<InstitutoFormacion> listaInstitutosFormaciones = procesador
.obtenerInstitutoFormacionDeFicheroCSV(rutaCSVInstitutoFormacion);
if (listaInstitutosFormaciones != null && listaInstitutosFormaciones.size() > 0) {
// Se prepara el AADD de InstitutoFormacion para que se realice mediante
// Hibernate
IInstitutoFormacionDAO iInstitutoFormacionDAO = new InstitutoFormacionDaoHibernate();
for (InstitutoFormacion institutoFormacion : listaInstitutosFormaciones) {
System.out.println(institutoFormacion);
iInstitutoFormacionDAO.insertarInstitutoFormacion(institutoFormacion);
}
}
}
}

View File

@ -0,0 +1,30 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.dao;
import java.util.List;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.vo.CicloFormativo;
/*
Organización: Virgen de la Paloma
Programador: Isidoro Nevares Martín
Fecha: 1 mar 2025
*/
public interface ICicloFormativoDAO {
/**
*
* @return
* @throws FormacionException
*/
List<CicloFormativo> obtenerListCiclosFormativosActivos() throws FormacionException;
/**
*
* @param ciclo
* @throws FormacionException
*/
void insertarCicloFormativo(CicloFormativo ciclo) throws FormacionException;
}

View File

@ -0,0 +1,21 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.dao;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.vo.Formacion;
/*
Organización: Virgen de la Paloma
Programador: Isidoro Nevares Martín
Fecha: 1 mar 2025
*/
public interface IFormacionDAO {
/**
*
* @param formacion
* @throws FormacionException
*/
void insertarFormacion(Formacion formacion) throws FormacionException;
}

View File

@ -0,0 +1,46 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.dao;
import java.util.List;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.vo.Instituto;
/*
Organización: Virgen de la Paloma
Programador: Isidoro Nevares Martín
Fecha: 1 mar 2025
*/
public interface IInstitutoDAO {
/**
*
* @return
* @throws FormacionException
*/
List<Instituto> obtenerListaInstitutos() throws FormacionException;
/**
*
* @param identificador
* @return
* @throws FormacionException
*/
Instituto obtenerInstitutoPorID(int identificador) throws FormacionException;
/**
*
* @param instituto
* @throws FormacionException
*/
void insertarInstituto(Instituto instituto) throws FormacionException;
/**
*
* @param instituto
* @throws FormacionException
*/
void actualizarInstituto(Instituto instituto) throws FormacionException;
}

View File

@ -0,0 +1,21 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.dao;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion;
/*
Organización: Virgen de la Paloma
Programador: Isidoro Nevares Martín
Fecha: 1 mar 2025
*/
public interface IInstitutoFormacionDAO {
/**
*
* @param institutoFormacion
* @throws FormacionException
*/
void insertarInstitutoFormacion(InstitutoFormacion institutoFormacion) throws FormacionException;
}

View File

@ -0,0 +1,53 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.dao.hibernate;
import java.util.List;
import org.comunidadmadrid.fp.dam2.dao.ICicloFormativoDAO;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.gestores.GestorSesionHibernate;
import org.comunidadmadrid.fp.dam2.vo.CicloFormativo;
import org.hibernate.Session;
import org.hibernate.Transaction;
/**
* Organización: Virgen de la Paloma
* Programador: Isidoro Nevares Martín
* Fecha: 26 marzo 2026
*/
public class CicloFormativoDaoHibernate implements ICicloFormativoDAO {
@Override
public List<CicloFormativo> obtenerListCiclosFormativosActivos() throws FormacionException {
List<CicloFormativo> listaCiclosFormativos = null;
return listaCiclosFormativos;
}
@Override
public void insertarCicloFormativo(CicloFormativo ciclo) throws FormacionException {
Transaction transaccion = null;
Session sesion = null;
try {
sesion = GestorSesionHibernate.getSession();
transaccion = sesion.beginTransaction();
sesion.persist(ciclo);
transaccion.commit();
} catch (Exception e) {
if (transaccion != null && transaccion.isActive()) {
transaccion.rollback();
}
throw new FormacionException(e, FormacionException.ERROR_INSERCION, getClass());
} finally {
if (sesion != null) {
sesion.close();
}
}
}
}

View File

@ -0,0 +1,45 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.dao.hibernate;
import org.comunidadmadrid.fp.dam2.dao.IFormacionDAO;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.gestores.GestorSesionHibernate;
import org.comunidadmadrid.fp.dam2.vo.Formacion;
import org.hibernate.Session;
import org.hibernate.Transaction;
/**
* Organización: Virgen de la Paloma
* Programador: Isidoro Nevares Martín
* Fecha: 26 marzo 2026
*/
public class FormacionDaoHibernate implements IFormacionDAO{
@Override
public void insertarFormacion(Formacion formacion) throws FormacionException {
Transaction transaccion=null;
Session sesion = null;
try {
sesion = GestorSesionHibernate.getSession();
transaccion = sesion.beginTransaction();
sesion.persist(formacion);
transaccion.commit();
} catch (Exception e) {
if (transaccion != null && transaccion.isActive()) {
transaccion.rollback();
}
throw new FormacionException(e, FormacionException.ERROR_INSERCION, getClass());
} finally {
if (sesion != null) {
sesion.close();
}
}
}
}

View File

@ -0,0 +1,43 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.dao.hibernate;
import org.comunidadmadrid.fp.dam2.dao.IInstitutoFormacionDAO;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.gestores.GestorSesionHibernate;
import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion;
import org.hibernate.Session;
import org.hibernate.Transaction;
/**
* Organización: Virgen de la Paloma
* Programador: Isidoro Nevares Martín
* Fecha: 26 marzo 2026
*/
public class InstitutoFormacionDaoHibernate implements IInstitutoFormacionDAO{
@Override
public void insertarInstitutoFormacion(InstitutoFormacion institutoFormacion) throws FormacionException {
Transaction transaccion=null;
Session sesion = null;
try {
sesion = GestorSesionHibernate.getSession();
transaccion = sesion.beginTransaction();
sesion.persist(institutoFormacion);
transaccion.commit();
} catch (Exception e) {
if (transaccion != null && transaccion.isActive()) {
transaccion.rollback();
}
throw new FormacionException(e, FormacionException.ERROR_INSERCION, getClass());
} finally {
if (sesion != null) {
sesion.close();
}
}
}
}

View File

@ -0,0 +1,77 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.dao.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.comunidadmadrid.fp.dam2.dao.ICicloFormativoDAO;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.gestores.GestorConexionJDBC;
import org.comunidadmadrid.fp.dam2.vo.CicloFormativo;
/*
Organización: Virgen de la Paloma
Programador: Isidoro Nevares Martín
Fecha: 1 mar 2025
*/
public class CicloFormativoDaoJDBC implements ICicloFormativoDAO{
private Connection conexion=null;
@Override
public List<CicloFormativo> obtenerListCiclosFormativosActivos() throws FormacionException {
List<CicloFormativo> listaCiclosFormativos=null;
String sentenciaSQL= """
SELECT * FROM T_CICLO_FORMATIVO cf
WHERE cf.activo='S'
""";
ResultSet resultadoSentencia=null;
// try con recursos "cerrables": Connection, Statement
try (Connection conexion = GestorConexionJDBC.getConexionSGDB();
PreparedStatement sentenciaJDBCPreparada = conexion.prepareStatement(sentenciaSQL);) {
System.out.println(sentenciaJDBCPreparada);
resultadoSentencia = sentenciaJDBCPreparada.executeQuery();
if (resultadoSentencia!= null)
listaCiclosFormativos= new ArrayList<CicloFormativo>();
while (resultadoSentencia.next()) {
CicloFormativo cicloFormativo= new CicloFormativo();
cicloFormativo.setIdentificador(resultadoSentencia.getInt("identificador"));
cicloFormativo.setDescripcion(resultadoSentencia.getString("desc_ciclo") );
cicloFormativo.setNombre(resultadoSentencia.getString("nom_corto"));
cicloFormativo.setUrlLogo(resultadoSentencia.getString("url_img_logo"));
listaCiclosFormativos.add(cicloFormativo);
}
} catch (Exception e) {
throw new FormacionException(e, FormacionException.ERROR_CONSULTA, getClass());
}finally {
if(conexion!=null) {
try {
conexion.close();
} catch (SQLException e) {
throw new FormacionException(e, FormacionException.ERROR_CONSULTA, getClass());
}
}
}
return listaCiclosFormativos;
}
@Override
public void insertarCicloFormativo(CicloFormativo ciclo) throws FormacionException {
// TODO Auto-generated method stub
}
}

View File

@ -0,0 +1,102 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.dao.jpa;
import java.util.List;
import org.comunidadmadrid.fp.dam2.dao.IInstitutoDAO;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.gestores.GestorEntityManagerJPA;
import org.comunidadmadrid.fp.dam2.vo.Instituto;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityTransaction;
/*
Organización: Virgen de la Paloma
Programador: Isidoro Nevares Martín
Fecha: 1 mar 2025
*/
public class InstitutoDaoJPA implements IInstitutoDAO {
@Override
public Instituto obtenerInstitutoPorID(int identificador) throws FormacionException {
Instituto instituto =null;
EntityManager gestorEntidades = null;
try {
gestorEntidades= GestorEntityManagerJPA.getEntityManager();
instituto=gestorEntidades.find(Instituto.class, identificador);
} catch (Exception e) {
throw new FormacionException(e, FormacionException.ERROR_CONSULTA, getClass());
}
finally {
if(gestorEntidades!=null) {
gestorEntidades.close();
}
}
return instituto;
}
@Override
public void insertarInstituto(Instituto instituto) throws FormacionException {
EntityManager gestorEntidades = null;
EntityTransaction transaccion = null;
try {
gestorEntidades = GestorEntityManagerJPA.getEntityManager();
transaccion = gestorEntidades.getTransaction();
transaccion.begin();
gestorEntidades.persist(instituto);
transaccion.commit();
} catch (Exception e) {
if (transaccion != null && transaccion.isActive()) {
transaccion.rollback();
}
throw new FormacionException(e, FormacionException.ERROR_INSERCION, getClass());
} finally {
if (gestorEntidades != null) {
gestorEntidades.close();
}
}
}
@Override
public void actualizarInstituto(Instituto instituto) throws FormacionException {
EntityManager gestorEntidades = null;
EntityTransaction transaccion = null;
try {
gestorEntidades= GestorEntityManagerJPA.getEntityManager();
transaccion=gestorEntidades.getTransaction();
// Inicia transacción
transaccion.begin();
// Para poder actulizarse ha de encontarse en el ámbito del entityManager
if (!gestorEntidades.contains(instituto))
gestorEntidades.merge(instituto);
// Confirma transacción
transaccion.commit();
} catch (Exception e) {
throw new FormacionException(e, FormacionException.ERROR_ACTUALIZACION, getClass());
} finally {
if(gestorEntidades!=null) {
gestorEntidades.close();
}
}
}
@Override
public List<Instituto> obtenerListaInstitutos() throws FormacionException {
return null;
}
}

View File

@ -0,0 +1,88 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.dao.mongodb;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import org.comunidadmadrid.fp.dam2.dao.IInstitutoDAO;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.gestores.GestorConexionMongoDB;
import org.comunidadmadrid.fp.dam2.vo.Instituto;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
/*
Organización: Virgen de la Paloma
Programador: Isidoro Nevares Martín
Fecha: 1 mar 2025
*/
public class InstitutoDaoMongoDB implements IInstitutoDAO{
private final static String COLECCION = "c_instituto";
@Override
public List<Instituto> obtenerListaInstitutos() throws FormacionException {
List<Instituto> listaInstitutos = null;
MongoCollection<Document> coleccionMongoDB = null;
try {
coleccionMongoDB = GestorConexionMongoDB.getMongoDatabase().getCollection(COLECCION);
// Obtener todos los documentos
FindIterable<Document> documentosEncontrados = coleccionMongoDB.find();
// Crear una lista para almacenar los coches
if (documentosEncontrados!=null) {
listaInstitutos = new ArrayList<Instituto>();
// Iterar sobre los documentos y convertirlos en objetos Coche
for (Document doc : documentosEncontrados) {
String identificador= doc.getString("_id");
String nombre = doc.getString("nombre");
String direccion = doc.getString("direccion");
String anyoCreacion = doc.getString("anyo_creacion");
Document documentoContacto =(Document) doc.get("contacto");
String email = documentoContacto.getString("email_contacto");
String telefonoContacto = documentoContacto.getString("telefono_contacto");
String urlPaginaWeb = documentoContacto.getString("url_pagina_web");
// Crear un objeto Instituto y agregarlo a la lista
Instituto instituto = new Instituto();
instituto.setIdentificador(Integer.parseInt(identificador));
instituto.setNombre(nombre);
instituto.setDireccion(direccion);
instituto.setEmail(email);
instituto.setTelefono(telefonoContacto);
instituto.setPaginaWeb(urlPaginaWeb);
instituto.setAnyoCreacion(Integer.parseInt(anyoCreacion));
listaInstitutos.add(instituto);
}
}
} catch (Exception e) {
throw new FormacionException(e, FormacionException.ERROR_CONSULTA, getClass());
}
return listaInstitutos;
}
@Override
public void insertarInstituto(Instituto instituto) throws FormacionException {
// TODO Auto-generated method stub
}
@Override
public Instituto obtenerInstitutoPorID(int identificador) throws FormacionException {
// TODO Auto-generated method stub
return null;
}
@Override
public void actualizarInstituto(Instituto instituto) throws FormacionException {
// TODO Auto-generated method stub
}
}

View File

@ -0,0 +1,40 @@
package org.comunidadmadrid.fp.dam2.excepcion;
public class FormacionException extends Exception {
private static final long serialVersionUID = 1L;
public static final int ERROR_GENERAL = 0;
public static final int ERROR_GESTION_CONEXION = 1;
public static final int ERROR_CONSULTA = 2;
public static final int ERROR_INSERCION = 3;
public static final int ERROR_ACTUALIZACION = 4;
public static final int ERROR_BORRADO = 5;
private int codigoError;
private Class<?> claseOrigen;
@SuppressWarnings("rawtypes")
public FormacionException(Exception excepcion, int tipoError, Class claseOrigenError) {
super(excepcion);
this.codigoError = tipoError;
this.claseOrigen = claseOrigenError;
}
public int getCodigoError() {
return codigoError;
}
public void setCodigoError(int codigoError) {
this.codigoError = codigoError;
}
public Class<?> getClaseOrigen() {
return claseOrigen;
}
public void setClaseOrigen(Class<?> claseOrigen) {
this.claseOrigen = claseOrigen;
}
}

View File

@ -0,0 +1,35 @@
package org.comunidadmadrid.fp.dam2.gestores;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
public class GestorConexionJDBC {
// Evita que pueda construirse un objeto de la clase.
private GestorConexionJDBC() {}
public static Connection getConexionSGDB() throws FormacionException{
Connection conexionSGDB = null;
// Datos URL
String urlBBDD =GestorFicheroConfiguracion.obtenerValor("jdbc.url");
String usuario = GestorFicheroConfiguracion.obtenerValor("jdbc.usuario");
String contrasenya =GestorFicheroConfiguracion.obtenerValor("jdbc.password");
try {
String claseDriver= GestorFicheroConfiguracion.obtenerValor("jdbc.driver");
Class.forName(claseDriver);
conexionSGDB = DriverManager.getConnection(urlBBDD, usuario, contrasenya);
} catch (SQLException | ClassNotFoundException e) {
throw new FormacionException(e, FormacionException.ERROR_GESTION_CONEXION, GestorConexionJDBC.class);
}
return conexionSGDB;
}
}

View File

@ -0,0 +1,39 @@
package org.comunidadmadrid.fp.dam2.gestores;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
/**
*
* GestorConexionMongoDB: Clase que realiza la gestión de Conexiones a MongoDB.
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 30 enero 2026
*
*
*/
public class GestorConexionMongoDB {
private static MongoDatabase mongoDBDatabase= null;
private GestorConexionMongoDB() { // Constructor privado para evitar instanciación
}
// Carga la configuración desde META-INF/persistence.xml
static {
// Cadena de conexion con la base de datos MongoDB
String uri = GestorFicheroConfiguracion.obtenerValor("mongodb.url");
// Se abre la conexión con MongoDB
MongoClient clienteMongo = MongoClients.create(uri);
// Obtener una base de datos MongoDB desde Java
String bbddMongoDB= GestorFicheroConfiguracion.obtenerValor("mongodb.bbdd");
mongoDBDatabase = clienteMongo.getDatabase(bbddMongoDB);
}
public static MongoDatabase getMongoDatabase() {
return mongoDBDatabase;
}
}

View File

@ -0,0 +1,41 @@
package org.comunidadmadrid.fp.dam2.gestores;
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_FormacionFP_HBT");
} 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();
}
}

View File

@ -0,0 +1,40 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.gestores;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 20 feb 2026
*
*/
public class GestorFicheroConfiguracion {
private static final Properties PROPIEDADES = new Properties();
static {
try (InputStream is = GestorFicheroConfiguracion.class.getClassLoader()
.getResourceAsStream("formacion.properties")) {
if (is != null) {
PROPIEDADES.load(is);
} else {
throw new IllegalStateException("No se encontró application.properties en el classpath");
}
} catch (IOException e) {
throw new IllegalStateException("Error al cargar application.properties", e);
}
}
/**
* Obtiene el valor asociado a la clave especificada.
*
* @param clave la clave a buscar
* @return el valor o {@code null} si no existe
*/
public static String obtenerValor(String clave) {
return PROPIEDADES.getProperty(clave);
}
}

View File

@ -0,0 +1,45 @@
package org.comunidadmadrid.fp.dam2.gestores;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
*
* GestorSesionesHibernate: Clase que gestiona las sesiones de Hibernate
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 20 feb 2026
*
*/
public class GestorSesionHibernate {
private static SessionFactory sessionFactory = null;
private GestorSesionHibernate() {// 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();
}
}
}

View File

@ -0,0 +1,82 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.procesamiento;
import com.fasterxml.jackson.annotation.JsonProperty;
import tools.jackson.dataformat.xml.annotation.JacksonXmlProperty;
/*
Organización: Virgen de la Paloma
Programador: Isidoro Nevares Martín
Fecha: 1 mar 2025
*/
public class FormacionXML {
@JacksonXmlProperty(isAttribute = true, localName = "id_formacion")
private int identificador;
@JacksonXmlProperty(isAttribute = true, localName = "formacion_distancia")
private String formacionDistantica;
@JsonProperty(value = "nombre_corto")
private String nombreCorto;
@JsonProperty(value = "cod_ciclo_formativo")
private int codigoCicloFormativo;
@JsonProperty(value = "es_formacion_stem")
private int esFormacionSTEM;
@JsonProperty(value = "informacion_adicional")
private Object informacionAdicional;
public int getIdentificador() {
return identificador;
}
public void setIdentificador(int identificador) {
this.identificador = identificador;
}
public String getFormacionDistantica() {
return formacionDistantica;
}
public void setFormacionDistantica(String formacionDistantica) {
this.formacionDistantica = formacionDistantica;
}
public String getNombreCorto() {
return nombreCorto;
}
public void setNombreCorto(String nombreCorto) {
this.nombreCorto = nombreCorto;
}
public int getCodigoCicloFormativo() {
return codigoCicloFormativo;
}
public void setCodigoCicloFormativo(int codigoCicloFormativo) {
this.codigoCicloFormativo = codigoCicloFormativo;
}
public int getEsFormacionSTEM() {
return esFormacionSTEM;
}
public void setEsFormacionSTEM(int esFormacionSTEM) {
this.esFormacionSTEM = esFormacionSTEM;
}
public Object getInformacionAdicional() {
return informacionAdicional;
}
public void setInformacionAdicional(Object informacionAdicional) {
this.informacionAdicional = informacionAdicional;
}
}

View File

@ -0,0 +1,64 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.procesamiento;
import com.opencsv.bean.CsvBindByName;
/**
* Organización: Virgen de la Paloma
* Programador: Isidoro Nevares Martín
* Fecha: 26 marzo 2026
*/
public class InstitutoFormacionCSV {
@CsvBindByName(column = "a_tratar")
private String filaTratar;
@CsvBindByName(column = "cod_instituto")
private int codigoInstituto;
@CsvBindByName(column = "cod_formacion")
private int codigoFormacio;
@CsvBindByName(column = "anyo")
private int anyoAcademico;
public String getFilaTratar() {
return filaTratar;
}
public void setFilaTratar(String filaTratar) {
this.filaTratar = filaTratar;
}
public int getCodigoInstituto() {
return codigoInstituto;
}
public void setCodigoInstituto(int codigoInstituto) {
this.codigoInstituto = codigoInstituto;
}
public int getCodigoFormacio() {
return codigoFormacio;
}
public void setCodigoFormacio(int codigoFormacio) {
this.codigoFormacio = codigoFormacio;
}
public int getAnyoAcademico() {
return anyoAcademico;
}
public void setAnyoAcademico(int anyoAcademico) {
this.anyoAcademico = anyoAcademico;
}
@Override
public String toString() {
return "InstitutoFormacionCSV [filaTratar=" + filaTratar + ", codigoInstituto=" + codigoInstituto
+ ", codigoFormacio=" + codigoFormacio + ", anyoAcademico=" + anyoAcademico + "]";
}
}

View File

@ -0,0 +1,134 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.procesamiento;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import org.comunidadmadrid.fp.dam2.utilidades.GestorURLs;
import org.comunidadmadrid.fp.dam2.vo.CicloFormativo;
import org.comunidadmadrid.fp.dam2.vo.Formacion;
import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion;
import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion.InstitutoFormacionID;
import com.opencsv.bean.CsvToBeanBuilder;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.dataformat.xml.XmlMapper;
/*
Organización: Virgen de la Paloma
Programador: Isidoro Nevares Martín
Fecha: 1 mar 2025
*/
public class ProcesadorDatos {
/**
*
* @param urlFormaciones
* @return
*/
public List<Formacion> obtenerFormacionesDeURL(String urlFormaciones) {
List<Formacion> listaFormaciones = null;
String informacionFormacionesXML = GestorURLs.getTextoFromURL(urlFormaciones);
ObjectMapper mapeadorXML = new XmlMapper();
// obtener Formaciones XMl a partir de la URL
FormacionXML[] arrayFormaciones = mapeadorXML.readValue(informacionFormacionesXML, FormacionXML[].class);
if (arrayFormaciones != null && arrayFormaciones.length > 0) {
listaFormaciones = new ArrayList<Formacion>();
for (FormacionXML formacionXML : arrayFormaciones) {
// Se convierte un onjeto de tipo Fomarciones XMl en otro de tipo Formacion
Formacion formacion = obtenerFormacionDeFormacionXML(formacionXML);
if (formacion != null)
listaFormaciones.add(formacion);
}
}
return listaFormaciones;
}
/**
*
* @param rutaCSVInstitutoFormacion
* @return
*/
@SuppressWarnings("unchecked")
public List<InstitutoFormacion> obtenerInstitutoFormacionDeFicheroCSV(String rutaCSVInstitutoFormacion) {
List<InstitutoFormacion> listaInstitutosFormaciones = null;
try {
@SuppressWarnings({ "rawtypes" })
// obtener InstitutoFormacion CSV a partir de la ruta del fichero CSV
List<InstitutoFormacionCSV> listaInstitutosFormacionesCSV = new CsvToBeanBuilder(
new FileReader(rutaCSVInstitutoFormacion)).withType(InstitutoFormacionCSV.class).withSeparator(',')
.build().parse();
if (listaInstitutosFormacionesCSV != null && listaInstitutosFormacionesCSV.size() > 0) {
listaInstitutosFormaciones = new ArrayList<InstitutoFormacion>();
for (InstitutoFormacionCSV institutoFormacionCSV : listaInstitutosFormacionesCSV) {
// Se convierte un onjeto de tipo InstitutoFormacion CSV en otro de tipo
// InstitutoFormacion
InstitutoFormacion institutoFormacion = obtenerInstituoFormacionDeInstituoFormacionCSV(
institutoFormacionCSV);
if (institutoFormacion != null)
listaInstitutosFormaciones.add(institutoFormacion);
}
}
} catch (IllegalStateException | FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return listaInstitutosFormaciones;
}
/**
*
* @param formacionXML
* @return
*/
private Formacion obtenerFormacionDeFormacionXML(FormacionXML formacionXML) {
Formacion formacion = null;
if (formacionXML != null) {
formacion = new Formacion();
formacion.setIdentificador(formacionXML.getIdentificador());
int formacionSTEM = formacionXML.getEsFormacionSTEM();
if (formacionSTEM == 1)
formacion.setIndicadorSTEM(true);
else
formacion.setIndicadorSTEM(false);
formacion.setNombreCorto(formacionXML.getNombreCorto());
CicloFormativo ciclo = new CicloFormativo();
ciclo.setIdentificador(formacionXML.getCodigoCicloFormativo());
formacion.setCicloFormativo(ciclo);
}
return formacion;
}
/**
*
* @param institutoFormacionCSV
* @return
*/
private InstitutoFormacion obtenerInstituoFormacionDeInstituoFormacionCSV(
InstitutoFormacionCSV institutoFormacionCSV) {
InstitutoFormacion institutoFormacion = null;
if (institutoFormacionCSV != null) {
if (institutoFormacionCSV.getFilaTratar().equals("S")) {
institutoFormacion = new InstitutoFormacion();
InstitutoFormacionID claveInstitoFormacion = new InstitutoFormacionID(
institutoFormacionCSV.getCodigoInstituto(), institutoFormacionCSV.getCodigoFormacio());
institutoFormacion.setIdInstitutoFormacion(claveInstitoFormacion);
institutoFormacion.setAnyoAcademico(institutoFormacionCSV.getAnyoAcademico());
}
}
return institutoFormacion;
}
}

View File

@ -0,0 +1,67 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.utilidades;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
/*
Organización: Virgen de la Paloma
Programador: Isidoro Nevares Martín
Fecha: 12 dic 2024
*/
public class GestorURLs {
// Evita que pueda construirse un objeto de la clase.
private GestorURLs() {
}
/**
*
* @param rutaURL
* @return
*/
public static String getTextoFromURL(String rutaURL) {
String resultadoURL = null;
HttpClient cliente = HttpClient.newHttpClient();
URI uriPrueba = URI.create(rutaURL);
HttpRequest request = HttpRequest.newBuilder().uri(uriPrueba).GET().build();
try {
HttpResponse<String> respuesta = cliente.send(request, BodyHandlers.ofString());
resultadoURL = respuesta.body();
} catch (IOException | InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return resultadoURL;
}
/**
*
* @param urlImagen
* @return
*/
public static byte[] obtenerBytesImagenDeURL(String urlImagen) {
byte[] bytesImagen = null;
HttpClient cliente = HttpClient.newHttpClient();
URI uriImagen = URI.create(urlImagen);
HttpRequest request = HttpRequest.newBuilder().uri(uriImagen).GET().build();
try {
HttpResponse<byte[]> respuesta = cliente.send(request, BodyHandlers.ofByteArray());
bytesImagen = respuesta.body();
} catch (IOException | InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bytesImagen;
}
}

View File

@ -0,0 +1,87 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.vo;
import java.util.Arrays;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Lob;
import jakarta.persistence.Table;
/**
* Organización: Virgen de la Paloma
* Programador: Isidoro Nevares Martín
* Fecha: 26 marzo 2026
*/
@Entity
@Table(name="T_CICLO_FORMATIVO")
public class CicloFormativo {
@Id
private int identificador;
@Column(name="nombre")
private String nombre;
@Column(name="descripcion")
private String descripcion;
@Column(name="url_logo")
private String urlLogo;
@Column(name="imagen_ciclo", columnDefinition = "LONGBLOB")
@Lob
private byte[] imagenCiclo;
public int getIdentificador() {
return identificador;
}
public void setIdentificador(int identificador) {
this.identificador = identificador;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public String getUrlLogo() {
return urlLogo;
}
public void setUrlLogo(String urlLogo) {
this.urlLogo = urlLogo;
}
public byte[] getImagenCiclo() {
return imagenCiclo;
}
public void setImagenCiclo(byte[] imagenCiclo) {
this.imagenCiclo = imagenCiclo;
}
@Override
public String toString() {
return "CicloFormativo [identificador=" + identificador + ", nombre=" + nombre + ", descripcion=" + descripcion
+ ", urlLogo=" + urlLogo + ", imagenCiclo=" + Arrays.toString(imagenCiclo) + "]\n";
}
}

View File

@ -0,0 +1,72 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.vo;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
/**
* Organización: Virgen de la Paloma
* Programador: Isidoro Nevares Martín
* Fecha: 26 marzo 2026
*/
@Entity
@Table (name="T_FORMACION")
public class Formacion {
@Id
private int identificador;
@Column(name="nombre_corto")
private String nombreCorto;
@Column(name="indicador_stem")
private boolean indicadorSTEM;
@ManyToOne()
@JoinColumn(name="id_ciclo", nullable = false )
private CicloFormativo cicloFormativo;
public int getIdentificador() {
return identificador;
}
public void setIdentificador(int identificador) {
this.identificador = identificador;
}
public String getNombreCorto() {
return nombreCorto;
}
public void setNombreCorto(String nombreCorto) {
this.nombreCorto = nombreCorto;
}
public boolean isIndicadorSTEM() {
return indicadorSTEM;
}
public void setIndicadorSTEM(boolean indicadorSTEM) {
this.indicadorSTEM = indicadorSTEM;
}
public CicloFormativo getCicloFormativo() {
return cicloFormativo;
}
public void setCicloFormativo(CicloFormativo cicloFormativo) {
this.cicloFormativo = cicloFormativo;
}
@Override
public String toString() {
return "Formacion [identificador=" + identificador + ", nombreCorto=" + nombreCorto + ", indicadorSTEM="
+ indicadorSTEM + ", cicloFormativo=" + cicloFormativo + "]\n";
}
}

View File

@ -0,0 +1,103 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.vo;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
/**
* Organización: Virgen de la Paloma Programador: Isidoro Nevares Martín Fecha:
* 26 marzo 2026
*/
@Entity
@Table(name = "T_INSTITUTO")
public class Instituto {
@Id
private int identificador;
@Column(name = "nom_instituto")
private String nombre;
@Column(name = "direccion")
private String direccion;
@Column(name = "telefono")
private String telefono;
@Column(name = "email")
private String email;
@Column(name = "paginaWeb")
private String paginaWeb;
@Column(name = "anyoCreacion")
private int anyoCreacion;
public int getIdentificador() {
return identificador;
}
public void setIdentificador(int identificador) {
this.identificador = identificador;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPaginaWeb() {
return paginaWeb;
}
public void setPaginaWeb(String paginaWeb) {
this.paginaWeb = paginaWeb;
}
public int getAnyoCreacion() {
return anyoCreacion;
}
public void setAnyoCreacion(int anyoCreacion) {
this.anyoCreacion = anyoCreacion;
}
@Override
public String toString() {
return "Instituto [identificador=" + identificador + ", nombre=" + nombre + ", direccion=" + direccion
+ ", telefono=" + telefono + ", email=" + email + ", paginaWeb=" + paginaWeb + ", anyoCreacion="
+ anyoCreacion + "]";
}
}

View File

@ -0,0 +1,107 @@
/**
*
*/
package org.comunidadmadrid.fp.dam2.vo;
import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import jakarta.persistence.EmbeddedId;
import jakarta.persistence.Entity;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
/**
* Organización: Virgen de la Paloma
* Programador: Isidoro Nevares Martín
* Fecha: 26 marzo 2026
*/
@Entity
@Table(name="T_INSTITUTO_FORMACION")
public class InstitutoFormacion {
@EmbeddedId
private InstitutoFormacionID idInstitutoFormacion;
@ManyToOne
@JoinColumn(name="id_instituto", insertable=false, updatable=false)
private Instituto instituto;
@ManyToOne
@JoinColumn(name="id_formacion", insertable=false, updatable=false)
private Formacion formacion;
@Column(name="anyo_academico")
private int anyoAcademico;
@Embeddable
public static class InstitutoFormacionID{
public InstitutoFormacionID() {
}
public InstitutoFormacionID(Integer idInstituto, Integer idFormacion) {
this.idFormacion=idFormacion;
this.idIntituto=idInstituto;
}
@Column(name="id_instituto")
private Integer idIntituto;
@Column(name="id_formacion")
private Integer idFormacion;
public boolean equals(Object o) {
boolean resultado=false;
if (o != null && o instanceof InstitutoFormacionID) {
InstitutoFormacionID that = (InstitutoFormacionID) o;
resultado= (this.idFormacion==that.idFormacion) && (this.idIntituto == that.idIntituto);
}
return resultado;
}
public int hashCode() {
return Long.hashCode(idIntituto)+ Long.hashCode(idFormacion);
}
@Override
public String toString() {
return "InstitutoFormacionID [idIntituto=" + idIntituto + ", idFormacion=" + idFormacion + "]";
}
}
@Override
public String toString() {
return "InstitutoFormacion [idInstitutoFormacion=" + idInstitutoFormacion + ", instituto=" + instituto
+ ", formacion=" + formacion + ", anyoAcademico=" + anyoAcademico + "]";
}
public InstitutoFormacionID getIdInstitutoFormacion() {
return idInstitutoFormacion;
}
public void setIdInstitutoFormacion(InstitutoFormacionID idInstitutoFormacion) {
this.idInstitutoFormacion = idInstitutoFormacion;
}
public Instituto getInstituto() {
return instituto;
}
public void setInstituto(Instituto instituto) {
this.instituto = instituto;
}
public Formacion getFormacion() {
return formacion;
}
public void setFormacion(Formacion formacion) {
this.formacion = formacion;
}
public int getAnyoAcademico() {
return anyoAcademico;
}
public void setAnyoAcademico(int anyoAcademico) {
this.anyoAcademico = anyoAcademico;
}
}

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<!-- Unidad Persistencia Hibernate -->
<persistence-unit name="UP_FormacionFP_HBT" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!-- Clases a "mapear" -->
<class>org.comunidadmadrid.fp.dam2.vo.Instituto</class>
<!-- Configuración para la conexión a la Base de Datos -->
<properties>
<property name="jakarta.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" />
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://10.11.218.147:3306/formacionfp_dam2" />
<property name="jakarta.persistence.jdbc.user" value="root" />
<property name="jakarta.persistence.jdbc.password" value="mysql_123" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
</persistence>

View File

@ -0,0 +1,15 @@
# Información sobre la Base de datos PostgreSQL
jdbc.driver=org.postgresql.Driver
jdbc.url=jdbc:postgresql://10.11.218.147:5432/formacionfp_postgresql
jdbc.usuario=vdlp
jdbc.password=postgresql_123
# Información sobre la Base de datos MongoDB
mongodb.url=mongodb://localhost:27017/
mongodb.bbdd=formacionfp_dam2
#ruta URL formaciones
url.formaciones=https://dam2.decieloytierra.es/formacionfp/formaciones.xml
#ruta fichero csv
ruta.csv=ficheros/formacion-Instituto.csv

View File

@ -0,0 +1,28 @@
<?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:mysql://10.11.218.147:3306/formacionfp_dam2</property>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.username">root</property>
<property name="connection.password">mysql_123</property>
<!-- Configuración de Hibernate -->
<property name="hibernate.hbm2ddl.auto">create-drop</property> <!-- 'update' para mantener el esquema en sincronía con las entidades -->
<property name="hibernate.show_sql">true</property> <!-- Muestra las consultas SQL -->
<property name="hibernate.format_sql">true</property> <!-- Da formato a las consultas SQL -->
<property name="hibernate.use_sql_comments">false</property> <!-- Añade comentarios en las consultas SQL -->
<mapping class="org.comunidadmadrid.fp.dam2.vo.CicloFormativo"></mapping>
<mapping class="org.comunidadmadrid.fp.dam2.vo.Instituto"></mapping>
<mapping class="org.comunidadmadrid.fp.dam2.vo.Formacion"></mapping>
<mapping class="org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion"></mapping>
</session-factory>
</hibernate-configuration>