primer commit
This commit is contained in:
commit
f934a3cedc
22
.classpath
Normal file
22
.classpath
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<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 including="**/*.java" kind="src" output="target/classes" path="src">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" path="config"/>
|
||||||
|
<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>
|
||||||
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/target/
|
||||||
|
*.class
|
||||||
23
.project
Normal file
23
.project
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>aadd_act2_6</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.m2e.core.maven2Nature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
||||||
12
.settings/org.eclipse.jdt.core.prefs
Normal file
12
.settings/org.eclipse.jdt.core.prefs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
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.enablePreviewFeatures=disabled
|
||||||
|
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||||
|
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
|
||||||
|
org.eclipse.jdt.core.compiler.release=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.source=24
|
||||||
4
.settings/org.eclipse.m2e.core.prefs
Normal file
4
.settings/org.eclipse.m2e.core.prefs
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
activeProfiles=
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
resolveWorkspaceProjects=true
|
||||||
|
version=1
|
||||||
9
config/conf.properties
Normal file
9
config/conf.properties
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# Información sobre fichero XML ciclo-grado.xml
|
||||||
|
ciclogrado.fichero.ruta=C:\\Users\\ineva\\INM\\tmp\\dam2\\aadd\\act26\\ciclos-grados.json
|
||||||
|
|
||||||
|
# Parámetros de conexión a la base de datos 'formacion' en SGDB MySQL (tabla de familias profesionales)
|
||||||
|
jdbc.driver = com.mysql.cj.jdbc.Driver
|
||||||
|
jdbc.url = jdbc:mysql://192.168.1.36:3306/formacion
|
||||||
|
jdbc.usuario = root
|
||||||
|
jdbc.password = mysql_123
|
||||||
|
|
||||||
32
pom.xml
Normal file
32
pom.xml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>aadd_act2_4</groupId>
|
||||||
|
<artifactId>aadd_act2_4</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<dependencies>
|
||||||
|
<!-- 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/tools.jackson.dataformat/jackson-dataformat-xml -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>tools.jackson.dataformat</groupId>
|
||||||
|
<artifactId>jackson-dataformat-xml</artifactId>
|
||||||
|
<version>3.0.1</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>src</sourceDirectory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.13.0</version>
|
||||||
|
<configuration>
|
||||||
|
<release>24</release>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
||||||
59
recursos/Formacion.sql
Normal file
59
recursos/Formacion.sql
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
CREATE DATABASE formacion;
|
||||||
|
USE formacion;
|
||||||
|
|
||||||
|
-- Tabla: T_FAMILIA_PROFESIONAL
|
||||||
|
CREATE TABLE T_FAMILIA_PROFESIONAL (
|
||||||
|
codigo CHAR(5) PRIMARY KEY,
|
||||||
|
nombre VARCHAR(255) NOT NULL,
|
||||||
|
url_img_logo VARCHAR(255) DEFAULT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Tabla: T_GRADO
|
||||||
|
create table T_GRADO(
|
||||||
|
codigo CHAR(5) PRIMARY KEY,
|
||||||
|
nombre VARCHAR(255) NOT NULL,
|
||||||
|
categoria CHAR(1) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Tabla: T_CICLO
|
||||||
|
CREATE TABLE T_CICLO(
|
||||||
|
codigo CHAR(5) PRIMARY KEY,
|
||||||
|
descripcion VARCHAR(255) NOT NULL,
|
||||||
|
numero_horas INT NOT NULL,
|
||||||
|
cod_grado CHAR(5) NOT NULL,
|
||||||
|
cod_familia_profesional CHAR(5) NOT NULL,
|
||||||
|
CONSTRAINT FK_CICLO_FAMILIAPROFESIONAL
|
||||||
|
FOREIGN KEY (cod_familia_profesional) REFERENCES T_FAMILIA_PROFESIONAL(codigo),
|
||||||
|
CONSTRAINT FK_CICLO_GRADO
|
||||||
|
FOREIGN KEY (cod_grado) REFERENCES T_GRADO(codigo)
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO T_FAMILIA_PROFESIONAL (codigo, nombre, url_img_logo) VALUES
|
||||||
|
('ADG', 'Administración y Gestión', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/adg/jcr:content/adg.png.png'),
|
||||||
|
('AFD', 'Actividades Físicas y Deportivas', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/afd/jcr:content/afd.png.png'),
|
||||||
|
('AGA', 'Agraria', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/aga/jcr:content/aga.png.png'),
|
||||||
|
('ARG', 'Artes Gráficas', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/arg/jcr:content/arg.png.png'),
|
||||||
|
('ART', 'Artes y Artesanías', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/art/jcr:content/art.png.png'),
|
||||||
|
('COM', 'Comercio y Marketing', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/com/jcr:content/com.png.png'),
|
||||||
|
('EOC', 'Edificación y Obra Civil', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/eoc/jcr:content/eoc.png.png'),
|
||||||
|
('ELE', 'Electricidad y Electrónica', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/ele/jcr:content/ele.png.png'),
|
||||||
|
('ENA', 'Energía y Agua', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/ena/jcr:content/ena.png.png'),
|
||||||
|
('FME', 'Fabricación Mecánica', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/fme/jcr:content/fme.png.png'),
|
||||||
|
('HOT', 'Hostelería y Turismo', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/hot/jcr:content/hot.png.png'),
|
||||||
|
('IMP', 'Imagen Personal', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/imp/jcr:content/imp.png.png'),
|
||||||
|
('IMS', 'Imagen y Sonido', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/ims/jcr:content/ims.png.png'),
|
||||||
|
('INA', 'Industrias Alimentarias', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/ina/jcr:content/ina.png.png'),
|
||||||
|
('IEX', 'Industrias Extractivas', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/iex/jcr:content/iex.png.png'),
|
||||||
|
('IFC', 'Informática y Comunicaciones', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/ifc/jcr:content/ifc.png.png'),
|
||||||
|
('IMA', 'Instalación y Mantenimiento', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/ima/jcr:content/ima.png.png'),
|
||||||
|
('MAM', 'Madera, Mueble y Corcho', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/mam/jcr:content/mam.png.png'),
|
||||||
|
('MAP', 'Marítimo-Pesquera', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/map/jcr:content/map.png.png'),
|
||||||
|
('QUI', 'Química', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/qui/jcr:content/qui.png.png'),
|
||||||
|
('SAN', 'Sanidad', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/san/jcr:content/san.png.png'),
|
||||||
|
('SEA', 'Seguridad y Medio Ambiente', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/sea/jcr:content/sea.png.png'),
|
||||||
|
('SSC', 'Servicios Socioculturales y a la Comunidad', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/ssc/jcr:content/ssc.png.png'),
|
||||||
|
('TCP', 'Textil, Confección y Piel', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/tcp/jcr:content/tcp.png.png'),
|
||||||
|
('TMV', 'Transporte y Mantenimiento de Vehículos', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/tmv/jcr:content/tmv.png.png'),
|
||||||
|
('VIC', 'Vidrio y Cerámica', 'https://www.todofp.es/.imaging/mte/todofp-theme/contenido-cgi-pqm/dam/todofp/comunes/familias-new/verticales-nombre/vic/jcr:content/vic.png.png');
|
||||||
|
|
||||||
|
|
||||||
87
src/es/palomafp/aadd/inm/GestorFormacion.java
Normal file
87
src/es/palomafp/aadd/inm/GestorFormacion.java
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
package es.palomafp.aadd.inm;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.dao.ICicloDAO;
|
||||||
|
import es.palomafp.aadd.inm.dao.IFamiliaProfesionalDAO;
|
||||||
|
import es.palomafp.aadd.inm.dao.impl.CicloDaoJDBC;
|
||||||
|
import es.palomafp.aadd.inm.dao.impl.FamiliaProfesionalDaoJDBC;
|
||||||
|
import es.palomafp.aadd.inm.procesamiento.ProcesadorCicloGradoJSON;
|
||||||
|
import es.palomafp.aadd.inm.vo.Ciclo;
|
||||||
|
import es.palomafp.aadd.inm.vo.FamiliaProfesional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* GestorFormacion: Clase que se encarga de gestionar Formación (Familias,
|
||||||
|
* Grados y Ciclos)
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 2 oct 2025
|
||||||
|
*/
|
||||||
|
public class GestorFormacion {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Se procesa el fichero XML ciclo_grado.xml
|
||||||
|
ProcesadorCicloGradoJSON procesadorCicloGradoJSON = new ProcesadorCicloGradoJSON();
|
||||||
|
procesadorCicloGradoJSON.procesarFichero();
|
||||||
|
|
||||||
|
String operacion = args[0]; // L: Listar, C: Consultar, I: Insertar, B: Borrar, M: Modificar
|
||||||
|
String parametro1 = args[1];
|
||||||
|
String parametro2 = args[2];
|
||||||
|
|
||||||
|
// Se declaran las variables como Interfaces y se construyen como
|
||||||
|
// implementaciones.
|
||||||
|
IFamiliaProfesionalDAO iFamiliaProfesionalDAO = new FamiliaProfesionalDaoJDBC();
|
||||||
|
|
||||||
|
|
||||||
|
switch (operacion) {
|
||||||
|
case "L":
|
||||||
|
List<FamiliaProfesional> listaFamilias = iFamiliaProfesionalDAO.obtenerListaFamiliasProfesionales();
|
||||||
|
System.out.println(listaFamilias);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "C": {
|
||||||
|
FamiliaProfesional familiaProfesional = iFamiliaProfesionalDAO.obtenerFamiliaProfesionalPorCodigo(parametro1);
|
||||||
|
System.out.println(familiaProfesional);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "I": {
|
||||||
|
FamiliaProfesional familiaProfesional = iFamiliaProfesionalDAO.obtenerFamiliaProfesionalPorCodigo(parametro1);
|
||||||
|
// Si el código existe en el fichero se lanza mensaje
|
||||||
|
if (familiaProfesional != null) {
|
||||||
|
System.out.println("El código de familia profesional ya existe.");
|
||||||
|
} else { // Inserción
|
||||||
|
familiaProfesional = new FamiliaProfesional();
|
||||||
|
familiaProfesional.setCodigo(parametro1);
|
||||||
|
familiaProfesional.setNombre(parametro2);
|
||||||
|
iFamiliaProfesionalDAO.insertarFamiliaProfesional(familiaProfesional);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "B": {
|
||||||
|
iFamiliaProfesionalDAO.eliminarFamiliaProfesional(parametro1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "M": {
|
||||||
|
FamiliaProfesional familiaProfesional = iFamiliaProfesionalDAO.obtenerFamiliaProfesionalPorCodigo(parametro1);
|
||||||
|
familiaProfesional.setCodigo(parametro1);
|
||||||
|
familiaProfesional.setNombre(parametro2);
|
||||||
|
iFamiliaProfesionalDAO.actualizarFamiliaProfesional(familiaProfesional);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "1": {
|
||||||
|
ICicloDAO iCicloDAO = new CicloDaoJDBC();
|
||||||
|
List<Ciclo> listaCiclos = iCicloDAO.obtenerListaCiclosPorFamiliaGrado(parametro1, parametro2);
|
||||||
|
for (Ciclo ciclo : listaCiclos) {
|
||||||
|
String textoImprimir = "El ciclo %s incluido en la familia de %s es un %s de la categoría %s";
|
||||||
|
textoImprimir = String.format(textoImprimir, ciclo.getDescripcion(), ciclo.getFamilia().getNombre(),
|
||||||
|
ciclo.getGrado().getNombre(), ciclo.getGrado().getCategoria());
|
||||||
|
System.out.println(textoImprimir);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
23
src/es/palomafp/aadd/inm/dao/ICicloDAO.java
Normal file
23
src/es/palomafp/aadd/inm/dao/ICicloDAO.java
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.vo.Ciclo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* ICicloDAO: Interfaz que contiene las operaciones a realizar sobre un Ciclo
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 3 oct 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public interface ICicloDAO {
|
||||||
|
Ciclo obtenerCicloPorCodigo(String codigoCiclo);
|
||||||
|
List<Ciclo> obtenerListaCiclosPorFamiliaGrado(String codigoFamilia, String codigoGrado);
|
||||||
|
void insertarCiclo(Ciclo ciclo);
|
||||||
|
void actualizarCiclo(Ciclo ciclo);
|
||||||
|
}
|
||||||
|
|
||||||
24
src/es/palomafp/aadd/inm/dao/IFamiliaProfesionalDAO.java
Normal file
24
src/es/palomafp/aadd/inm/dao/IFamiliaProfesionalDAO.java
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.vo.FamiliaProfesional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* IFamiliaProfesionalDAO: Interfaz que contiene las operaciones a realizar
|
||||||
|
* sobre una Familia Profesional.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 3 oct 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public interface IFamiliaProfesionalDAO {
|
||||||
|
FamiliaProfesional obtenerFamiliaProfesionalPorCodigo(String codigoFamilia);
|
||||||
|
List<FamiliaProfesional> obtenerListaFamiliasProfesionales();
|
||||||
|
void insertarFamiliaProfesional(FamiliaProfesional familiaProfesional);
|
||||||
|
void eliminarFamiliaProfesional(String codigoFamiliia);
|
||||||
|
void actualizarFamiliaProfesional(FamiliaProfesional familiaProfesional);
|
||||||
|
}
|
||||||
19
src/es/palomafp/aadd/inm/dao/IGradoDAO.java
Normal file
19
src/es/palomafp/aadd/inm/dao/IGradoDAO.java
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.vo.Grado;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* IGradoDAO: Interfaz que contiene las operaciones a realizar sobre un Grado.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 3 oct 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public interface IGradoDAO {
|
||||||
|
Grado obtenerGradoPorCodigo(String codigoGrado);
|
||||||
|
void actualizarGrado(Grado grado);
|
||||||
|
void insertarGrado(Grado grado);
|
||||||
|
}
|
||||||
179
src/es/palomafp/aadd/inm/dao/impl/CicloDaoJDBC.java
Normal file
179
src/es/palomafp/aadd/inm/dao/impl/CicloDaoJDBC.java
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao.impl;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.dao.ICicloDAO;
|
||||||
|
import es.palomafp.aadd.inm.gestor.GestorConexionJDBC;
|
||||||
|
import es.palomafp.aadd.inm.vo.Ciclo;
|
||||||
|
import es.palomafp.aadd.inm.vo.FamiliaProfesional;
|
||||||
|
import es.palomafp.aadd.inm.vo.Grado;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* CicloDaoJDBC: Clase que implementa las operaciones del interfaz ICicloDAO
|
||||||
|
* para JDBC.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 10 nov 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class CicloDaoJDBC implements ICicloDAO {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Ciclo obtenerCicloPorCodigo(String codigoCiclo) {
|
||||||
|
Ciclo ciclo = null;
|
||||||
|
String sentenciaSQL = """
|
||||||
|
SELECT c.codigo as codigo_ciclo, c.descripcion, c.numero_horas,
|
||||||
|
fp.codigo AS codigo_familia_profesional, fp.nombre AS nombre_familia_profesional, fp.url_img_logo,
|
||||||
|
g.codigo AS codigo_grado, g.nombre AS nombre_grado, g.categoria
|
||||||
|
FROM T_CICLO c join T_FAMILIA_PROFESIONAL fp
|
||||||
|
ON c.cod_familia_profesional = fp.codigo
|
||||||
|
join T_GRADO g
|
||||||
|
ON c.cod_grado = g.codigo
|
||||||
|
WHERE c.codigo = '%s'
|
||||||
|
""";
|
||||||
|
sentenciaSQL = String.format(sentenciaSQL, codigoCiclo);
|
||||||
|
|
||||||
|
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
||||||
|
Statement statement = conexion.createStatement();
|
||||||
|
ResultSet resultado = statement.executeQuery(sentenciaSQL);) {
|
||||||
|
if (resultado.next()) {
|
||||||
|
// Información del ciclo
|
||||||
|
String descripcion = resultado.getString("descripcion");
|
||||||
|
String numeroHoras = resultado.getString("numero_horas");
|
||||||
|
ciclo = new Ciclo();
|
||||||
|
ciclo.setCodigo(codigoCiclo);
|
||||||
|
ciclo.setDescripcion(descripcion);
|
||||||
|
ciclo.setNumeroHoras(Integer.parseInt(numeroHoras));
|
||||||
|
// Información del Familia Profesional
|
||||||
|
String codFamilia = resultado.getString("codigo_familia_profesional");
|
||||||
|
String nombreFamilia = resultado.getString("nombre_familia_profesional");
|
||||||
|
String urlImgLogo = resultado.getString("url_img_logo");
|
||||||
|
FamiliaProfesional familiaProfesional = new FamiliaProfesional();
|
||||||
|
familiaProfesional.setCodigo(codFamilia);
|
||||||
|
familiaProfesional.setNombre(nombreFamilia);
|
||||||
|
familiaProfesional.setUrlImageLogo(urlImgLogo);
|
||||||
|
ciclo.setFamilia(familiaProfesional);
|
||||||
|
|
||||||
|
// Información del grado
|
||||||
|
String codGrado = resultado.getString("codigo_grado");
|
||||||
|
String nombreGrado = resultado.getString("nombre_grado");
|
||||||
|
String categotia = resultado.getString("categoria");
|
||||||
|
Grado grado = new Grado();
|
||||||
|
grado.setCodigo(codGrado);
|
||||||
|
grado.setNombre(nombreGrado);
|
||||||
|
grado.setCategoria(categotia);
|
||||||
|
ciclo.setGrado(grado);
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
}
|
||||||
|
return ciclo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Ciclo> obtenerListaCiclosPorFamiliaGrado(String codigoFamilia, String codigoGrado) {
|
||||||
|
List<Ciclo> listaCiclos = null;
|
||||||
|
String sentenciaSQL = """
|
||||||
|
SELECT c.codigo as codigo_ciclo, c.descripcion, c.numero_horas,
|
||||||
|
fp.codigo AS codigo_familia_profesional, fp.nombre AS nombre_familia_profesional, fp.url_img_logo,
|
||||||
|
g.codigo AS codigo_grado, g.nombre AS nombre_grado, g.categoria
|
||||||
|
FROM T_CICLO c join T_FAMILIA_PROFESIONAL fp
|
||||||
|
ON c.cod_familia_profesional = fp.codigo
|
||||||
|
join T_GRADO g
|
||||||
|
ON c.cod_grado = g.codigo
|
||||||
|
WHERE c.cod_grado = '%s' and cod_familia_profesional = '%s'
|
||||||
|
""";
|
||||||
|
sentenciaSQL = String.format(sentenciaSQL, codigoGrado, codigoFamilia);
|
||||||
|
System.out.println(sentenciaSQL);
|
||||||
|
|
||||||
|
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
||||||
|
Statement statement = conexion.createStatement();
|
||||||
|
ResultSet resultado = statement.executeQuery(sentenciaSQL);) {
|
||||||
|
listaCiclos = new java.util.ArrayList<Ciclo>();
|
||||||
|
while (resultado.next()) {
|
||||||
|
// Información del ciclo
|
||||||
|
String codigoCiclo = resultado.getString("codigo_ciclo");
|
||||||
|
String descripcion = resultado.getString("descripcion");
|
||||||
|
String numeroHoras = resultado.getString("numero_horas");
|
||||||
|
Ciclo ciclo = new Ciclo();
|
||||||
|
ciclo.setCodigo(codigoCiclo);
|
||||||
|
ciclo.setDescripcion(descripcion);
|
||||||
|
ciclo.setNumeroHoras(Integer.parseInt(numeroHoras));
|
||||||
|
|
||||||
|
// Información del Familia Profesional
|
||||||
|
String codFamilia = resultado.getString("codigo_familia_profesional");
|
||||||
|
String nombreFamilia = resultado.getString("nombre_familia_profesional");
|
||||||
|
String urlImgLogo = resultado.getString("url_img_logo");
|
||||||
|
FamiliaProfesional familiaProfesional = new FamiliaProfesional();
|
||||||
|
familiaProfesional.setCodigo(codFamilia);
|
||||||
|
familiaProfesional.setNombre(nombreFamilia);
|
||||||
|
familiaProfesional.setUrlImageLogo(urlImgLogo);
|
||||||
|
ciclo.setFamilia(familiaProfesional);
|
||||||
|
|
||||||
|
// Información del grado
|
||||||
|
String codGrado = resultado.getString("codigo_grado");
|
||||||
|
String nombreGrado = resultado.getString("nombre_grado");
|
||||||
|
String categotia = resultado.getString("categoria");
|
||||||
|
Grado grado = new Grado();
|
||||||
|
grado.setCodigo(codGrado);
|
||||||
|
grado.setNombre(nombreGrado);
|
||||||
|
grado.setCategoria(categotia);
|
||||||
|
ciclo.setGrado(grado);
|
||||||
|
|
||||||
|
// Añadir ciclo a la lista
|
||||||
|
listaCiclos.add(ciclo);
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
}
|
||||||
|
return listaCiclos;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void insertarCiclo(Ciclo ciclo) {
|
||||||
|
String sentenciaSQL = "INSERT INTO T_CICLO (codigo, descripcion, numero_horas, cod_grado, cod_familia_profesional) values ('%s', '%s', %d, '%s', '%s')";
|
||||||
|
sentenciaSQL = String.format(sentenciaSQL, ciclo.getCodigo(), ciclo.getDescripcion(), ciclo.getNumeroHoras(),
|
||||||
|
ciclo.getGrado().getCodigo(), ciclo.getFamilia().getCodigo());
|
||||||
|
// System.out.println(sentenciaSQL);
|
||||||
|
|
||||||
|
// try con recursos "cerrables": Connection, Statement
|
||||||
|
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
||||||
|
Statement stm = conexion.createStatement();) {
|
||||||
|
stm.executeUpdate(sentenciaSQL);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actualizarCiclo(Ciclo ciclo) {
|
||||||
|
String sentenciaSQL = """
|
||||||
|
UPDATE T_CICLO
|
||||||
|
set descripcion= '%s', numero_horas=%d, cod_grado='%s', cod_familia_profesional='%s'
|
||||||
|
WHERE codigo='%s'
|
||||||
|
""";
|
||||||
|
sentenciaSQL = String.format(sentenciaSQL, ciclo.getDescripcion(), ciclo.getNumeroHoras(),
|
||||||
|
ciclo.getGrado().getCodigo(), ciclo.getFamilia().getCodigo(), ciclo.getCodigo());
|
||||||
|
// System.out.println(sentenciaSQL);
|
||||||
|
|
||||||
|
// try con recursos "cerrables": Connection, Statement
|
||||||
|
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
||||||
|
Statement stm = conexion.createStatement();) {
|
||||||
|
stm.executeUpdate(sentenciaSQL);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
99
src/es/palomafp/aadd/inm/dao/impl/CicloDaoTXT.java
Normal file
99
src/es/palomafp/aadd/inm/dao/impl/CicloDaoTXT.java
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao.impl;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.dao.ICicloDAO;
|
||||||
|
import es.palomafp.aadd.inm.dao.IFamiliaProfesionalDAO;
|
||||||
|
import es.palomafp.aadd.inm.dao.IGradoDAO;
|
||||||
|
import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion;
|
||||||
|
import es.palomafp.aadd.inm.vo.Ciclo;
|
||||||
|
import es.palomafp.aadd.inm.vo.FamiliaProfesional;
|
||||||
|
import es.palomafp.aadd.inm.vo.Grado;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Ciclo: Clase que implementa las operaciones del interfaz ICicloDAO.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 3 oct 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class CicloDaoTXT implements ICicloDAO {
|
||||||
|
private final static String RUTA_FICHERO_CICLOS = GestorFicheroConfiguracion.getValorfromClave("ciclo.fichero.ruta");
|
||||||
|
private static final String DELIMITADOR = GestorFicheroConfiguracion.getValorfromClave("ciclo.fichero.separador");;
|
||||||
|
|
||||||
|
private Path pathFichero = Paths.get(RUTA_FICHERO_CICLOS);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Ciclo obtenerCicloPorCodigo(String codigoCiclo) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Ciclo> obtenerListaCiclosPorFamiliaGrado(String codigoFamilia, String codigoGrado) {
|
||||||
|
List<Ciclo> listaCiclos = null;
|
||||||
|
|
||||||
|
List<String> lineas;
|
||||||
|
try {
|
||||||
|
lineas = Files.readAllLines(pathFichero, StandardCharsets.UTF_8);
|
||||||
|
List<String> lineasSinCabecera = lineas.subList(1, lineas.size());
|
||||||
|
|
||||||
|
if (!lineasSinCabecera.isEmpty()) {
|
||||||
|
listaCiclos = new ArrayList<Ciclo>();
|
||||||
|
IGradoDAO iGradoDAO = new GradoDaoCSV();
|
||||||
|
IFamiliaProfesionalDAO iFamiliaProfesionalDAO = new FamiliaProfesionalDaoJDBC();
|
||||||
|
for (String linea : lineasSinCabecera) {
|
||||||
|
// Procesar información de Ciclo
|
||||||
|
String[] camposCiclo = linea.split(DELIMITADOR);
|
||||||
|
String codCiclo = camposCiclo[0].strip();
|
||||||
|
String nombreCiclo = camposCiclo[1].strip();
|
||||||
|
String numeroHoras = camposCiclo[2].strip();
|
||||||
|
String codFamilia = camposCiclo[3].strip();
|
||||||
|
String codGrado = camposCiclo[4].strip();
|
||||||
|
|
||||||
|
if ((codigoFamilia != null && codigoFamilia.equals(codFamilia))
|
||||||
|
&& (codigoGrado != null && codigoGrado.equals(codGrado))) {
|
||||||
|
Ciclo ciclo = new Ciclo();
|
||||||
|
FamiliaProfesional familiaProfesional = iFamiliaProfesionalDAO
|
||||||
|
.obtenerFamiliaProfesionalPorCodigo(codigoFamilia);
|
||||||
|
Grado grado = iGradoDAO.obtenerGradoPorCodigo(codGrado);
|
||||||
|
ciclo.setCodigo(codCiclo);
|
||||||
|
ciclo.setDescripcion(nombreCiclo);
|
||||||
|
ciclo.setNumeroHoras(Integer.parseInt(numeroHoras));
|
||||||
|
ciclo.setFamilia(familiaProfesional);
|
||||||
|
ciclo.setGrado(grado);
|
||||||
|
|
||||||
|
listaCiclos.add(ciclo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println("Error al leer el fichero: " + RUTA_FICHERO_CICLOS);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return listaCiclos;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void insertarCiclo(Ciclo ciclo) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actualizarCiclo(Ciclo ciclo) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
197
src/es/palomafp/aadd/inm/dao/impl/FamiliaProfesionalDaoCSV.java
Normal file
197
src/es/palomafp/aadd/inm/dao/impl/FamiliaProfesionalDaoCSV.java
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao.impl;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.nio.file.StandardCopyOption;
|
||||||
|
import java.nio.file.StandardOpenOption;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.dao.IFamiliaProfesionalDAO;
|
||||||
|
import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion;
|
||||||
|
import es.palomafp.aadd.inm.vo.FamiliaProfesional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* FamiliaProfesionalDao: Clase que implementa las operaciones del interfaz
|
||||||
|
* IFamiliaProfesionalDAO.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 3 oct 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class FamiliaProfesionalDaoCSV implements IFamiliaProfesionalDAO {
|
||||||
|
private final static String RUTA_FICHERO_FAMILIAS_PROFESIONALES =GestorFicheroConfiguracion.getValorfromClave("familiaprofesional.fichero.ruta");
|
||||||
|
private final static String RUTA_FICHERO_TMP_FAMILIAS_PROFESIONALES = GestorFicheroConfiguracion.getValorfromClave("familiaprofesional.ficherotmp.ruta");
|
||||||
|
private static final String DELIMITADOR = GestorFicheroConfiguracion.getValorfromClave("familiaprofesional.fichero.separador");;
|
||||||
|
|
||||||
|
private Path pathFichero = Paths.get(RUTA_FICHERO_FAMILIAS_PROFESIONALES);
|
||||||
|
private Path pathFicheroTMP = Paths.get(RUTA_FICHERO_TMP_FAMILIAS_PROFESIONALES);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FamiliaProfesional obtenerFamiliaProfesionalPorCodigo(String codigoFamilia) {
|
||||||
|
FamiliaProfesional familiaProfesional = null;
|
||||||
|
|
||||||
|
List<String> lineas;
|
||||||
|
try {
|
||||||
|
lineas = Files.readAllLines(pathFichero, StandardCharsets.UTF_8);
|
||||||
|
List<String> lineasSinCabecera = lineas.subList(1, lineas.size());
|
||||||
|
|
||||||
|
for (String linea : lineasSinCabecera) {
|
||||||
|
// Procesar información de la Familia Profesional
|
||||||
|
String[] camposFamilia = linea.split(DELIMITADOR);
|
||||||
|
String codFamilia = camposFamilia[0].trim();
|
||||||
|
String nombreFamilia = camposFamilia[1].trim();
|
||||||
|
|
||||||
|
if (codigoFamilia != null && codigoFamilia.equals(codFamilia)) {
|
||||||
|
familiaProfesional = new FamiliaProfesional();
|
||||||
|
|
||||||
|
familiaProfesional.setCodigo(codFamilia);
|
||||||
|
familiaProfesional.setNombre(nombreFamilia);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println("Error al leer el fichero: " + RUTA_FICHERO_FAMILIAS_PROFESIONALES);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return familiaProfesional;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<FamiliaProfesional> obtenerListaFamiliasProfesionales() {
|
||||||
|
List<FamiliaProfesional> listaFamilias = null;
|
||||||
|
|
||||||
|
List<String> lineas;
|
||||||
|
try {
|
||||||
|
lineas = Files.readAllLines(pathFichero, StandardCharsets.UTF_8);
|
||||||
|
List<String> lineasSinCabecera = lineas.subList(1, lineas.size());
|
||||||
|
if (!lineasSinCabecera.isEmpty()) {
|
||||||
|
listaFamilias = new ArrayList<>();
|
||||||
|
for (String linea : lineasSinCabecera) {
|
||||||
|
// Procesar información de la Familia Profesional
|
||||||
|
String[] camposFamilia = linea.split(DELIMITADOR);
|
||||||
|
String codFamilia = camposFamilia[0].trim();
|
||||||
|
String nombreFamilia = camposFamilia[1].trim();
|
||||||
|
|
||||||
|
FamiliaProfesional familiaProfesional = new FamiliaProfesional();
|
||||||
|
|
||||||
|
familiaProfesional.setCodigo(codFamilia);
|
||||||
|
familiaProfesional.setNombre(nombreFamilia);
|
||||||
|
// System.out.println("familiaProfesional: " + familiaProfesional);
|
||||||
|
|
||||||
|
|
||||||
|
listaFamilias.add(familiaProfesional);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println("Error al leer el fichero: " + RUTA_FICHERO_FAMILIAS_PROFESIONALES);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return listaFamilias;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserta una nueva familia profesional en el fichero CSV.
|
||||||
|
*
|
||||||
|
* @param familiaProfesional Familia profesional a insertar.
|
||||||
|
*/
|
||||||
|
public void insertarFamiliaProfesional(FamiliaProfesional familiaProfesional) {
|
||||||
|
String nuevaFamilia = String.format("%s%s%s\n", familiaProfesional.getCodigo(),DELIMITADOR, familiaProfesional.getNombre());
|
||||||
|
|
||||||
|
try {
|
||||||
|
Files.writeString(pathFichero, nuevaFamilia, StandardOpenOption.CREATE, StandardOpenOption.APPEND);
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println("Error al leer el fichero: " + RUTA_FICHERO_FAMILIAS_PROFESIONALES);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Elimina una familia profesional del fichero CSV.
|
||||||
|
*
|
||||||
|
* @param codigoFamilia Código de la familia profesional a eliminar.
|
||||||
|
*/
|
||||||
|
public void eliminarFamiliaProfesional(String codigoFamilia) {
|
||||||
|
List<FamiliaProfesional> listaFamilias = obtenerListaFamiliasProfesionales();
|
||||||
|
|
||||||
|
if (listaFamilias != null) {
|
||||||
|
listaFamilias.removeIf(familiaProfesional -> familiaProfesional.getCodigo().equals(codigoFamilia));
|
||||||
|
|
||||||
|
insertarFamiliasProfesionalesFichero(listaFamilias);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Actualiza el nombre de una familia profesional.
|
||||||
|
*
|
||||||
|
* @param familiaProfesional Familia profesional con el código y el nuevo
|
||||||
|
* nombre.
|
||||||
|
*/
|
||||||
|
public void actualizarFamiliaProfesional(FamiliaProfesional familiaProfesional) {
|
||||||
|
List<FamiliaProfesional> listaFamilias = obtenerListaFamiliasProfesionales();
|
||||||
|
|
||||||
|
// Se cambia el valor del nombre de la familia.
|
||||||
|
for (FamiliaProfesional familiaProf : listaFamilias) {
|
||||||
|
if (familiaProf.getCodigo().equals(familiaProfesional.getCodigo())) {
|
||||||
|
familiaProf.setNombre(familiaProfesional.getNombre());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
insertarFamiliasProfesionalesFichero(listaFamilias);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserta la lista de familias profesionales en el fichero CSV. Para ello
|
||||||
|
* primero crea un fichero temporal y luego renombra el fichero temporal al
|
||||||
|
* original.
|
||||||
|
*
|
||||||
|
* @param listaFamilias Lista de familias profesionales a insertar.
|
||||||
|
*/
|
||||||
|
private void insertarFamiliasProfesionalesFichero(List<FamiliaProfesional> listaFamilias) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
String cabecera = String.format("codigo_familia|nombre_familia\n");
|
||||||
|
|
||||||
|
Files.writeString(pathFicheroTMP, cabecera, StandardOpenOption.CREATE, StandardOpenOption.APPEND);
|
||||||
|
|
||||||
|
for (FamiliaProfesional familiaProfesional : listaFamilias) {
|
||||||
|
String nuevaFamilia = String.format("%s%s%s\n", familiaProfesional.getCodigo(), DELIMITADOR,
|
||||||
|
familiaProfesional.getNombre());
|
||||||
|
|
||||||
|
Files.writeString(pathFicheroTMP, nuevaFamilia, StandardOpenOption.APPEND);
|
||||||
|
|
||||||
|
}
|
||||||
|
// Se elimina el fichero original y se renombra el temporal
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println("Error al leer el fichero: " + RUTA_FICHERO_TMP_FAMILIAS_PROFESIONALES);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Se elimina el fichero original y se renombra el temporal
|
||||||
|
organizarFicheros();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void organizarFicheros() {
|
||||||
|
try {
|
||||||
|
// Borrado del fichero original
|
||||||
|
Files.deleteIfExists(pathFichero);
|
||||||
|
|
||||||
|
// Renombrado del fichero temporal
|
||||||
|
Files.move(pathFicheroTMP, pathFichero, StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println("Error al renombrar el fichero: " + RUTA_FICHERO_TMP_FAMILIAS_PROFESIONALES);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
130
src/es/palomafp/aadd/inm/dao/impl/FamiliaProfesionalDaoJDBC.java
Normal file
130
src/es/palomafp/aadd/inm/dao/impl/FamiliaProfesionalDaoJDBC.java
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao.impl;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.dao.IFamiliaProfesionalDAO;
|
||||||
|
import es.palomafp.aadd.inm.gestor.GestorConexionJDBC;
|
||||||
|
import es.palomafp.aadd.inm.vo.FamiliaProfesional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* FamiliaProfesionalDaoJDBC: Clase que implementa las operaciones del interfaz
|
||||||
|
* IFamiliaProfesionalDAO usando JDBC.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 7 nov 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class FamiliaProfesionalDaoJDBC implements IFamiliaProfesionalDAO {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FamiliaProfesional obtenerFamiliaProfesionalPorCodigo(String codigoFamilia) {
|
||||||
|
FamiliaProfesional familiaProfesional = null;
|
||||||
|
String sentenciaSQL = "SELECT * FROM T_FAMILIA_PROFESIONAL WHERE codigo = '%s'";
|
||||||
|
sentenciaSQL = String.format(sentenciaSQL, codigoFamilia);
|
||||||
|
|
||||||
|
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
||||||
|
Statement statement = conexion.createStatement();
|
||||||
|
ResultSet resultado = statement.executeQuery(sentenciaSQL);) {
|
||||||
|
if (resultado.next()) {
|
||||||
|
String codigo = resultado.getString("codigo");
|
||||||
|
String nombre = resultado.getString("nombre");
|
||||||
|
String urlImagenLogo = resultado.getString("url_img_logo");
|
||||||
|
familiaProfesional = new FamiliaProfesional();
|
||||||
|
familiaProfesional.setCodigo(codigo);
|
||||||
|
familiaProfesional.setNombre(nombre);
|
||||||
|
familiaProfesional.setUrlImageLogo(urlImagenLogo);
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
}
|
||||||
|
return familiaProfesional;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<FamiliaProfesional> obtenerListaFamiliasProfesionales() {
|
||||||
|
List<FamiliaProfesional> listaFamiliasProfesionales = null;
|
||||||
|
|
||||||
|
String sentenciaSQL = "SELECT * FROM T_FAMILIA_PROFESIONAL";
|
||||||
|
|
||||||
|
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
||||||
|
Statement statement = conexion.createStatement();
|
||||||
|
ResultSet resultado = statement.executeQuery(sentenciaSQL);) {
|
||||||
|
listaFamiliasProfesionales = new java.util.ArrayList<FamiliaProfesional>();
|
||||||
|
while (resultado.next()) {
|
||||||
|
String codigo = resultado.getString("codigo");
|
||||||
|
String nombre = resultado.getString("nombre");
|
||||||
|
String urlImagenLogo = resultado.getString("url_img_logo");
|
||||||
|
FamiliaProfesional familiaProfesional = new FamiliaProfesional();
|
||||||
|
familiaProfesional.setCodigo(codigo);
|
||||||
|
familiaProfesional.setNombre(nombre);
|
||||||
|
familiaProfesional.setUrlImageLogo(urlImagenLogo);
|
||||||
|
|
||||||
|
listaFamiliasProfesionales.add(familiaProfesional);
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return listaFamiliasProfesionales;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void insertarFamiliaProfesional(FamiliaProfesional familiaProfesional) {
|
||||||
|
String sentenciaSQL = "INSERT INTO T_FAMILIA_PROFESIONAL values ('%s', '%s', %s)";
|
||||||
|
String urlImageLogo = (familiaProfesional.getUrlImageLogo()!=null)?("'" + familiaProfesional.getUrlImageLogo() + "'"):"NULL";
|
||||||
|
sentenciaSQL = String.format(sentenciaSQL, familiaProfesional.getCodigo(), familiaProfesional.getNombre(), urlImageLogo);
|
||||||
|
// System.out.println(sentenciaSQL);
|
||||||
|
|
||||||
|
// try con recursos "cerrables": Connection, Statement
|
||||||
|
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
||||||
|
Statement stm = conexion.createStatement();) {
|
||||||
|
stm.executeUpdate(sentenciaSQL);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void eliminarFamiliaProfesional(String codigoFamilia) {
|
||||||
|
String sentenciaSQL = "DELETE FROM T_FAMILIA_PROFESIONAL WHERE codigo='%s'";
|
||||||
|
sentenciaSQL = String.format(sentenciaSQL, codigoFamilia);
|
||||||
|
// System.out.println(sentenciaSQL);
|
||||||
|
|
||||||
|
// try con recursos "cerrables": Connection, Statement
|
||||||
|
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
||||||
|
Statement stm = conexion.createStatement();) {
|
||||||
|
stm.executeUpdate(sentenciaSQL);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actualizarFamiliaProfesional(FamiliaProfesional familiaProfesional) {
|
||||||
|
String sentenciaSQL = "UPDATE T_FAMILIA_PROFESIONAL set nombre= '%s', url_img_logo='%s' WHERE codigo='%s'";
|
||||||
|
sentenciaSQL = String.format(sentenciaSQL, familiaProfesional.getNombre(), familiaProfesional.getUrlImageLogo(),
|
||||||
|
familiaProfesional.getCodigo());
|
||||||
|
// System.out.println(sentenciaSQL);
|
||||||
|
|
||||||
|
// try con recursos "cerrables": Connection, Statement
|
||||||
|
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
||||||
|
Statement stm = conexion.createStatement();) {
|
||||||
|
stm.executeUpdate(sentenciaSQL);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
75
src/es/palomafp/aadd/inm/dao/impl/GradoDaoCSV.java
Normal file
75
src/es/palomafp/aadd/inm/dao/impl/GradoDaoCSV.java
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao.impl;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.dao.IGradoDAO;
|
||||||
|
import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion;
|
||||||
|
import es.palomafp.aadd.inm.vo.Grado;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* GradoDao: Clase que implementa las operaciones del interfaz IGradoDAO.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 3 oct 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class GradoDaoCSV implements IGradoDAO {
|
||||||
|
private final static String RUTA_FICHERO_GRADOS = GestorFicheroConfiguracion.getValorfromClave("grado.fichero.ruta");
|
||||||
|
private static final String DELIMITADOR = GestorFicheroConfiguracion.getValorfromClave("grado.fichero.separador");;
|
||||||
|
|
||||||
|
private Path pathFichero = Paths.get(RUTA_FICHERO_GRADOS);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Grado obtenerGradoPorCodigo(String codigoGrado) {
|
||||||
|
Grado grado = null;
|
||||||
|
|
||||||
|
List<String> lineas;
|
||||||
|
try {
|
||||||
|
lineas = Files.readAllLines(pathFichero, StandardCharsets.UTF_8);
|
||||||
|
List<String> lineasSinCabecera = lineas.subList(1, lineas.size());
|
||||||
|
|
||||||
|
for (String linea : lineasSinCabecera) {
|
||||||
|
// Procesar información de un Grado
|
||||||
|
String[] camposGrado = linea.split(DELIMITADOR);
|
||||||
|
String codGrado = camposGrado[0].strip();
|
||||||
|
String descripcionGrado = camposGrado[1].strip();
|
||||||
|
String categoriaGrado = camposGrado[2].strip();
|
||||||
|
|
||||||
|
if (codigoGrado != null && codigoGrado.equals(codGrado)) {
|
||||||
|
grado = new Grado();
|
||||||
|
|
||||||
|
grado.setCodigo(codGrado);
|
||||||
|
grado.setNombre(descripcionGrado);
|
||||||
|
grado.setCategoria(categoriaGrado);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println("Error al leer el fichero: " + RUTA_FICHERO_GRADOS);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return grado;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actualizarGrado(Grado grado) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void insertarGrado(Grado grado) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
81
src/es/palomafp/aadd/inm/dao/impl/GradoDaoJDBC.java
Normal file
81
src/es/palomafp/aadd/inm/dao/impl/GradoDaoJDBC.java
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
package es.palomafp.aadd.inm.dao.impl;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.dao.IGradoDAO;
|
||||||
|
import es.palomafp.aadd.inm.gestor.GestorConexionJDBC;
|
||||||
|
import es.palomafp.aadd.inm.vo.Grado;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* GradoDaoJDBC: Clase que implementa las operaciones del interfaz IGradoDAO
|
||||||
|
* para JDBC.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 10 nov 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class GradoDaoJDBC implements IGradoDAO {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Grado obtenerGradoPorCodigo(String codigoGrado) {
|
||||||
|
Grado grado = null;
|
||||||
|
String sentenciaSQL = "SELECT * FROM T_GRADO WHERE codigo = '%s'";
|
||||||
|
sentenciaSQL = String.format(sentenciaSQL, codigoGrado);
|
||||||
|
|
||||||
|
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
||||||
|
Statement statement = conexion.createStatement();
|
||||||
|
ResultSet resultado = statement.executeQuery(sentenciaSQL);) {
|
||||||
|
if (resultado.next()) {
|
||||||
|
String codigo = resultado.getString("codigo");
|
||||||
|
String nombre = resultado.getString("nombre");
|
||||||
|
String categoria = resultado.getString("categoria");
|
||||||
|
grado = new Grado();
|
||||||
|
grado.setCodigo(codigo);
|
||||||
|
grado.setNombre(nombre);
|
||||||
|
grado.setCategoria(categoria);
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
}
|
||||||
|
return grado;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actualizarGrado(Grado grado) {
|
||||||
|
String sentenciaSQL = "UPDATE T_GRADO set nombre= '%s', categoria='%s' WHERE codigo='%s'";
|
||||||
|
sentenciaSQL = String.format(sentenciaSQL, grado.getNombre(), grado.getCategoria(), grado.getCodigo());
|
||||||
|
// System.out.println(sentenciaSQL);
|
||||||
|
|
||||||
|
// try con recursos "cerrables": Connection, Statement
|
||||||
|
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
||||||
|
Statement stm = conexion.createStatement();) {
|
||||||
|
stm.executeUpdate(sentenciaSQL);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void insertarGrado(Grado grado) {
|
||||||
|
String sentenciaSQL = "INSERT INTO T_GRADO (codigo, nombre, categoria ) values ('%s', '%s', '%s')";
|
||||||
|
sentenciaSQL = String.format(sentenciaSQL, grado.getCodigo(), grado.getNombre(), grado.getCategoria());
|
||||||
|
// System.out.println(sentenciaSQL);
|
||||||
|
|
||||||
|
// try con recursos "cerrables": Connection, Statement
|
||||||
|
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
||||||
|
Statement stm = conexion.createStatement();) {
|
||||||
|
stm.executeUpdate(sentenciaSQL);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
39
src/es/palomafp/aadd/inm/gestor/GestorConexionJDBC.java
Normal file
39
src/es/palomafp/aadd/inm/gestor/GestorConexionJDBC.java
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
package es.palomafp.aadd.inm.gestor;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* GestorConexionJDBC: Clase que realiza la gestión de la conexión JDBC.
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 6 nov 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class GestorConexionJDBC {
|
||||||
|
|
||||||
|
// Constructor privado para evitar instanciación
|
||||||
|
private GestorConexionJDBC() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Connection obtenerConexionJDBC() {
|
||||||
|
Connection conexion = null;
|
||||||
|
String driverJDBC= GestorFicheroConfiguracion.getValorfromClave("jdbc.driver");
|
||||||
|
try {
|
||||||
|
Class.forName(driverJDBC);
|
||||||
|
|
||||||
|
String urlJDBC= GestorFicheroConfiguracion.getValorfromClave("jdbc.url");
|
||||||
|
String usuario= GestorFicheroConfiguracion.getValorfromClave("jdbc.usuario");
|
||||||
|
String password= GestorFicheroConfiguracion.getValorfromClave("jdbc.password");
|
||||||
|
|
||||||
|
conexion=DriverManager.getConnection(urlJDBC, usuario, password);
|
||||||
|
} catch (ClassNotFoundException | SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return conexion;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
package es.palomafp.aadd.inm.gestor;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* GestorConfiguracion: Clase que se encarga de gestionar la configuración de
|
||||||
|
* los ficheros.
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 10 oct 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class GestorFicheroConfiguracion {
|
||||||
|
private final static String RUTA_FICHERO_CONFIGURACION = "conf.properties";
|
||||||
|
private static Properties propiedades = null;
|
||||||
|
|
||||||
|
private GestorFicheroConfiguracion() {
|
||||||
|
// Constructor privado para evitar instanciación
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bloque estático que se ejecuta una única vez al cargar la clase
|
||||||
|
static {
|
||||||
|
cargarPropiedadesFichero();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void cargarPropiedadesFichero() {
|
||||||
|
propiedades = new Properties();
|
||||||
|
try {
|
||||||
|
propiedades
|
||||||
|
.load(GestorFicheroConfiguracion.class.getClassLoader().getResourceAsStream(RUTA_FICHERO_CONFIGURACION));
|
||||||
|
} catch (IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getValorfromClave(String clave) {
|
||||||
|
return propiedades.getProperty(clave);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,126 @@
|
|||||||
|
package es.palomafp.aadd.inm.procesamiento;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.dao.ICicloDAO;
|
||||||
|
import es.palomafp.aadd.inm.dao.IGradoDAO;
|
||||||
|
import es.palomafp.aadd.inm.dao.impl.CicloDaoJDBC;
|
||||||
|
import es.palomafp.aadd.inm.dao.impl.GradoDaoJDBC;
|
||||||
|
import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion;
|
||||||
|
import es.palomafp.aadd.inm.vo.Ciclo;
|
||||||
|
import es.palomafp.aadd.inm.vo.FamiliaProfesional;
|
||||||
|
import es.palomafp.aadd.inm.vo.Grado;
|
||||||
|
import tools.jackson.databind.JsonNode;
|
||||||
|
import tools.jackson.databind.ObjectMapper;
|
||||||
|
import tools.jackson.databind.node.ArrayNode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Procesador_Ciclo_Grado_XML: Clase que realiza el procesamiento del fichero
|
||||||
|
* XML ciclo_grado.mxl
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 10 nov 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class ProcesadorCicloGradoJSON {
|
||||||
|
private static String RUTA_FICHERO_XML = GestorFicheroConfiguracion.getValorfromClave("ciclogrado.fichero.ruta");
|
||||||
|
|
||||||
|
public void procesarFichero() {
|
||||||
|
JsonNode nodoRaiz = obtenerJsonNodeDeFicheroJSON();
|
||||||
|
|
||||||
|
// Obtener los nodos "grado"
|
||||||
|
ArrayNode grados = convertirJsonNodeEnArrayNode(nodoRaiz.path("ciclos-grados").path("grados"));
|
||||||
|
for (JsonNode nodoGrado : grados) {
|
||||||
|
String codigoGrado = nodoGrado.path("codigo_nivel").asString();
|
||||||
|
String nombreGrado = nodoGrado.path("nombre_nivel").asString();
|
||||||
|
String categoria = nodoGrado.path("categoria").asString();
|
||||||
|
|
||||||
|
// Insertar el grado en BBDD si no existe, si existe actualizarlo
|
||||||
|
IGradoDAO gradoDAO = new GradoDaoJDBC();
|
||||||
|
Grado gradoBBDD = gradoDAO.obtenerGradoPorCodigo(codigoGrado);
|
||||||
|
if (gradoBBDD == null) {
|
||||||
|
Grado nuevoGrado = new Grado();
|
||||||
|
nuevoGrado.setCodigo(codigoGrado);
|
||||||
|
nuevoGrado.setNombre(nombreGrado);
|
||||||
|
nuevoGrado.setCategoria(categoria);
|
||||||
|
gradoDAO.insertarGrado(nuevoGrado);
|
||||||
|
System.out.println("Grado insertado en BBDD.");
|
||||||
|
} else {
|
||||||
|
System.out.println("El grado ya existe en BBDD.");
|
||||||
|
gradoBBDD.setNombre(nombreGrado);
|
||||||
|
gradoBBDD.setCategoria(categoria);
|
||||||
|
gradoDAO.actualizarGrado(gradoBBDD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Obtener los nodos "ciclo"
|
||||||
|
ArrayNode ciclos = convertirJsonNodeEnArrayNode(nodoRaiz.path("ciclos-grados").path("ciclos"));
|
||||||
|
for (JsonNode nodoCiclo : ciclos) {
|
||||||
|
String codigoCiclo= nodoCiclo.path("codigo_titulacion").asString();
|
||||||
|
String descripionCiclo = nodoCiclo.path("nombre_titulacion").asString();
|
||||||
|
String numeroHoras = nodoCiclo.path("numero_horas").asString();
|
||||||
|
String codigoFamilia = nodoCiclo.path("codigo_familia").asString();
|
||||||
|
String codigoGrado = nodoCiclo.path("codigo_nivel").asString();
|
||||||
|
|
||||||
|
// Insertar el ciclo en BBDD si no existe, si existe actualizarlo
|
||||||
|
ICicloDAO cicloDAO = new CicloDaoJDBC();
|
||||||
|
Ciclo cicloBBDD = cicloDAO.obtenerCicloPorCodigo(codigoCiclo);
|
||||||
|
if(cicloBBDD == null) {
|
||||||
|
Ciclo nuevoCiclo = new Ciclo();
|
||||||
|
nuevoCiclo.setCodigo(codigoCiclo);
|
||||||
|
nuevoCiclo.setDescripcion(descripionCiclo);
|
||||||
|
nuevoCiclo.setNumeroHoras(Integer.parseInt(numeroHoras));
|
||||||
|
|
||||||
|
FamiliaProfesional familiaProfesional = new FamiliaProfesional();
|
||||||
|
familiaProfesional.setCodigo(codigoFamilia);
|
||||||
|
nuevoCiclo.setFamilia(familiaProfesional);
|
||||||
|
|
||||||
|
Grado grado = new Grado();
|
||||||
|
grado.setCodigo(codigoGrado);
|
||||||
|
nuevoCiclo.setGrado(grado);
|
||||||
|
|
||||||
|
cicloDAO.insertarCiclo(nuevoCiclo);
|
||||||
|
System.out.println("Ciclo insertado en BBDD.");
|
||||||
|
} else {
|
||||||
|
System.out.println("El ciclo ya existe en BBDD.");
|
||||||
|
cicloBBDD.setDescripcion(descripionCiclo);
|
||||||
|
cicloBBDD.setNumeroHoras(Integer.parseInt(numeroHoras));
|
||||||
|
|
||||||
|
FamiliaProfesional familiaProfesional = new FamiliaProfesional();
|
||||||
|
familiaProfesional.setCodigo(codigoFamilia);
|
||||||
|
cicloBBDD.setFamilia(familiaProfesional);
|
||||||
|
|
||||||
|
Grado grado = new Grado();
|
||||||
|
grado.setCodigo(codigoGrado);
|
||||||
|
cicloBBDD.setGrado(grado);
|
||||||
|
|
||||||
|
cicloDAO.actualizarCiclo(cicloBBDD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private JsonNode obtenerJsonNodeDeFicheroJSON() {
|
||||||
|
// Cargar el JSON
|
||||||
|
ObjectMapper jsonMapper = new ObjectMapper();
|
||||||
|
JsonNode root = jsonMapper.readTree(new File(RUTA_FICHERO_XML));
|
||||||
|
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ArrayNode convertirJsonNodeEnArrayNode(JsonNode node) {
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
if (node.isArray()) {
|
||||||
|
return (ArrayNode) node;
|
||||||
|
} else {
|
||||||
|
ArrayNode arrayNode = mapper.createArrayNode();
|
||||||
|
if (!node.isMissingNode()) {
|
||||||
|
arrayNode.add(node);
|
||||||
|
}
|
||||||
|
return arrayNode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
66
src/es/palomafp/aadd/inm/vo/Ciclo.java
Normal file
66
src/es/palomafp/aadd/inm/vo/Ciclo.java
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
package es.palomafp.aadd.inm.vo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Ciclo: Clase que representa el contenido de un Ciclo Formativo
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 3 oct 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class Ciclo {
|
||||||
|
private String codigo;
|
||||||
|
private String descripcion;
|
||||||
|
private int numeroHoras;
|
||||||
|
private FamiliaProfesional familia;
|
||||||
|
private Grado grado;
|
||||||
|
|
||||||
|
public String getCodigo() {
|
||||||
|
return codigo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCodigo(String codigo) {
|
||||||
|
this.codigo = codigo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescripcion() {
|
||||||
|
return descripcion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescripcion(String descripcion) {
|
||||||
|
this.descripcion = descripcion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getNumeroHoras() {
|
||||||
|
return numeroHoras;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumeroHoras(int numeroHoras) {
|
||||||
|
this.numeroHoras = numeroHoras;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FamiliaProfesional getFamilia() {
|
||||||
|
return familia;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFamilia(FamiliaProfesional familia) {
|
||||||
|
this.familia = familia;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Grado getGrado() {
|
||||||
|
return grado;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGrado(Grado grado) {
|
||||||
|
this.grado = grado;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Ciclo [codigo=" + codigo + ", descripcion=" + descripcion + ", numeroHoras=" + numeroHoras
|
||||||
|
+ ", familia=" + familia + ", grado=" + grado + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
47
src/es/palomafp/aadd/inm/vo/FamiliaProfesional.java
Normal file
47
src/es/palomafp/aadd/inm/vo/FamiliaProfesional.java
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
package es.palomafp.aadd.inm.vo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* FamiliaProfesional: Clase que representa el contenido de una Familia
|
||||||
|
* Profesional
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 3 oct 2025
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class FamiliaProfesional {
|
||||||
|
private String codigo;
|
||||||
|
private String nombre;
|
||||||
|
private String urlImageLogo;
|
||||||
|
|
||||||
|
public String getUrlImageLogo() {
|
||||||
|
return urlImageLogo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUrlImageLogo(String urlImageLogo) {
|
||||||
|
this.urlImageLogo = urlImageLogo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCodigo() {
|
||||||
|
return codigo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCodigo(String codigo) {
|
||||||
|
this.codigo = codigo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNombre() {
|
||||||
|
return nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNombre(String nombre) {
|
||||||
|
this.nombre = nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "FamiliaProfesional [codigo=" + codigo + ", nombre=" + nombre + ", urlImageLogo=" + urlImageLogo + "]\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
38
src/es/palomafp/aadd/inm/vo/Grado.java
Normal file
38
src/es/palomafp/aadd/inm/vo/Grado.java
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
package es.palomafp.aadd.inm.vo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Grado: Clase que representa el contenido de un Grado
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 2 oct 2025
|
||||||
|
*/
|
||||||
|
public class Grado {
|
||||||
|
private String codigo;
|
||||||
|
private String nombre;
|
||||||
|
private String categoria;
|
||||||
|
|
||||||
|
public String getCodigo() {
|
||||||
|
return codigo;
|
||||||
|
}
|
||||||
|
public void setCodigo(String codigo) {
|
||||||
|
this.codigo = codigo;
|
||||||
|
}
|
||||||
|
public String getNombre() {
|
||||||
|
return nombre;
|
||||||
|
}
|
||||||
|
public void setNombre(String nombre) {
|
||||||
|
this.nombre = nombre;
|
||||||
|
}
|
||||||
|
public String getCategoria() {
|
||||||
|
return categoria;
|
||||||
|
}
|
||||||
|
public void setCategoria(String categoria) {
|
||||||
|
this.categoria = categoria;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Grado [codigo=" + codigo + ", nombre=" + nombre + ", categoria=" + categoria + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user