Adaptación para el procesamiento de ficheros/URLs/CSV

This commit is contained in:
Isidoro Nevares Martín 2026-02-24 11:32:09 +01:00
parent 2725ebf0ea
commit 3c45a7e1a9
18 changed files with 218 additions and 279 deletions

View File

@ -37,5 +37,22 @@
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="src" path="target/generated-sources/annotations">
<attributes>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="m2e-apt" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
<attributes>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="m2e-apt" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/> <classpathentry kind="output" path="target/classes"/>
</classpath> </classpath>

View File

@ -20,4 +20,15 @@
<nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature> <nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures> </natures>
<filteredResources>
<filter>
<id>1771843084632</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription> </projectDescription>

View File

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

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
org.eclipse.jdt.apt.aptEnabled=false

View File

@ -9,5 +9,6 @@ org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.processAnnotations=disabled
org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=24 org.eclipse.jdt.core.compiler.source=24

View File

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

View File

@ -8,27 +8,24 @@ import java.util.List;
import org.comunidadmadrid.fp.dam2.dao.ICicloFormativoDAO; import org.comunidadmadrid.fp.dam2.dao.ICicloFormativoDAO;
import org.comunidadmadrid.fp.dam2.dao.IFormacionDAO; import org.comunidadmadrid.fp.dam2.dao.IFormacionDAO;
import org.comunidadmadrid.fp.dam2.dao.IInstitutoDAO; 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.CicloFormativoDaoHibernate;
import org.comunidadmadrid.fp.dam2.dao.hibernate.FormacionDaoHibernate; 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.jdbc.CicloFormativoDaoJDBC;
import org.comunidadmadrid.fp.dam2.dao.jpa.InstitutoDaoJPA; import org.comunidadmadrid.fp.dam2.dao.jpa.InstitutoDaoJPA;
import org.comunidadmadrid.fp.dam2.dao.mongodb.InstitutoDaoMongoDB; import org.comunidadmadrid.fp.dam2.dao.mongodb.InstitutoDaoMongoDB;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException; import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.gestores.GestorFicheroConfiguracion; import org.comunidadmadrid.fp.dam2.gestores.GestorFicheroConfiguracion;
import org.comunidadmadrid.fp.dam2.gestores.GestorSesionHibernate;
import org.comunidadmadrid.fp.dam2.procesamiento.ProcesadorDatos; import org.comunidadmadrid.fp.dam2.procesamiento.ProcesadorDatos;
import org.comunidadmadrid.fp.dam2.utilidades.GestorURLs; import org.comunidadmadrid.fp.dam2.utilidades.GestorURLs;
import org.comunidadmadrid.fp.dam2.vo.CicloFormativo; import org.comunidadmadrid.fp.dam2.vo.CicloFormativo;
import org.comunidadmadrid.fp.dam2.vo.Formacion; import org.comunidadmadrid.fp.dam2.vo.Formacion;
import org.comunidadmadrid.fp.dam2.vo.Instituto; import org.comunidadmadrid.fp.dam2.vo.Instituto;
import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion;
/* /**
Organización: Virgen de la Paloma * Organización: Virgen de la Paloma Programador: Isidoro Nevares Martín Fecha:
Programador: Isidoro Nevares Martín * 26 febrero 2026
Fecha: 1 mar 2025 */
*/
public class ClasePrincipal { public class ClasePrincipal {
/** /**
@ -36,7 +33,8 @@ public class ClasePrincipal {
*/ */
public static void main(String[] args) { public static void main(String[] args) {
ClasePrincipal appPrincipal = new ClasePrincipal(); ClasePrincipal appPrincipal = new ClasePrincipal();
// GestorSesionHibernate.getSession();
GestorSesionHibernate.getSession();
try { try {
appPrincipal.tratarCiclosFormativos(); appPrincipal.tratarCiclosFormativos();
@ -168,23 +166,8 @@ public class ClasePrincipal {
*/ */
private void tratarInstitutoFormacion() 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(); ProcesadorDatos procesador = new ProcesadorDatos();
List<InstitutoFormacion> listaInstitutosFormaciones = procesador procesador.crearFormacionesInstitutoCSV();
.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

@ -5,6 +5,7 @@ package org.comunidadmadrid.fp.dam2.dao;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException; import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.vo.Formacion; import org.comunidadmadrid.fp.dam2.vo.Formacion;
import org.comunidadmadrid.fp.dam2.vo.Instituto;
/* /*
Organización: Virgen de la Paloma Organización: Virgen de la Paloma
@ -12,6 +13,13 @@ Programador: Isidoro Nevares Martín
Fecha: 1 mar 2025 Fecha: 1 mar 2025
*/ */
public interface IFormacionDAO { public interface IFormacionDAO {
/**
*
* @param identificador
* @return
* @throws FormacionException
*/
Formacion obtenerFormacionPorID(int identificador) throws FormacionException;
/** /**
* *
* @param formacion * @param formacion

View File

@ -5,6 +5,7 @@ package org.comunidadmadrid.fp.dam2.dao;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException; import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion; import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion;
import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion.InstitutoFormacionID;
/* /*
Organización: Virgen de la Paloma Organización: Virgen de la Paloma
@ -18,4 +19,11 @@ public interface IInstitutoFormacionDAO {
* @throws FormacionException * @throws FormacionException
*/ */
void insertarInstitutoFormacion(InstitutoFormacion institutoFormacion) throws FormacionException; void insertarInstitutoFormacion(InstitutoFormacion institutoFormacion) throws FormacionException;
/**
*
* @param institutoFormacion
* @throws FormacionException
*/
InstitutoFormacion obtenerInstitutoFormacionPorID(InstitutoFormacionID identificador) throws FormacionException;
} }

View File

@ -7,6 +7,7 @@ import org.comunidadmadrid.fp.dam2.dao.IFormacionDAO;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException; import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.gestores.GestorSesionHibernate; import org.comunidadmadrid.fp.dam2.gestores.GestorSesionHibernate;
import org.comunidadmadrid.fp.dam2.vo.Formacion; import org.comunidadmadrid.fp.dam2.vo.Formacion;
import org.hibernate.HibernateException;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.Transaction; import org.hibernate.Transaction;
@ -42,4 +43,16 @@ public class FormacionDaoHibernate implements IFormacionDAO{
} }
@Override
public Formacion obtenerFormacionPorID(int identificador) throws FormacionException {
Formacion formacion = null;
// try con recursos "cerrables": Session
try (Session sesion = GestorSesionHibernate.getSession();) {
formacion = sesion.find(Formacion.class, identificador);
} catch (HibernateException e) {
throw new FormacionException(e, FormacionException.ERROR_CONSULTA, getClass());
}
return formacion;
}
} }

View File

@ -7,6 +7,8 @@ import org.comunidadmadrid.fp.dam2.dao.IInstitutoFormacionDAO;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException; import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.gestores.GestorSesionHibernate; import org.comunidadmadrid.fp.dam2.gestores.GestorSesionHibernate;
import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion; import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion;
import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion.InstitutoFormacionID;
import org.hibernate.HibernateException;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.Transaction; import org.hibernate.Transaction;
@ -40,4 +42,19 @@ public class InstitutoFormacionDaoHibernate implements IInstitutoFormacionDAO{
} }
} }
@Override
public InstitutoFormacion obtenerInstitutoFormacionPorID(InstitutoFormacionID identificador)
throws FormacionException {
InstitutoFormacion institutoFormacion =null;
// try con recursos "cerrables": Session
try (Session sesion = GestorSesionHibernate.getSession();) {
institutoFormacion = sesion.find(InstitutoFormacion.class, identificador);
} catch (HibernateException e) {
throw new FormacionException(e, FormacionException.ERROR_CONSULTA, getClass());
}
return institutoFormacion;
}
} }

View File

@ -21,23 +21,17 @@ Fecha: 1 mar 2025
public class InstitutoDaoJPA implements IInstitutoDAO { public class InstitutoDaoJPA implements IInstitutoDAO {
@Override @Override
public Instituto obtenerInstitutoPorID(int identificador) throws FormacionException { public Instituto obtenerInstitutoPorID(int identificador) throws FormacionException {
Instituto instituto =null; Instituto instituto = null;
EntityManager gestorEntidades = null; try (EntityManager gestorEntidades = GestorEntityManagerJPA.getEntityManager()) {
try {
gestorEntidades= GestorEntityManagerJPA.getEntityManager();
instituto=gestorEntidades.find(Instituto.class, identificador); instituto = gestorEntidades.find(Instituto.class, identificador);
} catch (Exception e) {
} catch (Exception e) {
throw new FormacionException(e, FormacionException.ERROR_CONSULTA, getClass()); throw new FormacionException(e, FormacionException.ERROR_CONSULTA, getClass());
} }
finally {
if(gestorEntidades!=null) {
gestorEntidades.close();
}
}
return instituto; return instituto;
} }
@Override @Override
@ -65,33 +59,32 @@ public class InstitutoDaoJPA implements IInstitutoDAO {
} }
} }
@Override @Override
public void actualizarInstituto(Instituto instituto) throws FormacionException { public void actualizarInstituto(Instituto instituto) throws FormacionException {
EntityManager gestorEntidades = null; EntityManager gestorEntidades = null;
EntityTransaction transaccion = null; EntityTransaction transaccion = null;
try { try {
gestorEntidades= GestorEntityManagerJPA.getEntityManager(); gestorEntidades = GestorEntityManagerJPA.getEntityManager();
transaccion=gestorEntidades.getTransaction(); transaccion = gestorEntidades.getTransaction();
// Inicia transacción // Inicia transacción
transaccion.begin(); transaccion.begin();
// Para poder actulizarse ha de encontarse en el ámbito del entityManager // Para poder actulizarse ha de encontarse en el ámbito del entityManager
if (!gestorEntidades.contains(instituto)) if (!gestorEntidades.contains(instituto))
gestorEntidades.merge(instituto); gestorEntidades.merge(instituto);
// Confirma transacción // Confirma transacción
transaccion.commit(); transaccion.commit();
} catch (Exception e) { } catch (Exception e) {
throw new FormacionException(e, FormacionException.ERROR_ACTUALIZACION, getClass()); throw new FormacionException(e, FormacionException.ERROR_ACTUALIZACION, getClass());
} finally { } finally {
if(gestorEntidades!=null) { if (gestorEntidades != null) {
gestorEntidades.close(); gestorEntidades.close();
} }
} }
} }

View File

@ -1,82 +0,0 @@
/**
*
*/
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

@ -1,64 +0,0 @@
/**
*
*/
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

@ -3,19 +3,28 @@
*/ */
package org.comunidadmadrid.fp.dam2.procesamiento; package org.comunidadmadrid.fp.dam2.procesamiento;
import java.io.FileNotFoundException; import java.io.BufferedReader;
import java.io.FileReader; import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
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.FormacionDaoHibernate;
import org.comunidadmadrid.fp.dam2.dao.hibernate.InstitutoFormacionDaoHibernate;
import org.comunidadmadrid.fp.dam2.dao.jpa.InstitutoDaoJPA;
import org.comunidadmadrid.fp.dam2.excepcion.FormacionException;
import org.comunidadmadrid.fp.dam2.gestores.GestorFicheroConfiguracion;
import org.comunidadmadrid.fp.dam2.utilidades.GestorURLs; import org.comunidadmadrid.fp.dam2.utilidades.GestorURLs;
import org.comunidadmadrid.fp.dam2.vo.CicloFormativo; import org.comunidadmadrid.fp.dam2.vo.CicloFormativo;
import org.comunidadmadrid.fp.dam2.vo.Formacion; import org.comunidadmadrid.fp.dam2.vo.Formacion;
import org.comunidadmadrid.fp.dam2.vo.Instituto;
import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion; import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion;
import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion.InstitutoFormacionID; import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion.InstitutoFormacionID;
import com.opencsv.bean.CsvToBeanBuilder; import tools.jackson.databind.JsonNode;
import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.ObjectMapper;
import tools.jackson.dataformat.xml.XmlMapper; import tools.jackson.dataformat.xml.XmlMapper;
@ -25,110 +34,132 @@ Programador: Isidoro Nevares Martín
Fecha: 1 mar 2025 Fecha: 1 mar 2025
*/ */
public class ProcesadorDatos { public class ProcesadorDatos {
/**
*
* @param urlFormaciones
* @return
*/
public List<Formacion> obtenerFormacionesDeURL(String urlFormaciones) { public List<Formacion> obtenerFormacionesDeURL(String urlFormaciones) {
List<Formacion> listaFormaciones = null; List<Formacion> listaFormaciones = null;
String informacionFormacionesXML = GestorURLs.getTextoFromURL(urlFormaciones); String informacionFormacionesXML = GestorURLs.getTextoFromURL(urlFormaciones);
ObjectMapper mapeadorXML = new XmlMapper(); ObjectMapper mapeadorXML = new XmlMapper();
// obtener Formaciones XMl a partir de la URL try {
FormacionXML[] arrayFormaciones = mapeadorXML.readValue(informacionFormacionesXML, FormacionXML[].class); // obtener Formaciones XMl a partir de la URL
if (arrayFormaciones != null && arrayFormaciones.length > 0) { JsonNode nodoRaiz = mapeadorXML.readTree(informacionFormacionesXML);
listaFormaciones = new ArrayList<Formacion>();
for (FormacionXML formacionXML : arrayFormaciones) { if (nodoRaiz != null) {
// Se convierte un onjeto de tipo Fomarciones XMl en otro de tipo Formacion listaFormaciones = new ArrayList<Formacion>();
Formacion formacion = obtenerFormacionDeFormacionXML(formacionXML);
if (formacion != null) JsonNode elementos = nodoRaiz.has("formacion") ? nodoRaiz.get("formacion") : nodoRaiz;
listaFormaciones.add(formacion);
if (elementos.isArray()) {
for (JsonNode nodo : elementos) {
Formacion formacion = obtenerFormacionDeJsonNode(nodo);
if (formacion != null)
listaFormaciones.add(formacion);
}
} else if (!elementos.isMissingNode() && !elementos.isNull()) {
Formacion formacion = obtenerFormacionDeJsonNode(elementos);
if (formacion != null)
listaFormaciones.add(formacion);
}
} }
} catch (Exception e) {
System.err.println("Error procesando XML con JsonNode: " + e.getMessage());
e.printStackTrace();
} }
return listaFormaciones; return listaFormaciones;
} }
/** /**
* Procesar las formaciones que se encuentran en el fichero CSV y almacenarlas
* en la Base de datos.
* *
* @param rutaCSVInstitutoFormacion
* @return
*/ */
@SuppressWarnings("unchecked")
public List<InstitutoFormacion> obtenerInstitutoFormacionDeFicheroCSV(String rutaCSVInstitutoFormacion) {
List<InstitutoFormacion> listaInstitutosFormaciones = null;
try { public void crearFormacionesInstitutoCSV() throws FormacionException {
@SuppressWarnings({ "rawtypes" }) String rutaFicheroCSV = GestorFicheroConfiguracion.obtenerValor("ruta.csv");
// obtener InstitutoFormacion CSV a partir de la ruta del fichero CSV
List<InstitutoFormacionCSV> listaInstitutosFormacionesCSV = new CsvToBeanBuilder( try (BufferedReader br = new BufferedReader(new FileReader(rutaFicheroCSV))) {
new FileReader(rutaCSVInstitutoFormacion)).withType(InstitutoFormacionCSV.class).withSeparator(',') String linea;
.build().parse();
if (listaInstitutosFormacionesCSV != null && listaInstitutosFormacionesCSV.size() > 0) { // Saltar cabecera
listaInstitutosFormaciones = new ArrayList<InstitutoFormacion>(); br.readLine();
for (InstitutoFormacionCSV institutoFormacionCSV : listaInstitutosFormacionesCSV) {
// Se convierte un onjeto de tipo InstitutoFormacion CSV en otro de tipo IInstitutoFormacionDAO institutoFormacionDAO = new InstitutoFormacionDaoHibernate();
// InstitutoFormacion IFormacionDAO iFormacionDAO = new FormacionDaoHibernate();
InstitutoFormacion institutoFormacion = obtenerInstituoFormacionDeInstituoFormacionCSV( IInstitutoDAO iInstitutoDAO = new InstitutoDaoJPA();
institutoFormacionCSV); while ((linea = br.readLine()) != null) {
if (institutoFormacion != null)
listaInstitutosFormaciones.add(institutoFormacion); String[] partes = linea.split(",");
String registroATratar = partes[0];
int idFormacion = Integer.parseInt(partes[1].trim());
int idInstituto = Integer.parseInt(partes[2].trim());
int anyo = Integer.parseInt(partes[3].trim());
// Si el registro es de tipo "S" se tratará para insertarse en la Base de datos.
if (registroATratar.equals("S")) {
InstitutoFormacionID institutoFormacionID = new InstitutoFormacionID(idInstituto, idFormacion);
InstitutoFormacion institutoFormacionBBDD = institutoFormacionDAO
.obtenerInstitutoFormacionPorID(institutoFormacionID);
// Si no existe información en la Base de datos.
if (institutoFormacionBBDD == null) {
InstitutoFormacion institutoFormacion = new InstitutoFormacion();
// Sólo se insertará el InstitutoFormacion si existen tanto el Instituto como la
// Formación en la Base de datos.
Instituto instituto = iInstitutoDAO.obtenerInstitutoPorID(idInstituto);
Formacion formacion = iFormacionDAO.obtenerFormacionPorID(idFormacion);
if (instituto != null && formacion != null) {
institutoFormacion.setIdInstitutoFormacion(institutoFormacionID);
institutoFormacion.setInstituto(instituto);
institutoFormacion.setFormacion(formacion);
institutoFormacion.setAnyoAcademico(anyo);
institutoFormacionDAO.insertarInstitutoFormacion(institutoFormacion);
}
}
} }
} }
} catch (IOException e) {
} catch (IllegalStateException | FileNotFoundException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
return listaInstitutosFormaciones;
} }
/** /**
* Convierte un JsonNode que representa una formación en el objeto Formacion
* correspondiente.
* *
* @param formacionXML * @param nodoJson
* @return * @return
*/ */
private Formacion obtenerFormacionDeFormacionXML(FormacionXML formacionXML) { private Formacion obtenerFormacionDeJsonNode(JsonNode nodoJson) {
Formacion formacion = null; Formacion formacion = null;
if (formacionXML != null) { if (nodoJson != null && !nodoJson.isNull()) {
formacion = new Formacion(); formacion = new Formacion();
formacion.setIdentificador(formacionXML.getIdentificador());
int formacionSTEM = formacionXML.getEsFormacionSTEM(); // Atributos mapeados como nodos en Jackson
if (formacionSTEM == 1) if (nodoJson.has("id_formacion")) {
formacion.setIndicadorSTEM(true); formacion.setIdentificador(nodoJson.get("id_formacion").asInt());
else }
formacion.setIndicadorSTEM(false);
formacion.setNombreCorto(formacionXML.getNombreCorto()); int formacionSTEM = 0;
if (nodoJson.has("es_formacion_stem")) {
formacionSTEM = nodoJson.get("es_formacion_stem").asInt();
}
formacion.setIndicadorSTEM(formacionSTEM == 1);
if (nodoJson.has("nombre_corto")) {
formacion.setNombreCorto(nodoJson.get("nombre_corto").asString());
}
CicloFormativo ciclo = new CicloFormativo(); CicloFormativo ciclo = new CicloFormativo();
ciclo.setIdentificador(formacionXML.getCodigoCicloFormativo()); if (nodoJson.has("cod_ciclo_formativo")) {
ciclo.setIdentificador(nodoJson.get("cod_ciclo_formativo").asInt());
}
formacion.setCicloFormativo(ciclo); formacion.setCicloFormativo(ciclo);
} }
return formacion; 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

@ -12,7 +12,7 @@
<!-- Configuración para la conexión a la Base de Datos --> <!-- Configuración para la conexión a la Base de Datos -->
<properties> <properties>
<property name="jakarta.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" /> <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.url" value="jdbc:mysql://192.168.1.36:3306/formacionfp_dam2" />
<property name="jakarta.persistence.jdbc.user" value="root" /> <property name="jakarta.persistence.jdbc.user" value="root" />
<property name="jakarta.persistence.jdbc.password" value="mysql_123" /> <property name="jakarta.persistence.jdbc.password" value="mysql_123" />

View File

@ -1,11 +1,11 @@
# Información sobre la Base de datos PostgreSQL # Información sobre la Base de datos PostgreSQL
jdbc.driver=org.postgresql.Driver jdbc.driver=org.postgresql.Driver
jdbc.url=jdbc:postgresql://10.11.218.147:5432/formacionfp_postgresql jdbc.url=jdbc:postgresql://192.168.1.36:5432/formacionfp_postgresql
jdbc.usuario=vdlp jdbc.usuario=vdlp
jdbc.password=postgresql_123 jdbc.password=postgresql_123
# Información sobre la Base de datos MongoDB # Información sobre la Base de datos MongoDB
mongodb.url=mongodb://localhost:27017/ mongodb.url=mongodb://admin:mongodb_123@192.168.1.36:27017
mongodb.bbdd=formacionfp_dam2 mongodb.bbdd=formacionfp_dam2
#ruta URL formaciones #ruta URL formaciones

View File

@ -4,7 +4,7 @@
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration> <hibernate-configuration>
<session-factory> <session-factory>
<property name="connection.url">jdbc:mysql://10.11.218.147:3306/formacionfp_dam2</property> <property name="connection.url">jdbc:mysql://192.168.1.36:3306/formacionfp_dam2</property>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property> <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property>