commit a7505cecfe8c99203e9a2c6705ef3c4fd401a610 Author: Isidoro Nevares Martín Date: Fri Oct 24 12:52:00 2025 +0200 primer commit diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..ca2042c --- /dev/null +++ b/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e618407 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/bin/ +*.class \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..feb0767 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + aadd_act1_11 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..8fda750 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,13 @@ +eclipse.preferences.version=1 +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.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=24 diff --git a/informacion-IES_v2.xml b/informacion-IES_v2.xml new file mode 100644 index 0000000..451947c --- /dev/null +++ b/informacion-IES_v2.xml @@ -0,0 +1,315 @@ + + + IES Virgen de la Paloma + + + Laboratorio de informática + 30 + + + Taller de Fundamentos de Hardware + 25 + + + Taller de Automoción + 25 + + + + + DAM + Técnico Superior en Desarrollo de Aplicaciones Multiplataforma + + + + Bases de datos + 205 + + + 90 + Entornos de desarrollo + + + 90 + Formación y orientación laboral + + + 140 + Lenguaje de marcas y sistemas de gestión de información + + + 270 + Programación + + + 205 + Sistemas informáticos + + + + + Acceso a Datos + 120 + + + 120 + Diseño de interfaces + + + 65 + Empresa e iniciativa emprendedora + + + 80 + Programación de servicios y procesos + + + 80 + Programación multimedia y dispositivos móviles + + + 40 + Inglés técnico para grado superior + + + + + + DAW + Técnico Superior en Desarrollo de Aplicaciones Web + + + + Bases de datos + 205 + + + 90 + Entornos de desarrollo + + + 90 + Formación y orientación laboral + + + 140 + Lenguaje de marcas y sistemas de gestión de información + + + 270 + Programación + + + 205 + Sistemas informáticos + + + + + Desarrollo web en entorno cliente + 115 + + + 180 + Desarrollo web en entorno servidor + + + 85 + Despliegue de aplicaciones web + + + 115 + Diseño de interfaces web + + + 30 + Proyecto de desarrollo de aplicaciones web + + + 40 + Inglés técnico para grado superior + + + 65 + Empresa e iniciativa emprendedora + + + + + ASIR + Técnico Superior en Administración de Sistemas Informáticos en Red + + + + + Implantación de sistemas operativos + 231 + + + Planificación y administración de redes + 231 + + + Fundamentos de hardware + 165 + + + Gestión de bases de datos + 198 + + + Lenguajes de marcas y sistemas de gestión de información + 132 + + + Formación y orientación laboral + 99 + + + + + Administración de sistemas operativos + 105 + + + Servicios de red e Internet + 126 + + + Implantación de aplicaciones web + 84 + + + Administración de sistemas gestores de bases de datos + 84 + + + Seguridad y alta disponibilidad + 126 + + + Empresa e iniciativa emprendedora + 66 + + + Formación en centros de trabajo + 370 + + + Proyecto de Administración de Sistemas Informáticos en Red + 40 + + + + + + + SMR + Técnico en Sistemas Microinformáticos y Redes + + + + + Montaje y mantenimiento de equipos + 198 + + + Sistemas operativos monopuesto + 198 + + + Aplicaciones ofimáticas + 231 + + + Redes locales + 198 + + + Formación y orientación laboral + 99 + + + + + + Sistemas operativos en red + 168 + + + Seguridad informática + 105 + + + Servicios en red + 168 + + + Programación Aplicaciones web + 105 + + + Empresa e iniciativa emprendedora + 66 + + + Formación en centros de trabajo + 370 + + + + + + + + INFOBAS + Título Profesional Básico en Informática de Oficina + + + + + Aplicaciones básicas de ofimática + 160 + + + Montaje y mantenimiento de sistemas y componentes informáticos + 160 + + + Ciencias aplicadas I + 160 + + + Comunicación y sociedad I + 160 + + + Tutorización y orientación + 80 + + + + + + Tratamiento de textos y presentación de información + 160 + + + Operaciones auxiliares de mantenimiento de sistemas informáticos + 160 + + + Ciencias aplicadas II + 160 + + + Comunicación y sociedad II + 160 + + + Formación en centros de trabajo + 260 + + + + \ No newline at end of file diff --git a/informacion_ciclos_IES.xml b/informacion_ciclos_IES.xml new file mode 100644 index 0000000..c6e75c7 --- /dev/null +++ b/informacion_ciclos_IES.xml @@ -0,0 +1,403 @@ + + + + DAM + Técnico Superior en Desarrollo de Aplicaciones Multiplataforma + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + + + DAW + Técnico Superior en Desarrollo de Aplicaciones Web + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + Bases de datos + + + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + Entornos de desarrollo + + + + + ASIR + Técnico Superior en Administración de Sistemas Informáticos en Red + + + Implantación de sistemas operativos + + + Implantación de sistemas operativos + + + Implantación de sistemas operativos + + + Implantación de sistemas operativos + + + Implantación de sistemas operativos + + + Implantación de sistemas operativos + + + Implantación de sistemas operativos + + + Implantación de sistemas operativos + + + Implantación de sistemas operativos + + + Implantación de sistemas operativos + + + Implantación de sistemas operativos + + + Implantación de sistemas operativos + + + Implantación de sistemas operativos + + + Implantación de sistemas operativos + + + + + Planificación y administración de redes + + + Planificación y administración de redes + + + Planificación y administración de redes + + + Planificación y administración de redes + + + Planificación y administración de redes + + + Planificación y administración de redes + + + Planificación y administración de redes + + + Planificación y administración de redes + + + Planificación y administración de redes + + + Planificación y administración de redes + + + Planificación y administración de redes + + + Planificación y administración de redes + + + Planificación y administración de redes + + + Planificación y administración de redes + + + + + SMR + Técnico en Sistemas Microinformáticos y Redes + + + Montaje y mantenimiento de equipos + + + Montaje y mantenimiento de equipos + + + Montaje y mantenimiento de equipos + + + Montaje y mantenimiento de equipos + + + Montaje y mantenimiento de equipos + + + Montaje y mantenimiento de equipos + + + Montaje y mantenimiento de equipos + + + Montaje y mantenimiento de equipos + + + Montaje y mantenimiento de equipos + + + Montaje y mantenimiento de equipos + + + Montaje y mantenimiento de equipos + + + + + Sistemas operativos monopuesto + + + Sistemas operativos monopuesto + + + Sistemas operativos monopuesto + + + Sistemas operativos monopuesto + + + Sistemas operativos monopuesto + + + Sistemas operativos monopuesto + + + Sistemas operativos monopuesto + + + Sistemas operativos monopuesto + + + Sistemas operativos monopuesto + + + Sistemas operativos monopuesto + + + Sistemas operativos monopuesto + + + + + INFOBAS + Título Profesional Básico en Informática de Oficina + + + Aplicaciones básicas de ofimática + + + Aplicaciones básicas de ofimática + + + Aplicaciones básicas de ofimática + + + Aplicaciones básicas de ofimática + + + Aplicaciones básicas de ofimática + + + Aplicaciones básicas de ofimática + + + Aplicaciones básicas de ofimática + + + Aplicaciones básicas de ofimática + + + Aplicaciones básicas de ofimática + + + Aplicaciones básicas de ofimática + + + + + Montaje y mantenimiento de sistemas y componentes informáticos + + + Montaje y mantenimiento de sistemas y componentes informáticos + + + Montaje y mantenimiento de sistemas y componentes informáticos + + + Montaje y mantenimiento de sistemas y componentes informáticos + + + Montaje y mantenimiento de sistemas y componentes informáticos + + + Montaje y mantenimiento de sistemas y componentes informáticos + + + Montaje y mantenimiento de sistemas y componentes informáticos + + + Montaje y mantenimiento de sistemas y componentes informáticos + + + Montaje y mantenimiento de sistemas y componentes informáticos + + + Montaje y mantenimiento de sistemas y componentes informáticos + + + + diff --git a/src/es/palomafp/aadd/inm/GestorInstitutoXML.java b/src/es/palomafp/aadd/inm/GestorInstitutoXML.java new file mode 100644 index 0000000..40c0614 --- /dev/null +++ b/src/es/palomafp/aadd/inm/GestorInstitutoXML.java @@ -0,0 +1,332 @@ +package es.palomafp.aadd.inm; + +import java.io.File; +import java.util.Scanner; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +/** + * + * GestorMapaMundi: Clase que procesa el fichero con información de países y + * continentes + * + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 26 sept 2025 + */ + +public class GestorInstitutoXML { + private static final String RUTA_FICHERO_XML = "informacion-IES_v2.xml"; + private static final String RUTA_FICHERO_SALIDA_XML = "informacion_ciclos_IES.xml"; + + public static void main(String[] args) { + GestorInstitutoXML gestor = new GestorInstitutoXML(); + + Scanner scanner = new Scanner(System.in); // Crear el scanner + + System.out.print("Introduce una opción de procesamiento XML: \n"); + String opcion = scanner.nextLine(); // Leer una opción introducida. + + switch (opcion) { + case "1": + System.out.println("Imprimir instituto"); + gestor.imprimirInstituto(); + break; + case "2": + System.out.println("Imprimir ciclos"); + gestor.imprimirCiclos(); + break; + case "3": + System.out.println("Imprimir módulos que empiezan por 'Programa'"); + gestor.imprimirModulosPrograma(); + break; + case "4": + System.out.println("Imprimir módulos según filtro 2"); + gestor.imprimirModulosFiltro2(); + break; + case "5": + System.out.println("Almacenar ciclos en fichero con DOM"); + gestor.guardarCiclosFicheroDOM(); + break; + } + + scanner.close(); + } + + private void imprimirInstituto() { + Document documento = obtenerDocumentDeFichero(); + NodeList listaNodosInstituto = documento.getElementsByTagName("instituto"); + for (int temp = 0; temp < listaNodosInstituto.getLength(); temp++) { + Node nodoInstituto = listaNodosInstituto.item(temp); + if (nodoInstituto.getNodeType() == Node.ELEMENT_NODE) { + Element instituto = (Element) nodoInstituto; + + // Obtener atributos nombre y tipo + String nombre = instituto.getElementsByTagName("nombre").item(0).getTextContent(); + String tipo = instituto.getAttribute("tipo"); + + String mensajeInstituto = String.format("Instituto (Nombre: %s - Tipo: %s)", nombre, tipo); + System.out.println(mensajeInstituto); + } + } + } + + private void imprimirCiclos() { + Document documento = obtenerDocumentDeFichero(); + NodeList listaNodosCiclo = documento.getElementsByTagName("ciclo"); + for (int temp = 0; temp < listaNodosCiclo.getLength(); temp++) { + Node nodoCiclo = listaNodosCiclo.item(temp); + if (nodoCiclo.getNodeType() == Node.ELEMENT_NODE) { + Element ciclo = (Element) nodoCiclo; + + // Obtener atributo codigo + String codigo = ciclo.getAttribute("codigo"); + + // Obtener texto nombre_corto + String nombreCorto = ciclo.getElementsByTagName("nombre_corto").item(0).getTextContent(); + + String mensajeCiclo = String.format("Ciclo (Código: %s - Nombre corto: %s)", codigo, nombreCorto); + System.out.println(mensajeCiclo); + } + } + } + + private void imprimirModulosPrograma() { + Document documento = obtenerDocumentDeFichero(); + NodeList listaNodosModulo = documento.getElementsByTagName("modulo"); + for (int temp = 0; temp < listaNodosModulo.getLength(); temp++) { + Node nodoModulo = listaNodosModulo.item(temp); + if (nodoModulo.getNodeType() == Node.ELEMENT_NODE) { + Element modulo = (Element) nodoModulo; + // Comprobar que el nodo padre es un curso y no otro (como por ejemplo + // instituto) + if (modulo.getParentNode().getNodeName() == "curso") { + // Obtener texto del Título + String titulo = modulo.getElementsByTagName("titulo").item(0).getTextContent(); + // Obtener Número de horas + int numeroHoras = Integer + .parseInt(modulo.getElementsByTagName("numerohoras").item(0).getTextContent()); + if ((titulo.startsWith("Programa"))) { + // Obtener atributos id y referencia + String id = modulo.getAttribute("id"); + String referencia = modulo.getAttribute("ref"); + + String mensajeModulo = String.format( + "Modelo (Id: %s - Referencia: %s - Título: %s - Número de horas: %s)", id, referencia, + titulo, numeroHoras); + System.out.println(mensajeModulo); + } + } + } + } + + } + + private void imprimirModulosFiltro2() { + String nivelCiclo = null; + String numeroCurso = null; + Document documento = obtenerDocumentDeFichero(); + NodeList listaNodosCiclo = documento.getElementsByTagName("ciclo"); + for (int i = 0; i < listaNodosCiclo.getLength(); i++) { + Node nodoCiclo = listaNodosCiclo.item(i); + if (nodoCiclo.getNodeType() == Node.ELEMENT_NODE) { + Element ciclo = (Element) nodoCiclo; + + // Obtener atributo codigo + nivelCiclo = ciclo.getAttribute("nivel"); + + NodeList listaNodosCurso = ciclo.getElementsByTagName("curso"); + for (int j = 0; j < listaNodosCurso.getLength(); j++) { + Node nodoCurso = listaNodosCurso.item(j); + if (nodoCurso.getNodeType() == Node.ELEMENT_NODE) { + Element curso = (Element) nodoCurso; + + // Obtener atributo codigo + numeroCurso = curso.getAttribute("numero"); + NodeList listaNodosModulo = curso.getElementsByTagName("modulo"); + for (int k = 0; k < listaNodosModulo.getLength(); k++) { + Node nodoModulo = listaNodosModulo.item(k); + if (nodoModulo.getNodeType() == Node.ELEMENT_NODE) { + Element modulo = (Element) nodoModulo; + // Comprobar que el nodo padre es un curso y no otro (como por ejemplo + // instituto) + if (modulo.getParentNode().getNodeName() == "curso") { + // Obtener texto del Título + String titulo = modulo.getElementsByTagName("titulo").item(0).getTextContent(); + // Obtener Número de horas + int numeroHoras = Integer.parseInt( + modulo.getElementsByTagName("numerohoras").item(0).getTextContent()); + if (((titulo.startsWith("Programa") + || titulo.toLowerCase().startsWith("desarrollo")) && numeroHoras >= 100) + && numeroHoras > 100 && nivelCiclo.equals("CFGS")) { + // Obtener atributos id y referencia + String id = modulo.getAttribute("id"); + String referencia = modulo.getAttribute("ref"); + + String mensajeCiclo = String.format( + "Ciclo: %s - Curso: %s - Modelo (Id: %s - Referencia: %s - Título: %s - Número de horas: %s)", + nivelCiclo, numeroCurso, id, referencia, titulo, numeroHoras); + System.out.println(mensajeCiclo); + } + } + } + } + } + } + } + } + } + + private void guardarCiclosFicheroDOM() { + try { + // Crear un nuevo documento XML en memoria + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + + Document documentoSalida = builder.newDocument(); + + // Crear el elemento raíz 'ies' + Element nodoIES = documentoSalida.createElement("ies"); + documentoSalida.appendChild(nodoIES); + + // Se obtiene la información de los ciclos del fichero original + Document documentoEntrada = obtenerDocumentDeFichero(); + // Tratamiento del nodo instituto + NodeList listaNodosInstituto = documentoEntrada.getElementsByTagName("instituto"); + for (int temp = 0; temp < listaNodosInstituto.getLength(); temp++) { + Node nodoInstituto = listaNodosInstituto.item(temp); + if (nodoInstituto.getNodeType() == Node.ELEMENT_NODE) { + Element instituto = (Element) nodoInstituto; + + // Obtener atributos nombre y tipo + String nombre = instituto.getElementsByTagName("nombre").item(0).getTextContent(); + String tipo = instituto.getAttribute("tipo"); + + nodoIES.setAttribute("nombre", nombre); + nodoIES.setAttribute("tipo", tipo); + + // Tratamiento de los nodos ciclo + NodeList listaNodosCiclo = instituto.getElementsByTagName("ciclo"); + for (int i = 0; i < listaNodosCiclo.getLength(); i++) { + Node nodoCiclo = listaNodosCiclo.item(i); + if (nodoCiclo.getNodeType() == Node.ELEMENT_NODE) { + Element ciclo = (Element) nodoCiclo; + + // Obtener atributo nivel y codigo + String nivelCiclo = ciclo.getAttribute("nivel"); + String codigoCiclo = ciclo.getAttribute("codigo"); + + // Obtener textos nombre_corto y nombre_largo + String nombreCorto = ciclo.getElementsByTagName("nombre_corto").item(0).getTextContent(); + String nombreLargo = ciclo.getElementsByTagName("nombre_largo").item(0).getTextContent(); + + // Crear el nodo ciclo en el documento de salida + Element nodoCicloSalida = documentoSalida.createElement("ciclo"); + nodoIES.setAttribute("nivel", nivelCiclo); + nodoIES.setAttribute("codigo", codigoCiclo); + Element nodoNombreCortoCiclo = documentoSalida.createElement("nombre_corto"); + nodoNombreCortoCiclo.setTextContent(nombreCorto); + nodoCicloSalida.appendChild(nodoNombreCortoCiclo); + Element nodoNombreLargoCiclo = documentoSalida.createElement("nombre_largo"); + nodoNombreLargoCiclo.setTextContent(nombreLargo); + nodoCicloSalida.appendChild(nodoNombreLargoCiclo); + nodoIES.appendChild(nodoCicloSalida); + + // Tratamiento de los nodos curso dentro de ciclo + NodeList listaNodosCurso = ciclo.getElementsByTagName("curso"); + for (int j = 0; j < listaNodosCurso.getLength(); j++) { + Node nodoCurso = listaNodosCurso.item(j); + + if (nodoCurso.getNodeType() == Node.ELEMENT_NODE) { + Element curso = (Element) nodoCurso; + + // Obtener atributo numero + String numeroCurso = curso.getAttribute("numero"); + + // Crear el nodo curso en el documento de salida + Element nodoCursoSalida = documentoSalida.createElement("curso"); + nodoCursoSalida.setAttribute("num", numeroCurso); + nodoCicloSalida.appendChild(nodoCursoSalida); + + // Tratamiento de los nodos Módulo dentro de curso + NodeList listaNodosModulo = ciclo.getElementsByTagName("modulo"); + for (int k = 0; k < listaNodosModulo.getLength(); k++) { + Node nodoModulo = listaNodosModulo.item(j); + + if (nodoModulo.getNodeType() == Node.ELEMENT_NODE) { + Element modulo = (Element) nodoModulo; + + // Obtener atributo id y ref + String id = modulo.getAttribute("id"); + String referencia = modulo.getAttribute("ref"); + // Obtener textos titulo y numero de horas + String titulo = modulo.getElementsByTagName("titulo").item(0) + .getTextContent(); + String numeroHoras = modulo.getElementsByTagName("numerohoras").item(0) + .getTextContent(); + + // Crear el nodo curso en el documento de salida + Element nodoModuloSalida = documentoSalida.createElement("modulo"); + nodoModuloSalida.setAttribute("id", id); + nodoModuloSalida.setAttribute("ref", referencia); + nodoModuloSalida.setAttribute("numero_horas", numeroHoras); + Element nodoTitulo = documentoSalida.createElement("titulo"); + nodoTitulo.setTextContent(titulo); + nodoModuloSalida.appendChild(nodoTitulo); + nodoCursoSalida.appendChild(nodoModuloSalida); + } + } + } + } + } + } + } + } + // Transformar el DOM documentoSalida en un archivo XML + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + // con identación y formato utf-8 + transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes"); + transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); + transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "UTF-8"); + + DOMSource source = new DOMSource(documentoSalida); + + // Archivo de salida + StreamResult resultadoSalida = new StreamResult(new File(RUTA_FICHERO_SALIDA_XML)); + + transformer.transform(source, resultadoSalida); + + } catch (ParserConfigurationException | TransformerException e) { + e.printStackTrace(); + } + } + + private Document obtenerDocumentDeFichero() { + Document domDeXML = null; + File file = new File(RUTA_FICHERO_XML); + try { + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + domDeXML = dBuilder.parse(file); + // Normalizar el archivo XML (Elimina nodos vacíos y combina adyacentes en caso + // de que los hubiera) + domDeXML.getDocumentElement().normalize(); + + } catch (Exception e) { + e.printStackTrace(); + } + return domDeXML; + } +}