primer commit
This commit is contained in:
commit
63f5747e78
10
.classpath
Normal file
10
.classpath
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/bin/
|
||||
*.class
|
||||
17
.project
Normal file
17
.project
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>aadd_act1_7</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
2
.settings/org.eclipse.core.resources.prefs
Normal file
2
.settings/org.eclipse.core.resources.prefs
Normal file
@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding/<project>=UTF-8
|
||||
11
.settings/org.eclipse.jdt.core.prefs
Normal file
11
.settings/org.eclipse.jdt.core.prefs
Normal file
@ -0,0 +1,11 @@
|
||||
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.reportPreviewFeatures=warning
|
||||
org.eclipse.jdt.core.compiler.release=enabled
|
||||
org.eclipse.jdt.core.compiler.source=24
|
||||
12
config/conf.properties
Normal file
12
config/conf.properties
Normal file
@ -0,0 +1,12 @@
|
||||
# Información sobre Grado
|
||||
grado.fichero.ruta=C:\\aadd\\inm\\act17\\niveltitulacion.csv
|
||||
grado.fichero.separador=#
|
||||
|
||||
# Información sobre Familia Profesional
|
||||
familiaprofesional.fichero.ruta=C:\\aadd\\inm\\act17\\familia_profesional.csv
|
||||
familiaprofesional.ficherotmp.ruta=C:\\aadd\\inm\\act17\\familia_profesional_tmp.csv
|
||||
familiaprofesional.fichero.separador=\\|
|
||||
|
||||
# Información sobre Ciclo Formativo
|
||||
ciclo.fichero.ruta=C:\\aadd\\inm\\act17\\informacion_titulaciones.txt
|
||||
ciclo.fichero.separador=,
|
||||
84
src/es/palomafp/aadd/inm/GestorFormacion.java
Normal file
84
src/es/palomafp/aadd/inm/GestorFormacion.java
Normal file
@ -0,0 +1,84 @@
|
||||
package es.palomafp.aadd.inm;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import es.palomafp.aadd.inm.config.GestorConfiguracion;
|
||||
import es.palomafp.aadd.inm.dao.ICicloDAO;
|
||||
import es.palomafp.aadd.inm.dao.IFamiliaProfesionalDAO;
|
||||
import es.palomafp.aadd.inm.dao.impl.CicloDaoTXT;
|
||||
import es.palomafp.aadd.inm.dao.impl.FamiliaProfesionalDaoCSV;
|
||||
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) {
|
||||
System.out.println(GestorConfiguracion.getValorfromClave("grado.fichero.ruta"));
|
||||
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 FamiliaProfesionalDaoCSV();
|
||||
|
||||
|
||||
switch (operacion) {
|
||||
case "L":
|
||||
List<FamiliaProfesional> listaFamilias = iFamiliaProfesionalDAO.obtenerListaFamiliasProfesionales();
|
||||
System.out.println(listaFamilias);
|
||||
|
||||
break;
|
||||
case "C": {
|
||||
FamiliaProfesional familiaProfesional = iFamiliaProfesionalDAO.obtenerFamiliaProfesional(parametro1);
|
||||
System.out.println(familiaProfesional);
|
||||
|
||||
break;
|
||||
}
|
||||
case "I": {
|
||||
FamiliaProfesional familiaProfesional = iFamiliaProfesionalDAO.obtenerFamiliaProfesional(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 = new FamiliaProfesional();
|
||||
familiaProfesional.setCodigo(parametro1);
|
||||
familiaProfesional.setNombre(parametro2);
|
||||
iFamiliaProfesionalDAO.actualizarFamiliaProfesional(familiaProfesional);
|
||||
break;
|
||||
}
|
||||
case "1": {
|
||||
ICicloDAO iCicloDAO = new CicloDaoTXT();
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
39
src/es/palomafp/aadd/inm/config/GestorConfiguracion.java
Normal file
39
src/es/palomafp/aadd/inm/config/GestorConfiguracion.java
Normal file
@ -0,0 +1,39 @@
|
||||
package es.palomafp.aadd.inm.config;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
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 GestorConfiguracion {
|
||||
private static Properties propiedades = null;
|
||||
|
||||
// Bloque estático que se ejecuta una única vez al cargar la clase
|
||||
static {
|
||||
cargarPropiedadesFichero();
|
||||
}
|
||||
|
||||
private static void cargarPropiedadesFichero() {
|
||||
propiedades = new Properties();
|
||||
try (FileInputStream fis = new FileInputStream("config/conf.properties")) {
|
||||
propiedades.load(fis);
|
||||
} catch (IOException e) {
|
||||
System.err.println("No se pudo cargar el archivo de configuración.");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static String getValorfromClave(String clave) {
|
||||
return propiedades.getProperty(clave);
|
||||
}
|
||||
}
|
||||
22
src/es/palomafp/aadd/inm/dao/ICicloDAO.java
Normal file
22
src/es/palomafp/aadd/inm/dao/ICicloDAO.java
Normal file
@ -0,0 +1,22 @@
|
||||
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 obtenerCiclo(String codigoCiclo);
|
||||
List<Ciclo> obtenerListaCiclosPorFamiliaGrado(String codigoFamilia, String codigoGrado);
|
||||
|
||||
}
|
||||
|
||||
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 obtenerFamiliaProfesional(String codigoFamilia);
|
||||
List<FamiliaProfesional> obtenerListaFamiliasProfesionales();
|
||||
void insertarFamiliaProfesional(FamiliaProfesional familiaProfesional);
|
||||
void eliminarFamiliaProfesional(String codigoFamiliia);
|
||||
void actualizarFamiliaProfesional(FamiliaProfesional familiaProfesional);
|
||||
}
|
||||
17
src/es/palomafp/aadd/inm/dao/IGradoDAO.java
Normal file
17
src/es/palomafp/aadd/inm/dao/IGradoDAO.java
Normal file
@ -0,0 +1,17 @@
|
||||
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 obtenerGrado(String codigoGrado);
|
||||
}
|
||||
87
src/es/palomafp/aadd/inm/dao/impl/CicloDaoTXT.java
Normal file
87
src/es/palomafp/aadd/inm/dao/impl/CicloDaoTXT.java
Normal file
@ -0,0 +1,87 @@
|
||||
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.config.GestorConfiguracion;
|
||||
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.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 = GestorConfiguracion.getValorfromClave("ciclo.fichero.ruta");
|
||||
private static final String DELIMITADOR = GestorConfiguracion.getValorfromClave("ciclo.fichero.separador");;
|
||||
|
||||
private Path pathFichero = Paths.get(RUTA_FICHERO_CICLOS);
|
||||
|
||||
@Override
|
||||
public Ciclo obtenerCiclo(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 FamiliaProfesionalDaoCSV();
|
||||
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
|
||||
.obtenerFamiliaProfesional(codigoFamilia);
|
||||
Grado grado = iGradoDAO.obtenerGrado(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;
|
||||
}
|
||||
|
||||
}
|
||||
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.config.GestorConfiguracion;
|
||||
import es.palomafp.aadd.inm.dao.IFamiliaProfesionalDAO;
|
||||
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 =GestorConfiguracion.getValorfromClave("familiaprofesional.fichero.ruta");
|
||||
private final static String RUTA_FICHERO_TMP_FAMILIAS_PROFESIONALES = GestorConfiguracion.getValorfromClave("familiaprofesional.ficherotmp.ruta");
|
||||
private static final String DELIMITADOR = GestorConfiguracion.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 obtenerFamiliaProfesional(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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
63
src/es/palomafp/aadd/inm/dao/impl/GradoDaoCSV.java
Normal file
63
src/es/palomafp/aadd/inm/dao/impl/GradoDaoCSV.java
Normal file
@ -0,0 +1,63 @@
|
||||
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.config.GestorConfiguracion;
|
||||
import es.palomafp.aadd.inm.dao.IGradoDAO;
|
||||
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 = GestorConfiguracion.getValorfromClave("grado.fichero.ruta");
|
||||
private static final String DELIMITADOR = GestorConfiguracion.getValorfromClave("grado.fichero.separador");;
|
||||
|
||||
private Path pathFichero = Paths.get(RUTA_FICHERO_GRADOS);
|
||||
|
||||
@Override
|
||||
public Grado obtenerGrado(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;
|
||||
}
|
||||
|
||||
}
|
||||
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 + "]";
|
||||
}
|
||||
|
||||
}
|
||||
34
src/es/palomafp/aadd/inm/vo/FamiliaProfesional.java
Normal file
34
src/es/palomafp/aadd/inm/vo/FamiliaProfesional.java
Normal file
@ -0,0 +1,34 @@
|
||||
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;
|
||||
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 + "]\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