From ae3441237a86376d0005dcf52c13d970eb3f31b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isidoro=20Nevares=20Mart=C3=ADn?= Date: Tue, 24 Feb 2026 19:33:59 +0100 Subject: [PATCH] Incluye MongoDB --- .../inm/dao/mngdb/ExperimientoDaoMongoDB.java | 86 +++++++++++++++++++ .../inm/procesamiento/ProcesadorDatos.java | 16 +++- 2 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 src/main/java/eu/agenciaesa/inm/dao/mngdb/ExperimientoDaoMongoDB.java diff --git a/src/main/java/eu/agenciaesa/inm/dao/mngdb/ExperimientoDaoMongoDB.java b/src/main/java/eu/agenciaesa/inm/dao/mngdb/ExperimientoDaoMongoDB.java new file mode 100644 index 0000000..0ad9c1b --- /dev/null +++ b/src/main/java/eu/agenciaesa/inm/dao/mngdb/ExperimientoDaoMongoDB.java @@ -0,0 +1,86 @@ +package eu.agenciaesa.inm.dao.mngdb; + +import java.util.ArrayList; +import java.util.List; + +import org.bson.Document; + +import com.mongodb.client.FindIterable; +import com.mongodb.client.MongoCollection; + +import eu.agenciaesa.inm.dao.IExperimentoDao; +import eu.agenciaesa.inm.excepciones.AgenciaESAException; +import eu.agenciaesa.inm.gestores.GestorConexionMongoDB; +import eu.agenciaesa.inm.vo.Experimento; +import eu.agenciaesa.inm.vo.Modulo; +import eu.agenciaesa.inm.vo.TipoExperimento; + +/** +* ExperimientoDaoMongoDB: Clase que se encarga de ... +* +* @autor: Isidoro Nevares Martín (IES Virgen de la Paloma) +* @date: 24 feb 2026 +*/ +public class ExperimientoDaoMongoDB implements IExperimentoDao{ + private final static String COLECCION = "C_EXPERIMENTO"; + @Override + public void insertarListaExperimentos(List listaExperimentos) throws AgenciaESAException { + // TODO Auto-generated method stub + + } + + @Override + public List obtenerListaExperimentos() throws AgenciaESAException { + List listaExperimentos = new ArrayList<>(); + + MongoCollection coleccionMongoDB = null; + try { + coleccionMongoDB = GestorConexionMongoDB.getMongoDatabase().getCollection(COLECCION); + + + FindIterable documentos = coleccionMongoDB.find(); + for (Document documento : documentos) { + String nombreExperimento = documento.getString("nombre"); + String sTipoExperimiento = documento.getString("tipo"); + TipoExperimento tipoExperimento=TipoExperimento.valueOf(sTipoExperimiento); + String resultadoExperimento = null; + + Document documentoDatos = documento.get("datos", Document.class); + if(tipoExperimento == TipoExperimento.Geológico) { + String tipoRoca = documentoDatos.getString("tipo_roca"); + Integer profundidad = documentoDatos.getInteger("profundidad_muestra_m"); + + resultadoExperimento = "Muestra de " + tipoRoca + " obtenida a " + profundidad + "m de profundidad."; + } else if(tipoExperimento == TipoExperimento.Biológico) { + String tipoMuestra = documentoDatos.getString("tipo_muestra"); + Integer nivel = documentoDatos.getInteger("nivel_bioseguridad"); + + resultadoExperimento = "Análisis de " + tipoMuestra + " realizado bajo nivel " + nivel + " de bioseguridad."; + } else { + Integer duracion = documentoDatos.getInteger("duracion_dias"); + String frecuencia = documentoDatos.getString("frecuencia"); + String parametro = documentoDatos.getString("parametro_estudio"); + + resultadoExperimento = "Estudio de " + parametro + " durante " + duracion + " días con frecuencia " + frecuencia; + } + + String codigoModulo = documento.getString("modulo_id"); + Modulo modulo = new Modulo(); + modulo.setCodigo(codigoModulo); + + Experimento experimento = new Experimento(); + experimento.setNombre(nombreExperimento); + experimento.setTipo(tipoExperimento); + experimento.setResultado(resultadoExperimento); + experimento.setModulo(modulo); + + listaExperimentos.add(experimento); + } + } catch (Exception e) { + throw new AgenciaESAException(e, AgenciaESAException.ERROR_CONSULTA , getClass()); + } + + return listaExperimentos; + } + +} diff --git a/src/main/java/eu/agenciaesa/inm/procesamiento/ProcesadorDatos.java b/src/main/java/eu/agenciaesa/inm/procesamiento/ProcesadorDatos.java index 8d73bd1..fc805ae 100644 --- a/src/main/java/eu/agenciaesa/inm/procesamiento/ProcesadorDatos.java +++ b/src/main/java/eu/agenciaesa/inm/procesamiento/ProcesadorDatos.java @@ -8,7 +8,6 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import eu.agenciaesa.inm.gestores.GestorFicheroConfiguracion; import eu.agenciaesa.inm.utilidades.GestorURLs; import eu.agenciaesa.inm.vo.Base; import eu.agenciaesa.inm.vo.CuerpoCeleste; @@ -18,9 +17,9 @@ 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; /** @@ -377,4 +376,17 @@ public class ProcesadorDatos { 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; + } + } }