Restructarción código
This commit is contained in:
parent
ae3441237a
commit
a4372718dc
@ -26,8 +26,9 @@
|
|||||||
<attribute name="optional" value="true"/>
|
<attribute name="optional" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk-25">
|
||||||
<attributes>
|
<attributes>
|
||||||
|
<attribute name="module" value="true"/>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
@ -38,19 +39,19 @@
|
|||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="src" path="target/generated-sources/annotations">
|
<classpathentry kind="src" path="target/generated-sources/annotations">
|
||||||
<attributes>
|
<attributes>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
<attribute name="optional" value="true"/>
|
<attribute name="optional" value="true"/>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
<attribute name="ignore_optional_problems" value="true"/>
|
|
||||||
<attribute name="m2e-apt" value="true"/>
|
<attribute name="m2e-apt" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
|
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
|
||||||
<attributes>
|
<attributes>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
<attribute name="optional" value="true"/>
|
<attribute name="optional" value="true"/>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
<attribute name="ignore_optional_problems" value="true"/>
|
|
||||||
<attribute name="m2e-apt" value="true"/>
|
<attribute name="m2e-apt" value="true"/>
|
||||||
<attribute name="test" value="true"/>
|
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="output" path="target/classes"/>
|
<classpathentry kind="output" path="target/classes"/>
|
||||||
|
|||||||
2
.project
2
.project
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<projectDescription>
|
<projectDescription>
|
||||||
<name>aadd_act5_6</name>
|
<name>aadd_act5_6_v1</name>
|
||||||
<comment></comment>
|
<comment></comment>
|
||||||
<projects>
|
<projects>
|
||||||
</projects>
|
</projects>
|
||||||
|
|||||||
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
|
||||||
@ -1,9 +1,14 @@
|
|||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
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.enablePreviewFeatures=disabled
|
||||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
|
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
|
||||||
org.eclipse.jdt.core.compiler.processAnnotations=disabled
|
org.eclipse.jdt.core.compiler.processAnnotations=disabled
|
||||||
org.eclipse.jdt.core.compiler.release=disabled
|
org.eclipse.jdt.core.compiler.release=disabled
|
||||||
org.eclipse.jdt.core.compiler.source=1.8
|
org.eclipse.jdt.core.compiler.source=24
|
||||||
|
|||||||
5
ficheros/info-generadores.csv
Normal file
5
ficheros/info-generadores.csv
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
nombre|tipo|potencia_mw|numero_serie|base
|
||||||
|
Central Nuclear Laguna|Nuclear|1200.50|123456789012345|Arsia Prime
|
||||||
|
Planta Solar Solida|Solar|50.75|987654321098765|Spanish base Quijote
|
||||||
|
Planta Geotérmica Térmica|Geotérmica|300.00|456789123456789|Europa Research Hub
|
||||||
|
Central Nuclear Atlántica|Nuclear|950.25|102938475610293|Base Beyond
|
||||||
|
7
pom.xml
7
pom.xml
@ -40,5 +40,12 @@
|
|||||||
<artifactId>jackson-dataformat-xml</artifactId>
|
<artifactId>jackson-dataformat-xml</artifactId>
|
||||||
<version>3.0.1</version>
|
<version>3.0.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Source: https://mvnrepository.com/artifact/org.projectlombok/lombok -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.18.42</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
@ -1,14 +1,29 @@
|
|||||||
package eu.agenciaesa.inm;
|
package eu.agenciaesa.inm;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import eu.agenciaesa.inm.dao.IBaseDao;
|
||||||
import eu.agenciaesa.inm.dao.IExperimentoDao;
|
import eu.agenciaesa.inm.dao.IExperimentoDao;
|
||||||
|
import eu.agenciaesa.inm.dao.IGeneradorDao;
|
||||||
|
import eu.agenciaesa.inm.dao.IModuloDao;
|
||||||
|
import eu.agenciaesa.inm.dao.hibernate.BaseDaoHibernate;
|
||||||
|
import eu.agenciaesa.inm.dao.hibernate.ModuloDaoHibernate;
|
||||||
|
import eu.agenciaesa.inm.dao.jdbc.GeneradorDaoJDBC;
|
||||||
|
import eu.agenciaesa.inm.dao.jpa.ExperimentoDaoJPA;
|
||||||
|
import eu.agenciaesa.inm.dao.mngdb.ExperimientoDaoMongoDB;
|
||||||
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
||||||
import eu.agenciaesa.inm.gestores.GestorEntityManagerJPA;
|
import eu.agenciaesa.inm.gestores.GestorEntityManagerJPA;
|
||||||
import eu.agenciaesa.inm.vo.TipoExperimento;
|
import eu.agenciaesa.inm.gestores.GestorSesionHibernate;
|
||||||
|
import eu.agenciaesa.inm.procesamiento.ProcesadorGeneradoresFicheroCSV;
|
||||||
|
import eu.agenciaesa.inm.procesamiento.ProcesadorModulosURL;
|
||||||
|
import eu.agenciaesa.inm.vo.Base;
|
||||||
|
import eu.agenciaesa.inm.vo.Experimento;
|
||||||
|
import eu.agenciaesa.inm.vo.Generador;
|
||||||
|
import eu.agenciaesa.inm.vo.Modulo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clase principal que inicia la sesión de Hibernate - JPA. Al obtener un EntityManager,
|
* Clase principal realiza el procesamiento de información de datos de la
|
||||||
* Hibernate ejecutará hbm2ddl.auto=create y recreará la base de datos según las
|
* agencia ESA con orígenes y destinos diversos.
|
||||||
* entidades definidas.
|
|
||||||
*/
|
*/
|
||||||
public class AppAgenciaEsa {
|
public class AppAgenciaEsa {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
@ -16,11 +31,13 @@ public class AppAgenciaEsa {
|
|||||||
|
|
||||||
AppAgenciaEsa app = new AppAgenciaEsa();
|
AppAgenciaEsa app = new AppAgenciaEsa();
|
||||||
|
|
||||||
// Generación de la base de datos (JPA - hibernate - PostgreSQL)
|
|
||||||
GestorEntityManagerJPA.getEntityManager();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
app.procesarInformacionAgenciaESA();
|
app.tratarInformacionBasesYModulos();
|
||||||
|
|
||||||
|
app.tratarInformacionGeneradores();
|
||||||
|
|
||||||
|
app.tratarInformacionExperimentos();
|
||||||
|
|
||||||
} catch (AgenciaESAException e) {
|
} catch (AgenciaESAException e) {
|
||||||
String mensajeError = "Error en la clase %s al realizar una operación de %s";
|
String mensajeError = "Error en la clase %s al realizar una operación de %s";
|
||||||
String operacion = "Operación desconocida";
|
String operacion = "Operación desconocida";
|
||||||
@ -46,14 +63,74 @@ public class AppAgenciaEsa {
|
|||||||
System.err.println(mensajeError);
|
System.err.println(mensajeError);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cerrar recursos al finalizar el programa
|
||||||
|
GestorSesionHibernate.cerrarFactoria();
|
||||||
|
GestorEntityManagerJPA.closeEntityManagerFactory();
|
||||||
|
|
||||||
System.out.println("Fin del programa.");
|
System.out.println("Fin del programa.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void procesarInformacionAgenciaESA() throws AgenciaESAException {
|
|
||||||
System.out.println(TipoExperimento.Climatológico.toString());
|
|
||||||
IExperimentoDao experimentoDao = null;
|
|
||||||
experimentoDao.obtenerListaExperimentos();
|
|
||||||
|
|
||||||
|
private void tratarInformacionBasesYModulos() throws AgenciaESAException {
|
||||||
|
ProcesadorModulosURL procesador = new ProcesadorModulosURL();
|
||||||
|
/*
|
||||||
|
* Obtención de la lista de bases con sus módulos anidados a partir de la URL.
|
||||||
|
* Se jeuga con la cardinalidad que hay en la relacion entre Base y Modulo, que es de 1 a N,
|
||||||
|
* Una Base contiene una lista de Modulos, y cada Modulo tiene una referencia a su Base "padre".
|
||||||
|
* Para ello se "jugará" con la configuración de Base (En Base se usa CascadeType.ALL para que al almacenar las bases almacene los módulos).
|
||||||
|
*/
|
||||||
|
List<Base> listaBases = procesador.obtenerListaBasesDeURL();
|
||||||
|
if (listaBases != null) {
|
||||||
|
IBaseDao baseDao = new BaseDaoHibernate();
|
||||||
|
for (Base base : listaBases) {
|
||||||
|
Base baseBBDD= baseDao.obtenerBasePorNombre(base.getNombre());
|
||||||
|
// Se comprueba si la base ya existe en la BBDD para evitar insertar duplicados,
|
||||||
|
// ya que no se contempla la actualización de una base existente.
|
||||||
|
if(baseBBDD==null) {
|
||||||
|
baseDao.insertarBase(base);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tratarInformacionGeneradores() throws AgenciaESAException {
|
||||||
|
ProcesadorGeneradoresFicheroCSV procesador = new ProcesadorGeneradoresFicheroCSV();
|
||||||
|
List<Generador> listaGeneradores = procesador.obtenerGeneradoresDeFicheroCSV();
|
||||||
|
if (listaGeneradores != null) {
|
||||||
|
// Inserción mediante JDBC
|
||||||
|
IGeneradorDao generadorDao = new GeneradorDaoJDBC();
|
||||||
|
for (Generador generador : listaGeneradores) {
|
||||||
|
System.out.println(generador);
|
||||||
|
Generador generadorBBDD = generadorDao.obtenerGeneradorPorNombre(generador.getNombre());
|
||||||
|
// Se comprueba si el generador ya existe en la BBDD para evitar insertar duplicados,
|
||||||
|
if (generadorBBDD ==null) {
|
||||||
|
generadorDao.insertarGenerador(generador);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tratarInformacionExperimentos() throws AgenciaESAException {
|
||||||
|
|
||||||
|
// Consulta de Experimentos en MongoDB
|
||||||
|
IExperimentoDao experimentoDao = new ExperimientoDaoMongoDB();
|
||||||
|
List<Experimento> listaExperimentos = experimentoDao.obtenerListaExperimentos();
|
||||||
|
if (listaExperimentos != null) {
|
||||||
|
|
||||||
|
// Inserción mediante JPA
|
||||||
|
experimentoDao = new ExperimentoDaoJPA();
|
||||||
|
for (Experimento experimento : listaExperimentos) {
|
||||||
|
System.out.println(experimento);
|
||||||
|
IModuloDao moduloDao = new ModuloDaoHibernate();
|
||||||
|
Modulo moduloBBDD = moduloDao.obtenerModuloPorCodigo(experimento.getModulo().getCodigo());
|
||||||
|
//
|
||||||
|
if(moduloBBDD!=null) {
|
||||||
|
experimento.setModulo(moduloBBDD);
|
||||||
|
experimentoDao.insertarExperimento(experimento);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,13 +1,10 @@
|
|||||||
package eu.agenciaesa.inm.dao;
|
package eu.agenciaesa.inm.dao;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
||||||
import eu.agenciaesa.inm.vo.Base;
|
import eu.agenciaesa.inm.vo.Base;
|
||||||
|
|
||||||
public interface IBaseDao {
|
public interface IBaseDao {
|
||||||
void insertarListaBases(List<Base> listaBases) throws AgenciaESAException;
|
void insertarBase(Base base) throws AgenciaESAException;
|
||||||
|
|
||||||
List<Base> obtenerListaBases() throws AgenciaESAException;
|
Base obtenerBasePorNombre(String nombreBase) throws AgenciaESAException;
|
||||||
|
|
||||||
Base obtenerBasePorCodigo(String codigo) throws AgenciaESAException;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,9 +5,9 @@ import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
|||||||
import eu.agenciaesa.inm.vo.CuerpoCeleste;
|
import eu.agenciaesa.inm.vo.CuerpoCeleste;
|
||||||
|
|
||||||
public interface ICuerpoCelesteDao {
|
public interface ICuerpoCelesteDao {
|
||||||
void insertarListaCuerposCelestes(List<CuerpoCeleste> listaCuerpos) throws AgenciaESAException;
|
void insertarCuerpoCeleste(CuerpoCeleste cuerpo) throws AgenciaESAException;
|
||||||
|
|
||||||
List<CuerpoCeleste> obtenerListaCuerposCelestes() throws AgenciaESAException;
|
List<CuerpoCeleste> obtenerListaCuerposCelestes() throws AgenciaESAException;
|
||||||
|
|
||||||
CuerpoCeleste obtenerCuerpoPorNombre(String nombre) throws AgenciaESAException;
|
CuerpoCeleste obtenerCuerpoCelestePorNombre(String nombre) throws AgenciaESAException;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
|||||||
import eu.agenciaesa.inm.vo.Experimento;
|
import eu.agenciaesa.inm.vo.Experimento;
|
||||||
|
|
||||||
public interface IExperimentoDao {
|
public interface IExperimentoDao {
|
||||||
void insertarListaExperimentos(List<Experimento> listaExperimentos) throws AgenciaESAException;
|
void insertarExperimento(Experimento experimento) throws AgenciaESAException;
|
||||||
|
|
||||||
List<Experimento> obtenerListaExperimentos() throws AgenciaESAException;
|
List<Experimento> obtenerListaExperimentos() throws AgenciaESAException;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,11 +1,10 @@
|
|||||||
package eu.agenciaesa.inm.dao;
|
package eu.agenciaesa.inm.dao;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
||||||
import eu.agenciaesa.inm.vo.Generador;
|
import eu.agenciaesa.inm.vo.Generador;
|
||||||
|
|
||||||
public interface IGeneradorDao {
|
public interface IGeneradorDao {
|
||||||
void insertarListaGeneradores(List<Generador> listaGeneradores) throws AgenciaESAException;
|
void insertarGenerador(Generador generador) throws AgenciaESAException;
|
||||||
|
|
||||||
List<Generador> obtenerListaGeneradores() throws AgenciaESAException;
|
Generador obtenerGeneradorPorNombre(String nombreGenerador) throws AgenciaESAException;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,11 +1,10 @@
|
|||||||
package eu.agenciaesa.inm.dao;
|
package eu.agenciaesa.inm.dao;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
||||||
import eu.agenciaesa.inm.vo.Modulo;
|
import eu.agenciaesa.inm.vo.Modulo;
|
||||||
|
|
||||||
public interface IModuloDao {
|
public interface IModuloDao {
|
||||||
void insertarListaModulos(List<Modulo> listaModulos) throws AgenciaESAException;
|
void insertarModulo(Modulo modulo) throws AgenciaESAException;
|
||||||
|
|
||||||
List<Modulo> obtenerListaModulos() throws AgenciaESAException;
|
Modulo obtenerModuloPorCodigo(String codigoModulo) throws AgenciaESAException;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,8 @@
|
|||||||
package eu.agenciaesa.inm.dao.hibernate;
|
package eu.agenciaesa.inm.dao.hibernate;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import org.hibernate.Session;
|
import org.hibernate.Session;
|
||||||
import org.hibernate.Transaction;
|
import org.hibernate.Transaction;
|
||||||
import org.hibernate.query.Query;
|
import org.hibernate.query.SelectionQuery;
|
||||||
|
|
||||||
import eu.agenciaesa.inm.dao.IBaseDao;
|
import eu.agenciaesa.inm.dao.IBaseDao;
|
||||||
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
||||||
@ -12,38 +11,37 @@ import eu.agenciaesa.inm.vo.Base;
|
|||||||
|
|
||||||
public class BaseDaoHibernate implements IBaseDao {
|
public class BaseDaoHibernate implements IBaseDao {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void insertarListaBases(List<Base> listaBases) throws AgenciaESAException {
|
public void insertarBase(Base base) throws AgenciaESAException {
|
||||||
Transaction tx = null;
|
Transaction tx = null;
|
||||||
try (Session session = GestorSesionHibernate.getSession()) {
|
try (Session session = GestorSesionHibernate.getSession()) {
|
||||||
tx = session.beginTransaction();
|
tx = session.beginTransaction();
|
||||||
for (Base base : listaBases) {
|
|
||||||
session.persist(base);
|
|
||||||
}
|
|
||||||
tx.commit();
|
|
||||||
} catch (Exception e) {
|
|
||||||
if (tx != null)
|
|
||||||
tx.rollback();
|
|
||||||
throw new AgenciaESAException(e, AgenciaESAException.ERROR_INSERCION, BaseDaoHibernate.class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
session.persist(base);
|
||||||
public List<Base> obtenerListaBases() throws AgenciaESAException {
|
|
||||||
try (Session session = GestorSesionHibernate.getSession()) {
|
|
||||||
Query<Base> query = session.createQuery("FROM Base", Base.class);
|
|
||||||
return query.list();
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, BaseDaoHibernate.class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
tx.commit();
|
||||||
public Base obtenerBasePorCodigo(String codigo) throws AgenciaESAException {
|
} catch (Exception e) {
|
||||||
try (Session session = GestorSesionHibernate.getSession()) {
|
if (tx != null)
|
||||||
return session.find(Base.class, codigo);
|
tx.rollback();
|
||||||
} catch (Exception e) {
|
throw new AgenciaESAException(e, AgenciaESAException.ERROR_INSERCION, BaseDaoHibernate.class);
|
||||||
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, BaseDaoHibernate.class);
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Base obtenerBasePorNombre(String nombre) throws AgenciaESAException {
|
||||||
|
Base base=null;
|
||||||
|
|
||||||
|
String sentenciaHQL = "SELECT b FROM Base b WHERE b.nombre = :nombre";
|
||||||
|
|
||||||
|
try (Session session = GestorSesionHibernate.getSession()) {
|
||||||
|
SelectionQuery<Base> sentenciaConsulta = session.createSelectionQuery(sentenciaHQL, Base.class);
|
||||||
|
sentenciaConsulta.setParameter("nombre", nombre);
|
||||||
|
base = sentenciaConsulta.getSingleResultOrNull();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, BaseDaoHibernate.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
return base;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,8 @@
|
|||||||
package eu.agenciaesa.inm.dao.hibernate;
|
package eu.agenciaesa.inm.dao.hibernate;
|
||||||
|
|
||||||
import java.util.List;
|
import org.hibernate.HibernateException;
|
||||||
import org.hibernate.Session;
|
import org.hibernate.Session;
|
||||||
import org.hibernate.Transaction;
|
import org.hibernate.Transaction;
|
||||||
import org.hibernate.query.Query;
|
|
||||||
|
|
||||||
import eu.agenciaesa.inm.dao.IModuloDao;
|
import eu.agenciaesa.inm.dao.IModuloDao;
|
||||||
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
||||||
@ -12,29 +11,34 @@ import eu.agenciaesa.inm.vo.Modulo;
|
|||||||
|
|
||||||
public class ModuloDaoHibernate implements IModuloDao {
|
public class ModuloDaoHibernate implements IModuloDao {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void insertarListaModulos(List<Modulo> listaModulos) throws AgenciaESAException {
|
public void insertarModulo(Modulo modulo) throws AgenciaESAException {
|
||||||
Transaction tx = null;
|
Transaction tx = null;
|
||||||
try (Session session = GestorSesionHibernate.getSession()) {
|
try (Session session = GestorSesionHibernate.getSession()) {
|
||||||
tx = session.beginTransaction();
|
tx = session.beginTransaction();
|
||||||
for (Modulo modulo : listaModulos) {
|
|
||||||
session.persist(modulo);
|
session.persist(modulo);
|
||||||
}
|
|
||||||
tx.commit();
|
tx.commit();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (tx != null)
|
if (tx != null)
|
||||||
tx.rollback();
|
tx.rollback();
|
||||||
throw new AgenciaESAException(e, AgenciaESAException.ERROR_INSERCION, ModuloDaoHibernate.class);
|
throw new AgenciaESAException(e, AgenciaESAException.ERROR_INSERCION, ModuloDaoHibernate.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Modulo obtenerModuloPorCodigo(String codigoModulo) throws AgenciaESAException {
|
||||||
|
Modulo modulo = null;
|
||||||
|
|
||||||
|
// try con recursos "cerrables": Session
|
||||||
|
try (Session sesion = GestorSesionHibernate.getSession();) {
|
||||||
|
modulo = sesion.find(Modulo.class, codigoModulo);
|
||||||
|
} catch (HibernateException e) {
|
||||||
|
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, ModuloDaoHibernate.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
return modulo;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Modulo> obtenerListaModulos() throws AgenciaESAException {
|
|
||||||
try (Session session = GestorSesionHibernate.getSession()) {
|
|
||||||
Query<Modulo> query = session.createQuery("FROM Modulo", Modulo.class);
|
|
||||||
return query.list();
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, ModuloDaoHibernate.class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,78 +11,77 @@ import eu.agenciaesa.inm.dao.ICuerpoCelesteDao;
|
|||||||
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
||||||
import eu.agenciaesa.inm.gestores.GestorConexionJDBC;
|
import eu.agenciaesa.inm.gestores.GestorConexionJDBC;
|
||||||
import eu.agenciaesa.inm.vo.CuerpoCeleste;
|
import eu.agenciaesa.inm.vo.CuerpoCeleste;
|
||||||
import eu.agenciaesa.inm.vo.TipoCuerpoCeleste;
|
import eu.agenciaesa.inm.vo.ETipoCuerpoCeleste;
|
||||||
|
|
||||||
public class CuerpoCelesteDaoJDBC implements ICuerpoCelesteDao {
|
public class CuerpoCelesteDaoJDBC implements ICuerpoCelesteDao {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void insertarListaCuerposCelestes(List<CuerpoCeleste> listaCuerpos) throws AgenciaESAException {
|
public void insertarCuerpoCeleste(CuerpoCeleste cuerpo) throws AgenciaESAException {
|
||||||
String sql = "INSERT INTO T_CUERPO_CELESTE (nombre, gravedad_superficie_ms2, tipo) VALUES (?, ?, ?)";
|
String sentenciaSQL = """
|
||||||
try (Connection con = GestorConexionJDBC.getConexionSGDB();
|
INSERT INTO T_CUERPO_CELESTE (nombre, gravedad_superficie_ms2, tipo)
|
||||||
PreparedStatement ps = con.prepareStatement(sql)) {
|
VALUES (?, ?, ?)
|
||||||
|
""";
|
||||||
|
try (Connection con = GestorConexionJDBC.getConexionSGDB();
|
||||||
|
PreparedStatement ps = con.prepareStatement(sentenciaSQL)) {
|
||||||
|
|
||||||
con.setAutoCommit(false);
|
ps.setString(1, cuerpo.getNombre());
|
||||||
for (CuerpoCeleste cuerpo : listaCuerpos) {
|
ps.setDouble(2, cuerpo.getGravedadSuperficioMs2());
|
||||||
ps.setString(1, cuerpo.getNombre());
|
ps.setString(3, cuerpo.getTipo() != null ? cuerpo.getTipo().name() : null);
|
||||||
ps.setDouble(2, cuerpo.getGravedadSuperficioMs2());
|
|
||||||
ps.setString(3, cuerpo.getTipo() != null ? cuerpo.getTipo().name() : null);
|
|
||||||
ps.addBatch();
|
|
||||||
}
|
|
||||||
ps.executeBatch();
|
|
||||||
con.commit();
|
|
||||||
} catch (SQLException e) {
|
|
||||||
throw new AgenciaESAException(e, AgenciaESAException.ERROR_INSERCION, CuerpoCelesteDaoJDBC.class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
ps.executeUpdate();
|
||||||
public List<CuerpoCeleste> obtenerListaCuerposCelestes() throws AgenciaESAException {
|
|
||||||
List<CuerpoCeleste> lista = new ArrayList<>();
|
|
||||||
String sql = "SELECT * FROM T_CUERPO_CELESTE";
|
|
||||||
try (Connection con = GestorConexionJDBC.getConexionSGDB();
|
|
||||||
PreparedStatement ps = con.prepareStatement(sql);
|
|
||||||
ResultSet rs = ps.executeQuery()) {
|
|
||||||
|
|
||||||
while (rs.next()) {
|
} catch (SQLException e) {
|
||||||
CuerpoCeleste cuerpo = new CuerpoCeleste();
|
throw new AgenciaESAException(e, AgenciaESAException.ERROR_INSERCION, CuerpoCelesteDaoJDBC.class);
|
||||||
cuerpo.setIdentificador(rs.getLong("identificador"));
|
}
|
||||||
cuerpo.setNombre(rs.getString("nombre"));
|
}
|
||||||
cuerpo.setGravedadSuperficioMs2(rs.getDouble("gravedad_superficie_ms2"));
|
|
||||||
String tipoStr = rs.getString("tipo");
|
|
||||||
if (tipoStr != null) {
|
|
||||||
cuerpo.setTipo(TipoCuerpoCeleste.valueOf(tipoStr));
|
|
||||||
}
|
|
||||||
lista.add(cuerpo);
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
|
||||||
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, CuerpoCelesteDaoJDBC.class);
|
|
||||||
}
|
|
||||||
return lista;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CuerpoCeleste obtenerCuerpoPorNombre(String nombre) throws AgenciaESAException {
|
public List<CuerpoCeleste> obtenerListaCuerposCelestes() throws AgenciaESAException {
|
||||||
CuerpoCeleste cuerpo = null;
|
List<CuerpoCeleste> lista = new ArrayList<>();
|
||||||
String sql = "SELECT * FROM T_CUERPO_CELESTE WHERE nombre = ?";
|
String sql = "SELECT * FROM T_CUERPO_CELESTE";
|
||||||
try (Connection con = GestorConexionJDBC.getConexionSGDB();
|
try (Connection con = GestorConexionJDBC.getConexionSGDB();
|
||||||
PreparedStatement ps = con.prepareStatement(sql)) {
|
PreparedStatement ps = con.prepareStatement(sql);
|
||||||
|
ResultSet rs = ps.executeQuery()) {
|
||||||
|
|
||||||
ps.setString(1, nombre);
|
while (rs.next()) {
|
||||||
try (ResultSet rs = ps.executeQuery()) {
|
CuerpoCeleste cuerpo = obtenerCuerpoCelesteDeResultSet(rs);
|
||||||
if (rs.next()) {
|
lista.add(cuerpo);
|
||||||
cuerpo = new CuerpoCeleste();
|
}
|
||||||
cuerpo.setIdentificador(rs.getLong("identificador"));
|
} catch (SQLException e) {
|
||||||
cuerpo.setNombre(rs.getString("nombre"));
|
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, CuerpoCelesteDaoJDBC.class);
|
||||||
cuerpo.setGravedadSuperficioMs2(rs.getDouble("gravedad_superficie_ms2"));
|
}
|
||||||
String tipoStr = rs.getString("tipo");
|
return lista;
|
||||||
if (tipoStr != null) {
|
}
|
||||||
cuerpo.setTipo(TipoCuerpoCeleste.valueOf(tipoStr));
|
|
||||||
}
|
@Override
|
||||||
}
|
public CuerpoCeleste obtenerCuerpoCelestePorNombre(String nombre) throws AgenciaESAException {
|
||||||
}
|
CuerpoCeleste cuerpo = null;
|
||||||
} catch (SQLException e) {
|
String sql = "SELECT * FROM T_CUERPO_CELESTE WHERE nombre = ?";
|
||||||
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, CuerpoCelesteDaoJDBC.class);
|
try (Connection con = GestorConexionJDBC.getConexionSGDB(); PreparedStatement ps = con.prepareStatement(sql)) {
|
||||||
}
|
|
||||||
return cuerpo;
|
ps.setString(1, nombre);
|
||||||
}
|
try (ResultSet rs = ps.executeQuery()) {
|
||||||
|
if (rs.next()) {
|
||||||
|
cuerpo = obtenerCuerpoCelesteDeResultSet(rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, CuerpoCelesteDaoJDBC.class);
|
||||||
|
}
|
||||||
|
return cuerpo;
|
||||||
|
}
|
||||||
|
|
||||||
|
private CuerpoCeleste obtenerCuerpoCelesteDeResultSet(ResultSet resultado) throws SQLException {
|
||||||
|
CuerpoCeleste cuerpo = new CuerpoCeleste();
|
||||||
|
|
||||||
|
cuerpo.setIdentificador(resultado.getLong("identificador"));
|
||||||
|
cuerpo.setNombre(resultado.getString("nombre"));
|
||||||
|
cuerpo.setGravedadSuperficioMs2(resultado.getDouble("gravedad_superficie_ms2"));
|
||||||
|
String tipoStr = resultado.getString("tipo");
|
||||||
|
if (tipoStr != null) {
|
||||||
|
cuerpo.setTipo(ETipoCuerpoCeleste.valueOf(tipoStr));
|
||||||
|
}
|
||||||
|
|
||||||
|
return cuerpo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,67 +4,77 @@ import java.sql.Connection;
|
|||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import eu.agenciaesa.inm.dao.IGeneradorDao;
|
import eu.agenciaesa.inm.dao.IGeneradorDao;
|
||||||
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
||||||
import eu.agenciaesa.inm.gestores.GestorConexionJDBC;
|
import eu.agenciaesa.inm.gestores.GestorConexionJDBC;
|
||||||
import eu.agenciaesa.inm.vo.Base;
|
import eu.agenciaesa.inm.vo.Base;
|
||||||
|
import eu.agenciaesa.inm.vo.ETipoGenerador;
|
||||||
import eu.agenciaesa.inm.vo.Generador;
|
import eu.agenciaesa.inm.vo.Generador;
|
||||||
import eu.agenciaesa.inm.vo.TipoGenerador;
|
|
||||||
|
|
||||||
public class GeneradorDaoJDBC implements IGeneradorDao {
|
public class GeneradorDaoJDBC implements IGeneradorDao {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void insertarListaGeneradores(List<Generador> listaGeneradores) throws AgenciaESAException {
|
public void insertarGenerador(Generador generador) throws AgenciaESAException {
|
||||||
String sql = "INSERT INTO T_GENERADOR (nombre, potencia_mw, tipo, cod_base) VALUES (?, ?, ?, ?)";
|
|
||||||
try (Connection con = GestorConexionJDBC.getConexionSGDB();
|
|
||||||
PreparedStatement ps = con.prepareStatement(sql)) {
|
|
||||||
|
|
||||||
con.setAutoCommit(false);
|
String sentenciaSQL = """
|
||||||
for (Generador gen : listaGeneradores) {
|
INSERT INTO T_GENERADOR (nombre, potencia_mw, tipo, cod_base)
|
||||||
ps.setString(1, gen.getNombre());
|
VALUES (?, ?, ?, ?)
|
||||||
ps.setDouble(2, gen.getPotenciaMW());
|
""";
|
||||||
ps.setString(3, gen.getTipo() != null ? gen.getTipo().name() : null);
|
try (Connection con = GestorConexionJDBC.getConexionSGDB();
|
||||||
ps.setString(4, gen.getBase() != null ? gen.getBase().getCodigo() : null);
|
PreparedStatement ps = con.prepareStatement(sentenciaSQL)) {
|
||||||
ps.addBatch();
|
|
||||||
}
|
|
||||||
ps.executeBatch();
|
|
||||||
con.commit();
|
|
||||||
} catch (SQLException e) {
|
|
||||||
throw new AgenciaESAException(e, AgenciaESAException.ERROR_INSERCION, GeneradorDaoJDBC.class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
ps.setString(1, generador.getNombre());
|
||||||
public List<Generador> obtenerListaGeneradores() throws AgenciaESAException {
|
ps.setDouble(2, generador.getPotenciaMW());
|
||||||
List<Generador> lista = new ArrayList<>();
|
ps.setString(3, generador.getTipo() != null ? generador.getTipo().name() : null);
|
||||||
String sql = "SELECT * FROM T_GENERADOR";
|
ps.setString(4, generador.getBase() != null ? generador.getBase().getCodigo() : null);
|
||||||
try (Connection con = GestorConexionJDBC.getConexionSGDB();
|
|
||||||
PreparedStatement ps = con.prepareStatement(sql);
|
|
||||||
ResultSet rs = ps.executeQuery()) {
|
|
||||||
|
|
||||||
while (rs.next()) {
|
ps.executeUpdate();
|
||||||
Generador gen = new Generador();
|
|
||||||
gen.setIdentificador(rs.getLong("identificador"));
|
} catch (SQLException e) {
|
||||||
gen.setNombre(rs.getString("nombre"));
|
throw new AgenciaESAException(e, AgenciaESAException.ERROR_INSERCION, GeneradorDaoJDBC.class);
|
||||||
gen.setPotenciaMW(rs.getDouble("potencia_mw"));
|
}
|
||||||
String tipoStr = rs.getString("tipo");
|
}
|
||||||
if (tipoStr != null) {
|
|
||||||
gen.setTipo(TipoGenerador.valueOf(tipoStr));
|
@Override
|
||||||
}
|
public Generador obtenerGeneradorPorNombre(String nombreGenerador) throws AgenciaESAException {
|
||||||
String codBase = rs.getString("cod_base");
|
Generador generador = null;
|
||||||
if (codBase != null) {
|
String sql = """
|
||||||
Base base = new Base();
|
SELECT * FROM T_GENERADOR g join T_BASE b
|
||||||
base.setCodigo(codBase);
|
on cod_base = codigo
|
||||||
gen.setBase(base);
|
WHERE g.nombre = ?
|
||||||
}
|
""";
|
||||||
lista.add(gen);
|
try (Connection con = GestorConexionJDBC.getConexionSGDB();
|
||||||
}
|
PreparedStatement ps = con.prepareStatement(sql);) {
|
||||||
} catch (SQLException e) {
|
ps.setString(1, nombreGenerador);
|
||||||
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, GeneradorDaoJDBC.class);
|
ResultSet rs = ps.executeQuery();
|
||||||
}
|
// Se asume que el nombre del generador es único, por lo que se detiene al encontrar el primero
|
||||||
return lista;
|
if(rs.next()) {
|
||||||
}
|
generador = obtenerGeneradorDeResultSet(rs);
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, GeneradorDaoJDBC.class);
|
||||||
|
}
|
||||||
|
return generador;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Generador obtenerGeneradorDeResultSet(ResultSet resultado) throws SQLException {
|
||||||
|
Generador generador = new Generador();
|
||||||
|
generador.setIdentificador(resultado.getLong("identificador"));
|
||||||
|
generador.setNombre(resultado.getString("g.nombre"));
|
||||||
|
generador.setPotenciaMW(resultado.getDouble("potencia_mw"));
|
||||||
|
String tipoStr = resultado.getString("tipo");
|
||||||
|
if (tipoStr != null) {
|
||||||
|
generador.setTipo(ETipoGenerador.valueOf(tipoStr));
|
||||||
|
}
|
||||||
|
String codBase = resultado.getString("b.codigo");
|
||||||
|
if (codBase != null) {
|
||||||
|
Base base = new Base();
|
||||||
|
base.setCodigo(codBase);
|
||||||
|
base.setNombre(resultado.getString("b.nombre"));
|
||||||
|
generador.setBase(base);
|
||||||
|
}
|
||||||
|
|
||||||
|
return generador;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,39 +12,35 @@ import eu.agenciaesa.inm.vo.Experimento;
|
|||||||
|
|
||||||
public class ExperimentoDaoJPA implements IExperimentoDao {
|
public class ExperimentoDaoJPA implements IExperimentoDao {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void insertarListaExperimentos(List<Experimento> listaExperimentos) throws AgenciaESAException {
|
public void insertarExperimento(Experimento experimento) throws AgenciaESAException {
|
||||||
EntityManager em = GestorEntityManagerJPA.getEntityManager();
|
EntityManager entityManager = GestorEntityManagerJPA.getEntityManager();
|
||||||
EntityTransaction tx = em.getTransaction();
|
EntityTransaction transaccion = entityManager.getTransaction();
|
||||||
try {
|
try {
|
||||||
tx.begin();
|
transaccion.begin();
|
||||||
for (Experimento exp : listaExperimentos) {
|
|
||||||
// El campo "resultado" ya viene calculado por el ProcesadorDatos
|
|
||||||
// siguiendo las reglas de negocio, o se puede recalcular aquí.
|
|
||||||
// Según el requisito: "el campo resultado seguirá estás condiciones..."
|
|
||||||
// Me aseguro de persistir el objeto.
|
|
||||||
em.persist(exp);
|
|
||||||
}
|
|
||||||
tx.commit();
|
|
||||||
} catch (Exception e) {
|
|
||||||
if (tx.isActive())
|
|
||||||
tx.rollback();
|
|
||||||
throw new AgenciaESAException(e, AgenciaESAException.ERROR_INSERCION, ExperimentoDaoJPA.class);
|
|
||||||
} finally {
|
|
||||||
em.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
entityManager.persist(experimento);
|
||||||
public List<Experimento> obtenerListaExperimentos() throws AgenciaESAException {
|
|
||||||
EntityManager em = GestorEntityManagerJPA.getEntityManager();
|
transaccion.commit();
|
||||||
try {
|
} catch (Exception e) {
|
||||||
TypedQuery<Experimento> query = em.createQuery("SELECT e FROM Experimento e", Experimento.class);
|
if (transaccion.isActive())
|
||||||
return query.getResultList();
|
transaccion.rollback();
|
||||||
} catch (Exception e) {
|
throw new AgenciaESAException(e, AgenciaESAException.ERROR_INSERCION, ExperimentoDaoJPA.class);
|
||||||
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, ExperimentoDaoJPA.class);
|
} finally {
|
||||||
} finally {
|
entityManager.close();
|
||||||
em.close();
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@Override
|
||||||
|
public List<Experimento> obtenerListaExperimentos() throws AgenciaESAException {
|
||||||
|
EntityManager em = GestorEntityManagerJPA.getEntityManager();
|
||||||
|
try {
|
||||||
|
TypedQuery<Experimento> query = em.createQuery("SELECT e FROM Experimento e", Experimento.class);
|
||||||
|
return query.getResultList();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, ExperimentoDaoJPA.class);
|
||||||
|
} finally {
|
||||||
|
em.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,18 +13,19 @@ import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
|||||||
import eu.agenciaesa.inm.gestores.GestorConexionMongoDB;
|
import eu.agenciaesa.inm.gestores.GestorConexionMongoDB;
|
||||||
import eu.agenciaesa.inm.vo.Experimento;
|
import eu.agenciaesa.inm.vo.Experimento;
|
||||||
import eu.agenciaesa.inm.vo.Modulo;
|
import eu.agenciaesa.inm.vo.Modulo;
|
||||||
import eu.agenciaesa.inm.vo.TipoExperimento;
|
import eu.agenciaesa.inm.vo.ETipoExperimento;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ExperimientoDaoMongoDB: Clase que se encarga de ...
|
* ExperimientoDaoMongoDB: Clase que se encarga de implementar el acceso a datos de los experimentos utilizando MongoDB como base de datos
|
||||||
*
|
*
|
||||||
* @autor: Isidoro Nevares Martín (IES Virgen de la Paloma)
|
* @autor: Isidoro Nevares Martín (IES Virgen de la Paloma)
|
||||||
* @date: 24 feb 2026
|
* @date: 24 feb 2026
|
||||||
*/
|
*/
|
||||||
public class ExperimientoDaoMongoDB implements IExperimentoDao{
|
public class ExperimientoDaoMongoDB implements IExperimentoDao {
|
||||||
private final static String COLECCION = "C_EXPERIMENTO";
|
private final static String COLECCION = "C_EXPERIMENTO";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void insertarListaExperimentos(List<Experimento> listaExperimentos) throws AgenciaESAException {
|
public void insertarExperimento(Experimento experimento) throws AgenciaESAException {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -37,33 +38,40 @@ public class ExperimientoDaoMongoDB implements IExperimentoDao{
|
|||||||
try {
|
try {
|
||||||
coleccionMongoDB = GestorConexionMongoDB.getMongoDatabase().getCollection(COLECCION);
|
coleccionMongoDB = GestorConexionMongoDB.getMongoDatabase().getCollection(COLECCION);
|
||||||
|
|
||||||
|
|
||||||
FindIterable<Document> documentos = coleccionMongoDB.find();
|
FindIterable<Document> documentos = coleccionMongoDB.find();
|
||||||
for (Document documento : documentos) {
|
for (Document documento : documentos) {
|
||||||
String nombreExperimento = documento.getString("nombre");
|
String nombreExperimento = documento.getString("nombre");
|
||||||
String sTipoExperimiento = documento.getString("tipo");
|
String sTipoExperimiento = documento.getString("tipo");
|
||||||
TipoExperimento tipoExperimento=TipoExperimento.valueOf(sTipoExperimiento);
|
ETipoExperimento tipoExperimento = ETipoExperimento.valueOf(sTipoExperimiento);
|
||||||
String resultadoExperimento = null;
|
String resultadoExperimento = null;
|
||||||
|
|
||||||
Document documentoDatos = documento.get("datos", Document.class);
|
Document documentoDatos = documento.get("datos", Document.class);
|
||||||
if(tipoExperimento == TipoExperimento.Geológico) {
|
switch (tipoExperimento) {
|
||||||
String tipoRoca = documentoDatos.getString("tipo_roca");
|
case Geológico:
|
||||||
Integer profundidad = documentoDatos.getInteger("profundidad_muestra_m");
|
String tipoRoca = documentoDatos.getString("tipo_roca");
|
||||||
|
Integer profundidad = documentoDatos.getInteger("profundidad_muestra_m");
|
||||||
|
|
||||||
resultadoExperimento = "Muestra de " + tipoRoca + " obtenida a " + profundidad + "m de profundidad.";
|
resultadoExperimento = "Muestra de %s obtenida a %s m de profundidad.";
|
||||||
} else if(tipoExperimento == TipoExperimento.Biológico) {
|
resultadoExperimento = String.format(resultadoExperimento, tipoRoca, profundidad);
|
||||||
|
break;
|
||||||
|
case Biológico:
|
||||||
String tipoMuestra = documentoDatos.getString("tipo_muestra");
|
String tipoMuestra = documentoDatos.getString("tipo_muestra");
|
||||||
Integer nivel = documentoDatos.getInteger("nivel_bioseguridad");
|
Integer nivel = documentoDatos.getInteger("nivel_bioseguridad");
|
||||||
|
|
||||||
resultadoExperimento = "Análisis de " + tipoMuestra + " realizado bajo nivel " + nivel + " de bioseguridad.";
|
resultadoExperimento = "Análisis de %s realizado bajo nivel %d de bioseguridad.";
|
||||||
} else {
|
resultadoExperimento = String.format(resultadoExperimento, tipoMuestra, nivel);
|
||||||
|
break;
|
||||||
|
case Climatológico:
|
||||||
Integer duracion = documentoDatos.getInteger("duracion_dias");
|
Integer duracion = documentoDatos.getInteger("duracion_dias");
|
||||||
String frecuencia = documentoDatos.getString("frecuencia");
|
String frecuencia = documentoDatos.getString("frecuencia");
|
||||||
String parametro = documentoDatos.getString("parametro_estudio");
|
String parametro = documentoDatos.getString("parametro_estudio");
|
||||||
|
|
||||||
resultadoExperimento = "Estudio de " + parametro + " durante " + duracion + " días con frecuencia " + frecuencia;
|
resultadoExperimento = "Estudio de %s durante %d días con frecuencia %s.";
|
||||||
|
resultadoExperimento = String.format(resultadoExperimento, parametro, duracion, frecuencia);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Aquí no llamo a otro DAO para obtener el módulo, sino que lo creo directamente con el código que tengo en el documento de MongoDB
|
||||||
String codigoModulo = documento.getString("modulo_id");
|
String codigoModulo = documento.getString("modulo_id");
|
||||||
Modulo modulo = new Modulo();
|
Modulo modulo = new Modulo();
|
||||||
modulo.setCodigo(codigoModulo);
|
modulo.setCodigo(codigoModulo);
|
||||||
@ -77,7 +85,7 @@ public class ExperimientoDaoMongoDB implements IExperimentoDao{
|
|||||||
listaExperimentos.add(experimento);
|
listaExperimentos.add(experimento);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA , getClass());
|
throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA, ExperimientoDaoMongoDB.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
return listaExperimentos;
|
return listaExperimentos;
|
||||||
|
|||||||
@ -23,12 +23,12 @@ public class GestorConexionMongoDB {
|
|||||||
// Carga la configuración desde META-INF/persistence.xml
|
// Carga la configuración desde META-INF/persistence.xml
|
||||||
static {
|
static {
|
||||||
// Cadena de conexion con la base de datos MongoDB
|
// Cadena de conexion con la base de datos MongoDB
|
||||||
String uri = GestorFicheroConfiguracion.obtenerValor("url.conexion.mongodb");
|
String uri = GestorFicheroConfiguracion.obtenerValor("mongodb.url");
|
||||||
// Se abre la conexión con MongoDB
|
// Se abre la conexión con MongoDB
|
||||||
MongoClient clienteMongo = MongoClients.create(uri);
|
MongoClient clienteMongo = MongoClients.create(uri);
|
||||||
|
|
||||||
// Obtener una base de datos MongoDB desde Java
|
// Obtener una base de datos MongoDB desde Java
|
||||||
String bbddMongoDB= GestorFicheroConfiguracion.obtenerValor("bbdd.mongodb");
|
String bbddMongoDB= GestorFicheroConfiguracion.obtenerValor("mongodb.bbdd");
|
||||||
mongoDBDatabase = clienteMongo.getDatabase(bbddMongoDB);
|
mongoDBDatabase = clienteMongo.getDatabase(bbddMongoDB);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ public class GestorFicheroConfiguracion {
|
|||||||
|
|
||||||
static {
|
static {
|
||||||
try (InputStream is = GestorFicheroConfiguracion.class.getClassLoader()
|
try (InputStream is = GestorFicheroConfiguracion.class.getClassLoader()
|
||||||
.getResourceAsStream("conf.properties")) {
|
.getResourceAsStream("agenciaesa.conf")) {
|
||||||
if (is != null) {
|
if (is != null) {
|
||||||
PROPIEDADES.load(is);
|
PROPIEDADES.load(is);
|
||||||
} else {
|
} else {
|
||||||
@ -29,9 +29,7 @@ public class GestorFicheroConfiguracion {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Obtiene el valor asociado a la clave especificada.
|
* Obtiene el valor asociado a la clave especificada.
|
||||||
*
|
|
||||||
* @param clave la clave a buscar
|
|
||||||
* @return el valor o {@code null} si no existe
|
|
||||||
*/
|
*/
|
||||||
public static String obtenerValor(String clave) {
|
public static String obtenerValor(String clave) {
|
||||||
return PROPIEDADES.getProperty(clave);
|
return PROPIEDADES.getProperty(clave);
|
||||||
|
|||||||
@ -1,392 +0,0 @@
|
|||||||
package eu.agenciaesa.inm.procesamiento;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.FileReader;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import eu.agenciaesa.inm.utilidades.GestorURLs;
|
|
||||||
import eu.agenciaesa.inm.vo.Base;
|
|
||||||
import eu.agenciaesa.inm.vo.CuerpoCeleste;
|
|
||||||
import eu.agenciaesa.inm.vo.Experimento;
|
|
||||||
import eu.agenciaesa.inm.vo.FuncionPrincipalBase;
|
|
||||||
import eu.agenciaesa.inm.vo.Generador;
|
|
||||||
import eu.agenciaesa.inm.vo.Modulo;
|
|
||||||
import eu.agenciaesa.inm.vo.TipoExperimento;
|
|
||||||
import eu.agenciaesa.inm.vo.TipoGenerador;
|
|
||||||
import tools.jackson.databind.JsonNode;
|
|
||||||
import tools.jackson.databind.ObjectMapper;
|
|
||||||
import tools.jackson.databind.node.ArrayNode;
|
|
||||||
import tools.jackson.dataformat.xml.XmlMapper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ProcesadorDatos: clase que procesa los distintos orígenes de información
|
|
||||||
* de la Agencia ESA (XML, JSON, CSV), usando JsonNode de Jackson sin
|
|
||||||
* anotaciones
|
|
||||||
* de mapeo.
|
|
||||||
*
|
|
||||||
* Estructura espejada de ProcesadorDatos en examen_aadd_2trim_FP.
|
|
||||||
*
|
|
||||||
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
|
||||||
*/
|
|
||||||
public class ProcesadorDatos {
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
|
||||||
// BASES Y MÓDULOS desde XML
|
|
||||||
// -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Obtiene la lista de Bases (con sus Módulos) desde la URL XML configurada.
|
|
||||||
*
|
|
||||||
* @return Lista de objetos Base o null si hay error.
|
|
||||||
*/
|
|
||||||
public List<Base> obtenerBasesDeURL(String urlBases) {
|
|
||||||
List<Base> listaBases = null;
|
|
||||||
|
|
||||||
String xmlContenido = GestorURLs.getTextoFromURL(urlBases);
|
|
||||||
if (xmlContenido == null || xmlContenido.isEmpty()) {
|
|
||||||
System.err.println("No se pudo obtener el XML de bases desde la URL: " + urlBases);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
ObjectMapper mapeadorXML = new XmlMapper();
|
|
||||||
try {
|
|
||||||
JsonNode nodoRaiz = mapeadorXML.readTree(xmlContenido);
|
|
||||||
if (nodoRaiz != null) {
|
|
||||||
listaBases = new ArrayList<>();
|
|
||||||
|
|
||||||
// El XML tiene <bases><base id="...">...</base>...</bases>
|
|
||||||
// Jackson XML convierte el nodo raíz en el elemento "bases"
|
|
||||||
// y los hijos "base" en campos o arrays.
|
|
||||||
JsonNode nodoBases = nodoRaiz.has("base") ? nodoRaiz.get("base") : nodoRaiz;
|
|
||||||
|
|
||||||
if (nodoBases.isArray()) {
|
|
||||||
for (JsonNode nodoBase : nodoBases) {
|
|
||||||
Base base = obtenerBaseDeJsonNode(nodoBase);
|
|
||||||
if (base != null)
|
|
||||||
listaBases.add(base);
|
|
||||||
}
|
|
||||||
} else if (!nodoBases.isMissingNode() && !nodoBases.isNull()) {
|
|
||||||
Base base = obtenerBaseDeJsonNode(nodoBases);
|
|
||||||
if (base != null)
|
|
||||||
listaBases.add(base);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.err.println("Error procesando XML de bases con JsonNode: " + e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
return listaBases;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convierte un JsonNode que representa un elemento <base> del XML.
|
|
||||||
*/
|
|
||||||
private Base obtenerBaseDeJsonNode(JsonNode nodoBase) {
|
|
||||||
if (nodoBase == null || nodoBase.isNull())
|
|
||||||
return null;
|
|
||||||
|
|
||||||
Base base = new Base();
|
|
||||||
|
|
||||||
if (nodoBase.has("id")) {
|
|
||||||
base.setCodigo(nodoBase.get("id").asText(""));
|
|
||||||
}
|
|
||||||
if (nodoBase.has("nombre")) {
|
|
||||||
base.setNombre(nodoBase.get("nombre").asText(""));
|
|
||||||
}
|
|
||||||
if (nodoBase.has("fecha_establecimiento")) {
|
|
||||||
String fechaStr = nodoBase.get("fecha_establecimiento").asText("");
|
|
||||||
if (!fechaStr.isEmpty()) {
|
|
||||||
try {
|
|
||||||
base.setFechaEstablecimiento(LocalDate.parse(fechaStr));
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.err.println("Fecha de establecimiento no válida: " + fechaStr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (nodoBase.has("funcion_ppal")) {
|
|
||||||
String funcion = nodoBase.get("funcion_ppal").asText("");
|
|
||||||
try {
|
|
||||||
base.setFuncionPrincipal(FuncionPrincipalBase.valueOf(funcion));
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
System.err.println("Función principal desconocida: " + funcion);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Cuerpo celeste referenciado por nombre en el atributo nombre del elemento
|
|
||||||
// <cuerpo>
|
|
||||||
if (nodoBase.has("cuerpo")) {
|
|
||||||
JsonNode nodoCuerpo = nodoBase.get("cuerpo");
|
|
||||||
String nombreCuerpo = nodoCuerpo.has("nombre") ? nodoCuerpo.get("nombre").asText("") : "";
|
|
||||||
if (!nombreCuerpo.isEmpty()) {
|
|
||||||
CuerpoCeleste cuerpo = new CuerpoCeleste();
|
|
||||||
cuerpo.setNombre(nombreCuerpo);
|
|
||||||
base.setCuerpo(cuerpo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return base;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Obtiene la lista de Módulos para una base a partir del JsonNode de la base.
|
|
||||||
* Se llama por el procesador de bases para extraer módulos anidados.
|
|
||||||
*/
|
|
||||||
public List<Modulo> obtenerModulosDeBase(JsonNode nodoBase, Base base) {
|
|
||||||
List<Modulo> listaModulos = new ArrayList<>();
|
|
||||||
if (nodoBase == null || !nodoBase.has("modulos"))
|
|
||||||
return listaModulos;
|
|
||||||
|
|
||||||
JsonNode nodoModulos = nodoBase.get("modulos");
|
|
||||||
JsonNode nodoModulo = nodoModulos.has("modulo") ? nodoModulos.get("modulo") : nodoModulos;
|
|
||||||
|
|
||||||
if (nodoModulo.isArray()) {
|
|
||||||
for (JsonNode m : nodoModulo) {
|
|
||||||
Modulo modulo = obtenerModuloDeJsonNode(m, base);
|
|
||||||
if (modulo != null)
|
|
||||||
listaModulos.add(modulo);
|
|
||||||
}
|
|
||||||
} else if (!nodoModulo.isMissingNode() && !nodoModulo.isNull()) {
|
|
||||||
Modulo modulo = obtenerModuloDeJsonNode(nodoModulo, base);
|
|
||||||
if (modulo != null)
|
|
||||||
listaModulos.add(modulo);
|
|
||||||
}
|
|
||||||
return listaModulos;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Modulo obtenerModuloDeJsonNode(JsonNode nodoModulo, Base base) {
|
|
||||||
if (nodoModulo == null || nodoModulo.isNull())
|
|
||||||
return null;
|
|
||||||
Modulo modulo = new Modulo();
|
|
||||||
if (nodoModulo.has("id")) {
|
|
||||||
modulo.setCodigo(nodoModulo.get("id").asText(""));
|
|
||||||
}
|
|
||||||
if (nodoModulo.has("nombre")) {
|
|
||||||
modulo.setNombre(nodoModulo.get("nombre").asText(""));
|
|
||||||
}
|
|
||||||
if (nodoModulo.has("consumo_energia")) {
|
|
||||||
modulo.setConsumoEnergiaMW(nodoModulo.get("consumo_energia").asDouble(0.0));
|
|
||||||
}
|
|
||||||
modulo.setBase(base);
|
|
||||||
return modulo;
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
|
||||||
// EXPERIMENTOS desde JSON
|
|
||||||
// -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Obtiene la lista de Experimentos desde la URL JSON configurada.
|
|
||||||
* Aplica la lógica de construcción del campo "resultado" según el tipo.
|
|
||||||
*
|
|
||||||
* @return Lista de objetos Experimento o null si hay error.
|
|
||||||
*/
|
|
||||||
public List<Experimento> obtenerExperimentosDeURL(String urlExperimentos) {
|
|
||||||
List<Experimento> listaExperimentos = null;
|
|
||||||
|
|
||||||
String jsonContenido = GestorURLs.getTextoFromURL(urlExperimentos);
|
|
||||||
if (jsonContenido == null || jsonContenido.isEmpty()) {
|
|
||||||
System.err.println("No se pudo obtener el JSON de experimentos desde la URL: " + urlExperimentos);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
ObjectMapper mapeadorJSON = new ObjectMapper();
|
|
||||||
try {
|
|
||||||
JsonNode nodoRaiz = mapeadorJSON.readTree(jsonContenido);
|
|
||||||
if (nodoRaiz != null) {
|
|
||||||
listaExperimentos = new ArrayList<>();
|
|
||||||
|
|
||||||
// El JSON puede ser un array de experimentos directamente o
|
|
||||||
// un objeto con un campo "experimentos" o similar.
|
|
||||||
JsonNode elementos = nodoRaiz.isArray() ? nodoRaiz
|
|
||||||
: (nodoRaiz.has("experimentos") ? nodoRaiz.get("experimentos") : nodoRaiz);
|
|
||||||
|
|
||||||
if (elementos.isArray()) {
|
|
||||||
for (JsonNode nodo : elementos) {
|
|
||||||
Experimento exp = obtenerExperimentoDeJsonNode(nodo);
|
|
||||||
if (exp != null)
|
|
||||||
listaExperimentos.add(exp);
|
|
||||||
}
|
|
||||||
} else if (!elementos.isMissingNode() && !elementos.isNull()) {
|
|
||||||
// Iterar los campos del objeto por si cada campo es un experimento
|
|
||||||
Iterator<JsonNode> campos = elementos.elements();
|
|
||||||
while (campos.hasNext()) {
|
|
||||||
Experimento exp = obtenerExperimentoDeJsonNode(campos.next());
|
|
||||||
if (exp != null)
|
|
||||||
listaExperimentos.add(exp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.err.println("Error procesando JSON de experimentos con JsonNode: " + e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
return listaExperimentos;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convierte un JsonNode que representa un experimento en el objeto Experimento,
|
|
||||||
* incluyendo la construcción del campo resultado según el tipo.
|
|
||||||
*/
|
|
||||||
private Experimento obtenerExperimentoDeJsonNode(JsonNode nodoExp) {
|
|
||||||
if (nodoExp == null || nodoExp.isNull())
|
|
||||||
return null;
|
|
||||||
|
|
||||||
Experimento experimento = new Experimento();
|
|
||||||
|
|
||||||
if (nodoExp.has("nombre")) {
|
|
||||||
experimento.setNombre(nodoExp.get("nombre").asText(""));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tipo de experimento
|
|
||||||
TipoExperimento tipo = null;
|
|
||||||
if (nodoExp.has("tipo")) {
|
|
||||||
try {
|
|
||||||
tipo = TipoExperimento.valueOf(nodoExp.get("tipo").asText(""));
|
|
||||||
experimento.setTipo(tipo);
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
System.err.println("Tipo de experimento desconocido: " + nodoExp.get("tipo").asText(""));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Módulo asociado (solo se asocia código para que el DAO resuelva la relación)
|
|
||||||
if (nodoExp.has("cod_modulo")) {
|
|
||||||
Modulo modulo = new Modulo();
|
|
||||||
modulo.setCodigo(nodoExp.get("cod_modulo").asText(""));
|
|
||||||
experimento.setModulo(modulo);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Construcción del campo "resultado" según la lógica de negocio del
|
|
||||||
// ContextoProyecto
|
|
||||||
String resultado = construirResultado(tipo, nodoExp);
|
|
||||||
experimento.setResultado(resultado);
|
|
||||||
|
|
||||||
return experimento;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Aplica las reglas de negocio del ContextoProyecto para el campo resultado:
|
|
||||||
* <ul>
|
|
||||||
* <li><b>Geológico</b>: "Muestra de {material} obtenida a {profundidad} m de
|
|
||||||
* profundidad."</li>
|
|
||||||
* <li><b>Biológico</b>: "Análisis de {organismo} realizado bajo nivel {nivel}
|
|
||||||
* de bioseguridad.</li>
|
|
||||||
* <li><b>Climatológico</b>: "Estudio de {variable} durante {dias} días con
|
|
||||||
* frecuencia {frecuencia}."</li>
|
|
||||||
* </ul>
|
|
||||||
*/
|
|
||||||
private String construirResultado(TipoExperimento tipo, JsonNode nodo) {
|
|
||||||
if (tipo == null)
|
|
||||||
return "Resultado no determinado.";
|
|
||||||
switch (tipo) {
|
|
||||||
case Geológico:
|
|
||||||
String material = nodo.has("material") ? nodo.get("material").asText("Basalto") : "Basalto";
|
|
||||||
String profundidad = nodo.has("profundidad") ? nodo.get("profundidad").asText("120") : "120";
|
|
||||||
return String.format("Muestra de %s obtenida a %s m de profundidad.", material, profundidad);
|
|
||||||
|
|
||||||
case Biológico:
|
|
||||||
String organismo = nodo.has("organismo") ? nodo.get("organismo").asText("Microorganismo")
|
|
||||||
: "Microorganismo";
|
|
||||||
String nivel = nodo.has("nivel") ? nodo.get("nivel").asText("3") : "3";
|
|
||||||
return String.format("Análisis de %s realizado bajo nivel %s de bioseguridad.", organismo, nivel);
|
|
||||||
|
|
||||||
case Climatológico:
|
|
||||||
String variable = nodo.has("variable") ? nodo.get("variable").asText("Temperatura") : "Temperatura";
|
|
||||||
String dias = nodo.has("dias") ? nodo.get("dias").asText("30") : "30";
|
|
||||||
String frecuencia = nodo.has("frecuencia") ? nodo.get("frecuencia").asText("Diaria") : "Diaria";
|
|
||||||
return String.format("Estudio de %s durante %s días con frecuencia %s.", variable, dias, frecuencia);
|
|
||||||
|
|
||||||
default:
|
|
||||||
return "Resultado no determinado.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
|
||||||
// GENERADORES desde CSV
|
|
||||||
// -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Obtiene la lista de Generadores desde un fichero CSV.
|
|
||||||
* Cabecera esperada: identificador,nombre,potencia_mw,tipo,cod_base
|
|
||||||
*
|
|
||||||
* @param rutaCSV ruta al fichero CSV
|
|
||||||
* @return Lista de Generador o null si hay error.
|
|
||||||
*/
|
|
||||||
public List<Generador> obtenerGeneradoresDeFicheroCSV(String rutaCSV) {
|
|
||||||
List<Generador> listaGeneradores = null;
|
|
||||||
|
|
||||||
try (BufferedReader reader = new BufferedReader(new FileReader(rutaCSV))) {
|
|
||||||
listaGeneradores = new ArrayList<>();
|
|
||||||
String linea;
|
|
||||||
boolean primeraLinea = true;
|
|
||||||
|
|
||||||
while ((linea = reader.readLine()) != null) {
|
|
||||||
if (primeraLinea) {
|
|
||||||
// Saltar cabecera
|
|
||||||
primeraLinea = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (linea.trim().isEmpty())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
Generador generador = obtenerGeneradorDeLineaCSV(linea);
|
|
||||||
if (generador != null)
|
|
||||||
listaGeneradores.add(generador);
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
System.err.println("Error leyendo CSV de generadores: " + e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
return listaGeneradores;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parsea una línea del CSV y devuelve un Generador.
|
|
||||||
* Formato: nombre,potencia_mw,tipo,cod_base
|
|
||||||
*/
|
|
||||||
private Generador obtenerGeneradorDeLineaCSV(String linea) {
|
|
||||||
String[] partes = linea.split(",");
|
|
||||||
if (partes.length < 4) {
|
|
||||||
System.err.println("Línea CSV de generador con formato incorrecto: " + linea);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Generador generador = new Generador();
|
|
||||||
generador.setNombre(partes[0].trim());
|
|
||||||
try {
|
|
||||||
generador.setPotenciaMW(Double.parseDouble(partes[1].trim()));
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
System.err.println("Potencia MW no válida: " + partes[1].trim());
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
generador.setTipo(TipoGenerador.valueOf(partes[2].trim()));
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
System.err.println("Tipo de generador desconocido: " + partes[2].trim());
|
|
||||||
}
|
|
||||||
if (partes.length >= 4 && !partes[3].trim().isEmpty()) {
|
|
||||||
Base base = new Base();
|
|
||||||
base.setCodigo(partes[3].trim());
|
|
||||||
generador.setBase(base);
|
|
||||||
}
|
|
||||||
|
|
||||||
return generador;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,85 @@
|
|||||||
|
package eu.agenciaesa.inm.procesamiento;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import eu.agenciaesa.inm.dao.IBaseDao;
|
||||||
|
import eu.agenciaesa.inm.dao.hibernate.BaseDaoHibernate;
|
||||||
|
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
||||||
|
import eu.agenciaesa.inm.gestores.GestorFicheroConfiguracion;
|
||||||
|
import eu.agenciaesa.inm.vo.Base;
|
||||||
|
import eu.agenciaesa.inm.vo.ETipoGenerador;
|
||||||
|
import eu.agenciaesa.inm.vo.Generador;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ProcesadorFicheroCSV: clase que procesa los generadores provenientes de un
|
||||||
|
* fichero CSV
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
*/
|
||||||
|
public class ProcesadorGeneradoresFicheroCSV {
|
||||||
|
|
||||||
|
public List<Generador> obtenerGeneradoresDeFicheroCSV() throws AgenciaESAException {
|
||||||
|
String rutaCSV = GestorFicheroConfiguracion.obtenerValor("ruta.csv.generadores");
|
||||||
|
|
||||||
|
List<Generador> listaGeneradores = null;
|
||||||
|
|
||||||
|
try (BufferedReader reader = new BufferedReader(new FileReader(rutaCSV))) {
|
||||||
|
listaGeneradores = new ArrayList<>();
|
||||||
|
String linea;
|
||||||
|
|
||||||
|
// Saltar cabecera
|
||||||
|
reader.readLine();
|
||||||
|
|
||||||
|
while ((linea = reader.readLine()) != null) {
|
||||||
|
|
||||||
|
Generador generador = obtenerGeneradorDeLineaCSV(linea);
|
||||||
|
|
||||||
|
if (generador != null)
|
||||||
|
listaGeneradores.add(generador);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println("Error leyendo CSV de generadores: " + e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return listaGeneradores;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private Generador obtenerGeneradorDeLineaCSV(String linea) throws AgenciaESAException {
|
||||||
|
Generador generador = null;
|
||||||
|
|
||||||
|
String[] partes = linea.split("\\|");
|
||||||
|
String nombreGenerador= partes[0].trim();
|
||||||
|
String tipoGenerador= partes[1].trim();
|
||||||
|
String potenciaMW= partes[2].trim();
|
||||||
|
String nombreBase= partes[4].trim();
|
||||||
|
|
||||||
|
if(nombreBase!=null && !nombreBase.isEmpty()) {
|
||||||
|
IBaseDao baseDao = new BaseDaoHibernate();
|
||||||
|
Base baseBBDD = baseDao.obtenerBasePorNombre(nombreBase);
|
||||||
|
// Solo se crea el generador si existe la base asociada en la BBDD, si no se ignora el registro del CSV
|
||||||
|
if (baseBBDD != null) {
|
||||||
|
generador = new Generador();
|
||||||
|
generador.setNombre(nombreGenerador);
|
||||||
|
generador.setPotenciaMW(Double.parseDouble(potenciaMW));
|
||||||
|
generador.setTipo(ETipoGenerador.valueOf(tipoGenerador));
|
||||||
|
|
||||||
|
generador.setBase(baseBBDD);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (partes.length >= 4 && !partes[3].trim().isEmpty()) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return generador;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,161 @@
|
|||||||
|
package eu.agenciaesa.inm.procesamiento;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import eu.agenciaesa.inm.dao.ICuerpoCelesteDao;
|
||||||
|
import eu.agenciaesa.inm.dao.jdbc.CuerpoCelesteDaoJDBC;
|
||||||
|
import eu.agenciaesa.inm.excepciones.AgenciaESAException;
|
||||||
|
import eu.agenciaesa.inm.gestores.GestorFicheroConfiguracion;
|
||||||
|
import eu.agenciaesa.inm.utilidades.GestorURLs;
|
||||||
|
import eu.agenciaesa.inm.vo.Base;
|
||||||
|
import eu.agenciaesa.inm.vo.CuerpoCeleste;
|
||||||
|
import eu.agenciaesa.inm.vo.EFuncionPrincipalBase;
|
||||||
|
import eu.agenciaesa.inm.vo.Modulo;
|
||||||
|
import tools.jackson.databind.JsonNode;
|
||||||
|
import tools.jackson.databind.ObjectMapper;
|
||||||
|
import tools.jackson.databind.node.ArrayNode;
|
||||||
|
import tools.jackson.dataformat.xml.XmlMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ProcesadorBaseYModulosURL: clase que procesa las base y módulos que vienen de
|
||||||
|
* una URL
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
*/
|
||||||
|
public class ProcesadorModulosURL {
|
||||||
|
|
||||||
|
// Se ofrece este método público se devuelve una lista de Base (que contendrá la lista de módulos) a partir de la URL de configuración.
|
||||||
|
// El método se puede llamar desde el main o desde un procesador de bases para obtener la lista completa de bases con sus módulos anidados.
|
||||||
|
public List<Base> obtenerListaBasesDeURL() {
|
||||||
|
String urlBases = GestorFicheroConfiguracion.obtenerValor("url.bases-modulos");
|
||||||
|
List<Base> listaBases = null;
|
||||||
|
|
||||||
|
String xmlContenido = GestorURLs.getTextoFromURL(urlBases);
|
||||||
|
if (xmlContenido == null || xmlContenido.isEmpty()) {
|
||||||
|
System.err.println("No se pudo obtener el XML de bases desde la URL: " + urlBases);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
ObjectMapper mapeadorXML = new XmlMapper();
|
||||||
|
try {
|
||||||
|
JsonNode nodoRaiz = mapeadorXML.readTree(xmlContenido);
|
||||||
|
if (nodoRaiz != null) {
|
||||||
|
listaBases = new ArrayList<>();
|
||||||
|
|
||||||
|
JsonNode nodoBases = nodoRaiz.has("base") ? nodoRaiz.get("base") : nodoRaiz;
|
||||||
|
|
||||||
|
nodoBases = convertirJsonNodeEnArrayNode(nodoBases);
|
||||||
|
|
||||||
|
for (JsonNode nodoBase : nodoBases) {
|
||||||
|
Base base = obtenerBaseDeJsonNode(nodoBase);
|
||||||
|
if (base != null) {
|
||||||
|
listaBases.add(base);
|
||||||
|
List<Modulo> listaModulos = obtenerModulosDeBase(nodoBase, base);
|
||||||
|
base.setListaModulos(listaModulos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.err.println("Error procesando XML de bases con JsonNode: " + e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return listaBases;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Base obtenerBaseDeJsonNode(JsonNode nodoBase) throws AgenciaESAException {
|
||||||
|
if (nodoBase == null || nodoBase.isNull())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
String codigo = nodoBase.get("id").asString();
|
||||||
|
String nombreBase = nodoBase.get("nombre").asString();
|
||||||
|
String fechaStr = nodoBase.get("fecha_establecimiento").asString();
|
||||||
|
|
||||||
|
Base base = new Base();
|
||||||
|
base.setCodigo(codigo);
|
||||||
|
base.setNombre(nombreBase);
|
||||||
|
|
||||||
|
if (!fechaStr.isEmpty()) {
|
||||||
|
try {
|
||||||
|
base.setFechaEstablecimiento(LocalDate.parse(fechaStr));
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.err.println("Fecha de establecimiento no válida: " + fechaStr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String funcion = nodoBase.get("funcion_ppal").asString();
|
||||||
|
try {
|
||||||
|
base.setFuncionPrincipal(EFuncionPrincipalBase.valueOf(funcion));
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
System.err.println("Función principal desconocida: " + funcion);
|
||||||
|
}
|
||||||
|
|
||||||
|
JsonNode nodoCuerpo = nodoBase.get("cuerpo");
|
||||||
|
String nombreCuerpo = nodoCuerpo.get("nombre").asString();
|
||||||
|
// Se carga el cuerpo celeste asociado a la base. Si el cuerpo no existe en la BBDD, se inserta uno nuevo con el nombre obtenido del XML.
|
||||||
|
if (!nombreCuerpo.isEmpty()) {
|
||||||
|
ICuerpoCelesteDao cuerpoDao = new CuerpoCelesteDaoJDBC();
|
||||||
|
CuerpoCeleste cuerpo = null;
|
||||||
|
CuerpoCeleste cuerpoBBDD = cuerpoDao.obtenerCuerpoCelestePorNombre(nombreCuerpo);
|
||||||
|
if(cuerpoBBDD == null) {
|
||||||
|
cuerpo = new CuerpoCeleste();
|
||||||
|
cuerpo.setNombre(nombreCuerpo);
|
||||||
|
cuerpoDao.insertarCuerpoCeleste(cuerpo);
|
||||||
|
}
|
||||||
|
cuerpo= cuerpoDao.obtenerCuerpoCelestePorNombre(nombreCuerpo);
|
||||||
|
base.setCuerpo(cuerpo);
|
||||||
|
}
|
||||||
|
|
||||||
|
return base;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private List<Modulo> obtenerModulosDeBase(JsonNode nodoBase, Base base) {
|
||||||
|
|
||||||
|
List<Modulo> listaModulos = new ArrayList<>();
|
||||||
|
if (nodoBase == null)
|
||||||
|
return listaModulos;
|
||||||
|
|
||||||
|
JsonNode nodoListaModulos = nodoBase.get("modulos").get("modulo");
|
||||||
|
|
||||||
|
nodoListaModulos = convertirJsonNodeEnArrayNode(nodoListaModulos);
|
||||||
|
for (JsonNode nodoModulo : nodoListaModulos) {
|
||||||
|
Modulo modulo = obtenerModuloDeJsonNode(nodoModulo, base);
|
||||||
|
if (modulo != null)
|
||||||
|
listaModulos.add(modulo);
|
||||||
|
}
|
||||||
|
|
||||||
|
return listaModulos;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Modulo obtenerModuloDeJsonNode(JsonNode nodoModulo, Base base) {
|
||||||
|
if (nodoModulo == null || nodoModulo.isNull())
|
||||||
|
return null;
|
||||||
|
String codigo = nodoModulo.get("id").asString();
|
||||||
|
String nombreModulo = nodoModulo.get("nombre").asString();
|
||||||
|
Double consumoEnergia = nodoModulo.get("consumo_energia").asDouble(0.0);
|
||||||
|
|
||||||
|
Modulo modulo = new Modulo();
|
||||||
|
modulo.setCodigo(codigo);
|
||||||
|
modulo.setNombre(nombreModulo);
|
||||||
|
modulo.setConsumoEnergiaMW(consumoEnergia);
|
||||||
|
|
||||||
|
modulo.setBase(base);
|
||||||
|
return modulo;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,12 +1,32 @@
|
|||||||
package eu.agenciaesa.inm.vo;
|
package eu.agenciaesa.inm.vo;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.CascadeType;
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.EnumType;
|
||||||
|
import jakarta.persistence.Enumerated;
|
||||||
|
import jakarta.persistence.FetchType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.JoinColumn;
|
||||||
|
import jakarta.persistence.ManyToOne;
|
||||||
|
import jakarta.persistence.OneToMany;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entidad que representa la tabla T_BASE.
|
* Entidad que representa la tabla T_BASE.
|
||||||
*/
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "T_BASE")
|
@Table(name = "T_BASE")
|
||||||
public class Base {
|
public class Base {
|
||||||
@ -22,55 +42,13 @@ public class Base {
|
|||||||
|
|
||||||
@Enumerated(EnumType.STRING) // Se almacena el valor de un enumerado
|
@Enumerated(EnumType.STRING) // Se almacena el valor de un enumerado
|
||||||
@Column(name = "funcion_principal", nullable = false)
|
@Column(name = "funcion_principal", nullable = false)
|
||||||
private FuncionPrincipalBase funcionPrincipal;
|
private EFuncionPrincipalBase funcionPrincipal;
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.EAGER)
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
@JoinColumn(name = "id_cuerpo", referencedColumnName = "identificador")
|
@JoinColumn(name = "id_cuerpo", referencedColumnName = "identificador")
|
||||||
private CuerpoCeleste cuerpo;
|
private CuerpoCeleste cuerpo;
|
||||||
|
|
||||||
public String getCodigo() {
|
@OneToMany(mappedBy = "base", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
|
||||||
return codigo;
|
private List<Modulo> listaModulos;
|
||||||
}
|
|
||||||
|
|
||||||
public void setCodigo(String codigo) {
|
|
||||||
this.codigo = codigo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getNombre() {
|
|
||||||
return nombre;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNombre(String nombre) {
|
|
||||||
this.nombre = nombre;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDate getFechaEstablecimiento() {
|
|
||||||
return fechaEstablecimiento;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFechaEstablecimiento(LocalDate fechaEstablecimiento) {
|
|
||||||
this.fechaEstablecimiento = fechaEstablecimiento;
|
|
||||||
}
|
|
||||||
|
|
||||||
public FuncionPrincipalBase getFuncionPrincipal() {
|
|
||||||
return funcionPrincipal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFuncionPrincipal(FuncionPrincipalBase funcionPrincipal) {
|
|
||||||
this.funcionPrincipal = funcionPrincipal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CuerpoCeleste getCuerpo() {
|
|
||||||
return cuerpo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCuerpo(CuerpoCeleste cuerpo) {
|
|
||||||
this.cuerpo = cuerpo;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "Base [codigo=" + codigo + ", nombre=" + nombre + ", fechaEstablecimiento=" + fechaEstablecimiento
|
|
||||||
+ ", funcionPrincipal=" + funcionPrincipal + ", cuerpo=" + cuerpo + "]";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,19 @@
|
|||||||
package eu.agenciaesa.inm.vo;
|
package eu.agenciaesa.inm.vo;
|
||||||
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.EnumType;
|
||||||
|
import jakarta.persistence.Enumerated;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entidad que representa la tabla T_CUERPO_CELESTE.
|
* Entidad que representa la tabla T_CUERPO_CELESTE.
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "T_CUERPO_CELESTE")
|
@Table(name = "T_CUERPO_CELESTE")
|
||||||
public class CuerpoCeleste {
|
public class CuerpoCeleste {
|
||||||
@ -19,43 +28,6 @@ public class CuerpoCeleste {
|
|||||||
private double gravedadSuperficioMs2;
|
private double gravedadSuperficioMs2;
|
||||||
|
|
||||||
@Enumerated(EnumType.STRING) // Se almacena el valor de un enumerado
|
@Enumerated(EnumType.STRING) // Se almacena el valor de un enumerado
|
||||||
private TipoCuerpoCeleste tipo;
|
private ETipoCuerpoCeleste tipo;
|
||||||
|
|
||||||
public Long getIdentificador() {
|
|
||||||
return identificador;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIdentificador(Long identificador) {
|
|
||||||
this.identificador = identificador;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getNombre() {
|
|
||||||
return nombre;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNombre(String nombre) {
|
|
||||||
this.nombre = nombre;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getGravedadSuperficioMs2() {
|
|
||||||
return gravedadSuperficioMs2;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGravedadSuperficioMs2(double gravedadSuperficioMs2) {
|
|
||||||
this.gravedadSuperficioMs2 = gravedadSuperficioMs2;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TipoCuerpoCeleste getTipo() {
|
|
||||||
return tipo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTipo(TipoCuerpoCeleste tipo) {
|
|
||||||
this.tipo = tipo;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "CuerpoCeleste [identificador=" + identificador + ", nombre=" + nombre + ", gravedadSuperficioMs2="
|
|
||||||
+ gravedadSuperficioMs2 + ", tipo=" + tipo + "]";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package eu.agenciaesa.inm.vo;
|
package eu.agenciaesa.inm.vo;
|
||||||
|
|
||||||
public enum FuncionPrincipalBase {
|
public enum EFuncionPrincipalBase {
|
||||||
Investigación, Logística, Control;
|
Investigación, Logística, Control;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package eu.agenciaesa.inm.vo;
|
package eu.agenciaesa.inm.vo;
|
||||||
|
|
||||||
public enum TipoCuerpoCeleste {
|
public enum ETipoCuerpoCeleste {
|
||||||
Planeta, Satélite, Asteroide, Planetoide;
|
Planeta, Satélite, Asteroide, Planetoide;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package eu.agenciaesa.inm.vo;
|
package eu.agenciaesa.inm.vo;
|
||||||
|
|
||||||
public enum TipoExperimento {
|
public enum ETipoExperimento {
|
||||||
Biológico, Climatológico, Geológico;
|
Biológico, Climatológico, Geológico;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package eu.agenciaesa.inm.vo;
|
package eu.agenciaesa.inm.vo;
|
||||||
|
|
||||||
public enum TipoGenerador {
|
public enum ETipoGenerador {
|
||||||
Nuclear, Solar, Geotérmica;
|
Nuclear, Solar, Geotérmica;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package eu.agenciaesa.inm.vo;
|
package eu.agenciaesa.inm.vo;
|
||||||
|
|
||||||
public enum TipoNave {
|
public enum ETipoNave {
|
||||||
Transporte, Reconocimiento, Científica, Mantenimiento;
|
Transporte, Reconocimiento, Científica, Mantenimiento;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -11,10 +11,12 @@ import jakarta.persistence.Id;
|
|||||||
import jakarta.persistence.JoinColumn;
|
import jakarta.persistence.JoinColumn;
|
||||||
import jakarta.persistence.ManyToOne;
|
import jakarta.persistence.ManyToOne;
|
||||||
import jakarta.persistence.Table;
|
import jakarta.persistence.Table;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entidad que representa la tabla T_EXPERIMENTO.
|
* Entidad que representa la tabla T_EXPERIMENTO.
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "T_EXPERIMENTO")
|
@Table(name = "T_EXPERIMENTO")
|
||||||
public class Experimento {
|
public class Experimento {
|
||||||
@ -29,56 +31,10 @@ public class Experimento {
|
|||||||
private String resultado;
|
private String resultado;
|
||||||
|
|
||||||
@Enumerated(EnumType.STRING) // Se almacena el valor de un enumerado
|
@Enumerated(EnumType.STRING) // Se almacena el valor de un enumerado
|
||||||
private TipoExperimento tipo;
|
private ETipoExperimento tipo;
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.EAGER)
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
@JoinColumn(name = "cod_modulo", referencedColumnName ="codigo" )
|
@JoinColumn(name = "cod_modulo", referencedColumnName ="codigo" )
|
||||||
private Modulo modulo;
|
private Modulo modulo;
|
||||||
|
|
||||||
public Long getIdentificador() {
|
|
||||||
return identificador;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIdentificador(Long identificador) {
|
|
||||||
this.identificador = identificador;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getNombre() {
|
|
||||||
return nombre;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNombre(String nombre) {
|
|
||||||
this.nombre = nombre;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getResultado() {
|
|
||||||
return resultado;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setResultado(String resultado) {
|
|
||||||
this.resultado = resultado;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TipoExperimento getTipo() {
|
|
||||||
return tipo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTipo(TipoExperimento tipo) {
|
|
||||||
this.tipo = tipo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Modulo getModulo() {
|
|
||||||
return modulo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setModulo(Modulo modulo) {
|
|
||||||
this.modulo = modulo;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "Experimento [identificador=" + identificador + ", nombre=" + nombre + ", resultado=" + resultado
|
|
||||||
+ ", tipo=" + tipo + ", modulo=" + modulo + "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,10 +11,12 @@ import jakarta.persistence.Id;
|
|||||||
import jakarta.persistence.JoinColumn;
|
import jakarta.persistence.JoinColumn;
|
||||||
import jakarta.persistence.OneToOne;
|
import jakarta.persistence.OneToOne;
|
||||||
import jakarta.persistence.Table;
|
import jakarta.persistence.Table;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entidad que representa la tabla T_GENERADOR.
|
* Entidad que representa la tabla T_GENERADOR.
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "T_GENERADOR")
|
@Table(name = "T_GENERADOR")
|
||||||
public class Generador {
|
public class Generador {
|
||||||
@ -30,55 +32,10 @@ public class Generador {
|
|||||||
private double potenciaMW;
|
private double potenciaMW;
|
||||||
|
|
||||||
@Enumerated(EnumType.STRING) // Se almacena el valor de un enumerado
|
@Enumerated(EnumType.STRING) // Se almacena el valor de un enumerado
|
||||||
private TipoGenerador tipo;
|
private ETipoGenerador tipo;
|
||||||
|
|
||||||
@OneToOne(fetch = FetchType.EAGER)
|
@OneToOne(fetch = FetchType.EAGER)
|
||||||
@JoinColumn(name = "cod_base", referencedColumnName = "codigo")
|
@JoinColumn(name = "cod_base", referencedColumnName = "codigo")
|
||||||
private Base base;
|
private Base base;
|
||||||
|
|
||||||
public Long getIdentificador() {
|
|
||||||
return identificador;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIdentificador(Long identificador) {
|
|
||||||
this.identificador = identificador;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getNombre() {
|
|
||||||
return nombre;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNombre(String nombre) {
|
|
||||||
this.nombre = nombre;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getPotenciaMW() {
|
|
||||||
return potenciaMW;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPotenciaMW(double potenciaMW) {
|
|
||||||
this.potenciaMW = potenciaMW;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TipoGenerador getTipo() {
|
|
||||||
return tipo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTipo(TipoGenerador tipo) {
|
|
||||||
this.tipo = tipo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Base getBase() {
|
|
||||||
return base;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBase(Base base) {
|
|
||||||
this.base = base;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "Generador [identificador=" + identificador + ", nombre=" + nombre + ", potenciaMW=" + potenciaMW
|
|
||||||
+ ", tipo=" + tipo + ", base=" + base + "]";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,10 +10,12 @@ import jakarta.persistence.JoinColumn;
|
|||||||
import jakarta.persistence.ManyToOne;
|
import jakarta.persistence.ManyToOne;
|
||||||
import jakarta.persistence.MapsId;
|
import jakarta.persistence.MapsId;
|
||||||
import jakarta.persistence.Table;
|
import jakarta.persistence.Table;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entidad que representa la tabla T_MISION.
|
* Entidad que representa la tabla T_MISION.
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "T_MISION")
|
@Table(name = "T_MISION")
|
||||||
public class Mision {
|
public class Mision {
|
||||||
|
|||||||
@ -6,7 +6,9 @@ import java.util.Objects;
|
|||||||
|
|
||||||
import jakarta.persistence.Column;
|
import jakarta.persistence.Column;
|
||||||
import jakarta.persistence.Embeddable;
|
import jakarta.persistence.Embeddable;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
@Embeddable
|
@Embeddable
|
||||||
public class MisionID implements Serializable {
|
public class MisionID implements Serializable {
|
||||||
|
|
||||||
@ -47,34 +49,4 @@ public class MisionID implements Serializable {
|
|||||||
return Objects.hash(codigoNave, idCuerpoCeleste, fechaInicio);
|
return Objects.hash(codigoNave, idCuerpoCeleste, fechaInicio);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCodigoNave() {
|
|
||||||
return codigoNave;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCodigoNave(String codigoNave) {
|
|
||||||
this.codigoNave = codigoNave;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getIdCuerpoCeleste() {
|
|
||||||
return idCuerpoCeleste;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIdCuerpoCeleste(Long idCuerpoCeleste) {
|
|
||||||
this.idCuerpoCeleste = idCuerpoCeleste;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDate getFechaInicio() {
|
|
||||||
return fechaInicio;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFechaInicio(LocalDate fechaInicio) {
|
|
||||||
this.fechaInicio = fechaInicio;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "MisionID [codigoNave=" + codigoNave + ", idCuerpoCeleste=" + idCuerpoCeleste + ", fechaInicio="
|
|
||||||
+ fechaInicio + "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,10 +7,19 @@ import jakarta.persistence.Id;
|
|||||||
import jakarta.persistence.JoinColumn;
|
import jakarta.persistence.JoinColumn;
|
||||||
import jakarta.persistence.ManyToOne;
|
import jakarta.persistence.ManyToOne;
|
||||||
import jakarta.persistence.Table;
|
import jakarta.persistence.Table;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entidad que representa la tabla T_MODULO.
|
* Entidad que representa la tabla T_MODULO.
|
||||||
*/
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "T_MODULO")
|
@Table(name = "T_MODULO")
|
||||||
public class Modulo {
|
public class Modulo {
|
||||||
@ -28,41 +37,4 @@ public class Modulo {
|
|||||||
@JoinColumn(name = "cod_base", referencedColumnName = "codigo")
|
@JoinColumn(name = "cod_base", referencedColumnName = "codigo")
|
||||||
private Base base;
|
private Base base;
|
||||||
|
|
||||||
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 double getConsumoEnergiaMW() {
|
|
||||||
return consumoEnergiaMW;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConsumoEnergiaMW(double consumoEnergiaMW) {
|
|
||||||
this.consumoEnergiaMW = consumoEnergiaMW;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Base getBase() {
|
|
||||||
return base;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBase(Base base) {
|
|
||||||
this.base = base;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "Modulo [codigo=" + codigo + ", nombre=" + nombre + ", consumoEnergiaMW=" + consumoEnergiaMW + ", base="
|
|
||||||
+ base + "]";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,10 +6,13 @@ import jakarta.persistence.EnumType;
|
|||||||
import jakarta.persistence.Enumerated;
|
import jakarta.persistence.Enumerated;
|
||||||
import jakarta.persistence.Id;
|
import jakarta.persistence.Id;
|
||||||
import jakarta.persistence.Table;
|
import jakarta.persistence.Table;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entidad que representa la tabla T_NAVE.
|
* Entidad que representa la tabla T_NAVE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@Data
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "T_NAVE")
|
@Table(name = "T_NAVE")
|
||||||
public class Nave {
|
public class Nave {
|
||||||
@ -27,13 +30,13 @@ public class Nave {
|
|||||||
private int autonomiaDias;
|
private int autonomiaDias;
|
||||||
|
|
||||||
@Enumerated(EnumType.STRING) // Se almacena el valor de un enumerado
|
@Enumerated(EnumType.STRING) // Se almacena el valor de un enumerado
|
||||||
private TipoNave tipo;
|
private ETipoNave tipo;
|
||||||
|
|
||||||
public TipoNave getTipo() {
|
public ETipoNave getTipo() {
|
||||||
return tipo;
|
return tipo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTipo(TipoNave tipo) {
|
public void setTipo(ETipoNave tipo) {
|
||||||
this.tipo = tipo;
|
this.tipo = tipo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,19 +5,31 @@
|
|||||||
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
|
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
|
||||||
<!-- Unidad Persistencia Hibernate -->
|
<!-- Unidad Persistencia Hibernate -->
|
||||||
<persistence-unit name="UP_AGENCIAESA_POSTGRESQL" transaction-type="RESOURCE_LOCAL">
|
<persistence-unit name="UP_AGENCIAESA_POSTGRESQL" transaction-type="RESOURCE_LOCAL">
|
||||||
|
<!-- Proveedor de persistencia JPA -->
|
||||||
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
|
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
|
||||||
|
|
||||||
<!-- Clases a "mapear" -->
|
<!-- Clases a "mapear" -->
|
||||||
|
<class>eu.agenciaesa.inm.vo.Nave</class>
|
||||||
|
<class>eu.agenciaesa.inm.vo.CuerpoCeleste</class>
|
||||||
|
<class>eu.agenciaesa.inm.vo.Base</class>
|
||||||
|
<class>eu.agenciaesa.inm.vo.Generador</class>
|
||||||
|
<class>eu.agenciaesa.inm.vo.Modulo</class>
|
||||||
<class>eu.agenciaesa.inm.vo.Experimento</class>
|
<class>eu.agenciaesa.inm.vo.Experimento</class>
|
||||||
|
<class>eu.agenciaesa.inm.vo.MisionID</class>
|
||||||
|
<class>eu.agenciaesa.inm.vo.Mision</class>
|
||||||
|
|
||||||
<!-- Configuración para la conexión a la Base de Datos -->
|
|
||||||
|
<!-- Configuración de propiedades del SGDB (PostgreSQL) -->
|
||||||
<properties>
|
<properties>
|
||||||
<property name="jakarta.persistence.jdbc.driver" value="org.postgresql.Driver" />
|
<property name="jakarta.persistence.jdbc.url" value="jdbc:postgresql://192.168.1.36:5432/agencia_esa_inm"/>
|
||||||
<property name="jakarta.persistence.jdbc.url" value="jdbc:postgresql://192.168.1.36:5432/agencia_esa_inm" />
|
<property name="jakarta.persistence.jdbc.user" value="vdlp"/>
|
||||||
<property name="jakarta.persistence.jdbc.user" value="postgres" />
|
<property name="jakarta.persistence.jdbc.password" value="postgresql_123"/>
|
||||||
<property name="jakarta.persistence.jdbc.password" value="postgres_123" />
|
<property name="jakarta.persistence.jdbc.driver" value="org.postgresql.Driver"/>
|
||||||
|
|
||||||
<property name="hibernate.show_sql" value="true" />
|
<!-- Configuración Hibernate -->
|
||||||
<property name="hibernate.hbm2ddl.auto" value="update" />
|
<property name="hibernate.hbm2ddl.auto" value="update"/>
|
||||||
|
<property name="hibernate.show_sql" value="true"/>
|
||||||
|
<property name="format_sql" value="true" />
|
||||||
</properties>
|
</properties>
|
||||||
</persistence-unit>
|
</persistence-unit>
|
||||||
|
|
||||||
|
|||||||
15
src/main/resources/agenciaesa.conf
Normal file
15
src/main/resources/agenciaesa.conf
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# Información sobre la Base de datos MySQL
|
||||||
|
jdbc.driver=org.postgresql.Driver
|
||||||
|
jdbc.url=jdbc:postgresql://192.168.1.36:5432/agencia_esa_inm
|
||||||
|
jdbc.usuario=vdlp
|
||||||
|
jdbc.password=postgresql_123
|
||||||
|
|
||||||
|
# Información sobre la Base de datos MongoDB
|
||||||
|
mongodb.url=mongodb://admin:mongodb_123@192.168.1.36:27017
|
||||||
|
mongodb.bbdd=agencia_esa_inm
|
||||||
|
|
||||||
|
#ruta fichero xml para bases y módulos
|
||||||
|
url.bases-modulos=https://dam2.decieloytierra.es/agenciaesa/bases-modulos.xml
|
||||||
|
|
||||||
|
#ruta fichero csv con información de los generadores
|
||||||
|
ruta.csv.generadores=ficheros/info-generadores.csv
|
||||||
@ -1,5 +0,0 @@
|
|||||||
url.conexion.mongodb=mongodb://admin:mongodb_123@192.168.1.36:27017
|
|
||||||
bbdd.mongodb=agencia_esa_inm
|
|
||||||
url.bases=https://dam2.decieloytierra.es/agenciaesa/bases-modulos.xml
|
|
||||||
url.experimentos=https://aulavirtual35.educa.madrid.org/ies.lapaloma.madrid/pluginfile.php/232510/mod_assign/intro/experimentos_modulos.json?time=1771520391646
|
|
||||||
ruta.csv=info-generadores.csv
|
|
||||||
@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
|
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
|
||||||
|
|
||||||
<property name="connection.username">postgres</property>
|
<property name="connection.username">vdlp</property>
|
||||||
<property name="connection.password">postgres_123</property>
|
<property name="connection.password">postgresql_123</property>
|
||||||
|
|
||||||
<!-- Configuración de Hibernate -->
|
<!-- Configuración de Hibernate -->
|
||||||
<property name="hibernate.hbm2ddl.auto">update</property> <!-- 'update' para mantener el esquema en sincronía con las entidades -->
|
<property name="hibernate.hbm2ddl.auto">update</property> <!-- 'update' para mantener el esquema en sincronía con las entidades -->
|
||||||
@ -18,8 +18,15 @@
|
|||||||
<property name="hibernate.format_sql">true</property> <!-- Da formato a las consultas SQL -->
|
<property name="hibernate.format_sql">true</property> <!-- Da formato a las consultas SQL -->
|
||||||
<property name="hibernate.use_sql_comments">false</property> <!-- Añade comentarios en las consultas SQL -->
|
<property name="hibernate.use_sql_comments">false</property> <!-- Añade comentarios en las consultas SQL -->
|
||||||
|
|
||||||
|
<!-- Clases a "mapear" -->
|
||||||
|
<mapping class="eu.agenciaesa.inm.vo.Nave"></mapping>
|
||||||
|
<mapping class="eu.agenciaesa.inm.vo.CuerpoCeleste"></mapping>
|
||||||
<mapping class="eu.agenciaesa.inm.vo.Base"></mapping>
|
<mapping class="eu.agenciaesa.inm.vo.Base"></mapping>
|
||||||
|
<mapping class="eu.agenciaesa.inm.vo.Generador"></mapping>
|
||||||
<mapping class="eu.agenciaesa.inm.vo.Modulo"></mapping>
|
<mapping class="eu.agenciaesa.inm.vo.Modulo"></mapping>
|
||||||
|
<mapping class="eu.agenciaesa.inm.vo.Experimento"></mapping>
|
||||||
|
<mapping class="eu.agenciaesa.inm.vo.MisionID"></mapping>
|
||||||
|
<mapping class="eu.agenciaesa.inm.vo.Mision"></mapping>
|
||||||
|
|
||||||
|
|
||||||
</session-factory>
|
</session-factory>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user