diff --git a/.classpath b/.classpath index 51a6fca..89051b0 100644 --- a/.classpath +++ b/.classpath @@ -37,5 +37,22 @@ + + + + + + + + + + + + + + + + + diff --git a/.project b/.project index 03a3060..8bf77c6 100644 --- a/.project +++ b/.project @@ -20,4 +20,15 @@ org.eclipse.jdt.core.javanature org.eclipse.m2e.core.maven2Nature + + + 1771843084632 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0..0000000 --- a/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..d4313d4 --- /dev/null +++ b/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=false diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index bfac099..dc671b5 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -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.forbiddenReference=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.source=24 diff --git a/ficheros/formacion-Instituto.csv b/ficheros/formacion-Instituto.csv index 4dfe395..c0051d4 100644 --- a/ficheros/formacion-Instituto.csv +++ b/ficheros/formacion-Instituto.csv @@ -1,9 +1,12 @@ -a_tratar,cod_formacion, cod_instituto, anyo +a_tratar,id_formacion, id_instituto, anyo S, 1, 1, 2021 S, 1, 2, 2022 S, 2, 1, 2022 +N, 3, 2, 2022 +S, 8, 5, 2020 S, 2, 2, 2021 N, 2, 3, 2023 S, 3, 1, 2024 +S, 5, 9, 2020 S, 3, 3, 2024 S, 4, 3, 2020 \ No newline at end of file diff --git a/src/main/java/org/comunidadmadrid/fp/dam2/ClasePrincipal.java b/src/main/java/org/comunidadmadrid/fp/dam2/ClasePrincipal.java index 2750811..aea78ea 100644 --- a/src/main/java/org/comunidadmadrid/fp/dam2/ClasePrincipal.java +++ b/src/main/java/org/comunidadmadrid/fp/dam2/ClasePrincipal.java @@ -8,27 +8,24 @@ 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.gestores.GestorSesionHibernate; 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 -*/ +/** + * Organización: Virgen de la Paloma Programador: Isidoro Nevares Martín Fecha: + * 26 febrero 2026 + */ public class ClasePrincipal { /** @@ -36,7 +33,8 @@ public class ClasePrincipal { */ public static void main(String[] args) { ClasePrincipal appPrincipal = new ClasePrincipal(); - // GestorSesionHibernate.getSession(); + + GestorSesionHibernate.getSession(); try { appPrincipal.tratarCiclosFormativos(); @@ -168,23 +166,8 @@ public class ClasePrincipal { */ 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 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); - } - } + procesador.crearFormacionesInstitutoCSV(); } } diff --git a/src/main/java/org/comunidadmadrid/fp/dam2/dao/IFormacionDAO.java b/src/main/java/org/comunidadmadrid/fp/dam2/dao/IFormacionDAO.java index 912ed0e..0f496cb 100644 --- a/src/main/java/org/comunidadmadrid/fp/dam2/dao/IFormacionDAO.java +++ b/src/main/java/org/comunidadmadrid/fp/dam2/dao/IFormacionDAO.java @@ -5,6 +5,7 @@ package org.comunidadmadrid.fp.dam2.dao; import org.comunidadmadrid.fp.dam2.excepcion.FormacionException; import org.comunidadmadrid.fp.dam2.vo.Formacion; +import org.comunidadmadrid.fp.dam2.vo.Instituto; /* Organización: Virgen de la Paloma @@ -12,6 +13,13 @@ Programador: Isidoro Nevares Martín Fecha: 1 mar 2025 */ public interface IFormacionDAO { + /** + * + * @param identificador + * @return + * @throws FormacionException + */ + Formacion obtenerFormacionPorID(int identificador) throws FormacionException; /** * * @param formacion diff --git a/src/main/java/org/comunidadmadrid/fp/dam2/dao/IInstitutoFormacionDAO.java b/src/main/java/org/comunidadmadrid/fp/dam2/dao/IInstitutoFormacionDAO.java index 3790fb1..560bd43 100644 --- a/src/main/java/org/comunidadmadrid/fp/dam2/dao/IInstitutoFormacionDAO.java +++ b/src/main/java/org/comunidadmadrid/fp/dam2/dao/IInstitutoFormacionDAO.java @@ -5,6 +5,7 @@ package org.comunidadmadrid.fp.dam2.dao; import org.comunidadmadrid.fp.dam2.excepcion.FormacionException; import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion; +import org.comunidadmadrid.fp.dam2.vo.InstitutoFormacion.InstitutoFormacionID; /* Organización: Virgen de la Paloma @@ -18,4 +19,11 @@ public interface IInstitutoFormacionDAO { * @throws FormacionException */ void insertarInstitutoFormacion(InstitutoFormacion institutoFormacion) throws FormacionException; + + /** + * + * @param institutoFormacion + * @throws FormacionException + */ + InstitutoFormacion obtenerInstitutoFormacionPorID(InstitutoFormacionID identificador) throws FormacionException; } diff --git a/src/main/java/org/comunidadmadrid/fp/dam2/dao/hibernate/FormacionDaoHibernate.java b/src/main/java/org/comunidadmadrid/fp/dam2/dao/hibernate/FormacionDaoHibernate.java index 8c18784..beb9e65 100644 --- a/src/main/java/org/comunidadmadrid/fp/dam2/dao/hibernate/FormacionDaoHibernate.java +++ b/src/main/java/org/comunidadmadrid/fp/dam2/dao/hibernate/FormacionDaoHibernate.java @@ -7,6 +7,7 @@ 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.HibernateException; import org.hibernate.Session; 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; + } } diff --git a/src/main/java/org/comunidadmadrid/fp/dam2/dao/hibernate/InstitutoFormacionDaoHibernate.java b/src/main/java/org/comunidadmadrid/fp/dam2/dao/hibernate/InstitutoFormacionDaoHibernate.java index ad2615e..401031f 100644 --- a/src/main/java/org/comunidadmadrid/fp/dam2/dao/hibernate/InstitutoFormacionDaoHibernate.java +++ b/src/main/java/org/comunidadmadrid/fp/dam2/dao/hibernate/InstitutoFormacionDaoHibernate.java @@ -7,6 +7,8 @@ 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.comunidadmadrid.fp.dam2.vo.InstitutoFormacion.InstitutoFormacionID; +import org.hibernate.HibernateException; import org.hibernate.Session; 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; + } + } diff --git a/src/main/java/org/comunidadmadrid/fp/dam2/dao/jpa/InstitutoDaoJPA.java b/src/main/java/org/comunidadmadrid/fp/dam2/dao/jpa/InstitutoDaoJPA.java index 835d0bd..a8c26c3 100644 --- a/src/main/java/org/comunidadmadrid/fp/dam2/dao/jpa/InstitutoDaoJPA.java +++ b/src/main/java/org/comunidadmadrid/fp/dam2/dao/jpa/InstitutoDaoJPA.java @@ -21,23 +21,17 @@ Fecha: 1 mar 2025 public class InstitutoDaoJPA implements IInstitutoDAO { @Override public Instituto obtenerInstitutoPorID(int identificador) throws FormacionException { - Instituto instituto =null; + Instituto instituto = null; - EntityManager gestorEntidades = null; - try { - gestorEntidades= GestorEntityManagerJPA.getEntityManager(); + try (EntityManager gestorEntidades = GestorEntityManagerJPA.getEntityManager()) { - instituto=gestorEntidades.find(Instituto.class, identificador); - } catch (Exception e) { + 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; + return instituto; } @Override @@ -65,33 +59,32 @@ public class InstitutoDaoJPA implements IInstitutoDAO { } } - @Override public void actualizarInstituto(Instituto instituto) throws FormacionException { - EntityManager gestorEntidades = null; + EntityManager gestorEntidades = null; EntityTransaction transaccion = null; try { - gestorEntidades= GestorEntityManagerJPA.getEntityManager(); - transaccion=gestorEntidades.getTransaction(); - + 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) { + transaccion.commit(); + + } catch (Exception e) { throw new FormacionException(e, FormacionException.ERROR_ACTUALIZACION, getClass()); - } finally { - if(gestorEntidades!=null) { - gestorEntidades.close(); - } - } + } finally { + if (gestorEntidades != null) { + gestorEntidades.close(); + } + } } diff --git a/src/main/java/org/comunidadmadrid/fp/dam2/procesamiento/FormacionXML.java b/src/main/java/org/comunidadmadrid/fp/dam2/procesamiento/FormacionXML.java deleted file mode 100644 index 767e8f1..0000000 --- a/src/main/java/org/comunidadmadrid/fp/dam2/procesamiento/FormacionXML.java +++ /dev/null @@ -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; - } -} diff --git a/src/main/java/org/comunidadmadrid/fp/dam2/procesamiento/InstitutoFormacionCSV.java b/src/main/java/org/comunidadmadrid/fp/dam2/procesamiento/InstitutoFormacionCSV.java deleted file mode 100644 index 5c7a1f6..0000000 --- a/src/main/java/org/comunidadmadrid/fp/dam2/procesamiento/InstitutoFormacionCSV.java +++ /dev/null @@ -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 + "]"; - } - -} diff --git a/src/main/java/org/comunidadmadrid/fp/dam2/procesamiento/ProcesadorDatos.java b/src/main/java/org/comunidadmadrid/fp/dam2/procesamiento/ProcesadorDatos.java index c532b75..17d0f8e 100644 --- a/src/main/java/org/comunidadmadrid/fp/dam2/procesamiento/ProcesadorDatos.java +++ b/src/main/java/org/comunidadmadrid/fp/dam2/procesamiento/ProcesadorDatos.java @@ -3,19 +3,28 @@ */ package org.comunidadmadrid.fp.dam2.procesamiento; -import java.io.FileNotFoundException; +import java.io.BufferedReader; import java.io.FileReader; +import java.io.IOException; import java.util.ArrayList; 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.vo.CicloFormativo; 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.InstitutoFormacionID; -import com.opencsv.bean.CsvToBeanBuilder; - +import tools.jackson.databind.JsonNode; import tools.jackson.databind.ObjectMapper; import tools.jackson.dataformat.xml.XmlMapper; @@ -25,110 +34,132 @@ Programador: Isidoro Nevares Martín Fecha: 1 mar 2025 */ public class ProcesadorDatos { - /** - * - * @param urlFormaciones - * @return - */ public List obtenerFormacionesDeURL(String urlFormaciones) { List 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(); - 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); + try { + // obtener Formaciones XMl a partir de la URL + JsonNode nodoRaiz = mapeadorXML.readTree(informacionFormacionesXML); + + if (nodoRaiz != null) { + listaFormaciones = new ArrayList(); + + JsonNode elementos = nodoRaiz.has("formacion") ? nodoRaiz.get("formacion") : nodoRaiz; + + 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; } /** + * Procesar las formaciones que se encuentran en el fichero CSV y almacenarlas + * en la Base de datos. * - * @param rutaCSVInstitutoFormacion - * @return */ - @SuppressWarnings("unchecked") - public List obtenerInstitutoFormacionDeFicheroCSV(String rutaCSVInstitutoFormacion) { - List listaInstitutosFormaciones = null; - try { - @SuppressWarnings({ "rawtypes" }) - // obtener InstitutoFormacion CSV a partir de la ruta del fichero CSV - List listaInstitutosFormacionesCSV = new CsvToBeanBuilder( - new FileReader(rutaCSVInstitutoFormacion)).withType(InstitutoFormacionCSV.class).withSeparator(',') - .build().parse(); - if (listaInstitutosFormacionesCSV != null && listaInstitutosFormacionesCSV.size() > 0) { - listaInstitutosFormaciones = new ArrayList(); - 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); + public void crearFormacionesInstitutoCSV() throws FormacionException { + String rutaFicheroCSV = GestorFicheroConfiguracion.obtenerValor("ruta.csv"); + + try (BufferedReader br = new BufferedReader(new FileReader(rutaFicheroCSV))) { + String linea; + + // Saltar cabecera + br.readLine(); + + IInstitutoFormacionDAO institutoFormacionDAO = new InstitutoFormacionDaoHibernate(); + IFormacionDAO iFormacionDAO = new FormacionDaoHibernate(); + IInstitutoDAO iInstitutoDAO = new InstitutoDaoJPA(); + while ((linea = br.readLine()) != null) { + + 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 (IllegalStateException | FileNotFoundException e) { + } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } - return listaInstitutosFormaciones; } /** + * Convierte un JsonNode que representa una formación en el objeto Formacion + * correspondiente. * - * @param formacionXML + * @param nodoJson * @return */ - private Formacion obtenerFormacionDeFormacionXML(FormacionXML formacionXML) { + private Formacion obtenerFormacionDeJsonNode(JsonNode nodoJson) { Formacion formacion = null; - if (formacionXML != null) { + if (nodoJson != null && !nodoJson.isNull()) { 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()); + + // Atributos mapeados como nodos en Jackson + if (nodoJson.has("id_formacion")) { + formacion.setIdentificador(nodoJson.get("id_formacion").asInt()); + } + + 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(); - ciclo.setIdentificador(formacionXML.getCodigoCicloFormativo()); + if (nodoJson.has("cod_ciclo_formativo")) { + ciclo.setIdentificador(nodoJson.get("cod_ciclo_formativo").asInt()); + } 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; - } - } diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index b44d65e..4128b8a 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -12,7 +12,7 @@ - + diff --git a/src/main/resources/formacion.properties b/src/main/resources/formacion.properties index 7fc2056..c79167f 100644 --- a/src/main/resources/formacion.properties +++ b/src/main/resources/formacion.properties @@ -1,11 +1,11 @@ # 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.url=jdbc:postgresql://192.168.1.36:5432/formacionfp_postgresql jdbc.usuario=vdlp jdbc.password=postgresql_123 # 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 #ruta URL formaciones diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml index 42a339a..e8def07 100644 --- a/src/main/resources/hibernate.cfg.xml +++ b/src/main/resources/hibernate.cfg.xml @@ -4,7 +4,7 @@ "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> - jdbc:mysql://10.11.218.147:3306/formacionfp_dam2 + jdbc:mysql://192.168.1.36:3306/formacionfp_dam2 com.mysql.cj.jdbc.Driver org.hibernate.dialect.MySQLDialect