From 3c1d61eff1e7e62804fad3197ac7633af7224db1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isidoro=20Nevares=20Mart=C3=ADn?= Date: Fri, 20 Feb 2026 14:36:39 +0100 Subject: [PATCH] Commit inicial --- .classpath | 41 ++++++ .gitignore | 3 + .project | 23 ++++ .settings/org.eclipse.core.resources.prefs | 2 + .settings/org.eclipse.jdt.core.prefs | 13 ++ .settings/org.eclipse.m2e.core.prefs | 4 + pom.xml | 45 +++++++ .../juegosolimpicos/inm/AppPrincipalJJOO.java | 23 ++++ .../coi/juegosolimpicos/inm/dao/IAtleta.java | 19 +++ .../inm/dao/IAtletaDisciplinaJuego.java | 19 +++ .../juegosolimpicos/inm/dao/IDisciplina.java | 20 +++ .../inm/dao/IJuegoOlimpico.java | 17 +++ .../coi/juegosolimpicos/inm/dao/IMascota.java | 17 +++ .../AtletaDisciplinaJuegoDaoHibernate.java | 62 +++++++++ .../inm/dao/hbnt/DisciplinaDaoHibernate.java | 67 ++++++++++ .../dao/hbnt/JuegoOlimpicoDaoHibernate.java | 59 +++++++++ .../inm/dao/hbnt/MascotaDaoHibernate.java | 59 +++++++++ .../inm/dao/jdbc/AtletaDaoJDBC.java | 120 ++++++++++++++++++ .../inm/dao/mngbd/DisciplinaDaoMongoDB.java | 72 +++++++++++ .../excepcion/JuegosOlimpicosExcepcion.java | 40 ++++++ .../inm/gestores/GestorConexionJDBC.java | 35 +++++ .../inm/gestores/GestorConexionMongoDB.java | 39 ++++++ .../gestores/GestorFicheroConfiguracion.java | 40 ++++++ .../inm/gestores/GestorSesionHibernate.java | 45 +++++++ .../coi/juegosolimpicos/inm/vo/Atleta.java | 47 +++++++ .../inm/vo/AtletaDisciplinaJuego.java | 93 ++++++++++++++ .../juegosolimpicos/inm/vo/Disciplina.java | 34 +++++ .../juegosolimpicos/inm/vo/JuegoOlimpico.java | 50 ++++++++ .../coi/juegosolimpicos/inm/vo/Mascota.java | 40 ++++++ .../org/coi/juegosolimpicos/inm/vo/Sexo.java | 15 +++ src/main/resources/config.properties | 9 ++ src/main/resources/hibernate.cfg.xml | 30 +++++ 32 files changed, 1202 insertions(+) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 pom.xml create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/AppPrincipalJJOO.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/dao/IAtleta.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/dao/IAtletaDisciplinaJuego.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/dao/IDisciplina.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/dao/IJuegoOlimpico.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/dao/IMascota.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/AtletaDisciplinaJuegoDaoHibernate.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/DisciplinaDaoHibernate.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/JuegoOlimpicoDaoHibernate.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/MascotaDaoHibernate.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/dao/jdbc/AtletaDaoJDBC.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/dao/mngbd/DisciplinaDaoMongoDB.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/excepcion/JuegosOlimpicosExcepcion.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorConexionJDBC.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorConexionMongoDB.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorFicheroConfiguracion.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorSesionHibernate.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/vo/Atleta.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/vo/AtletaDisciplinaJuego.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/vo/Disciplina.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/vo/JuegoOlimpico.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/vo/Mascota.java create mode 100644 src/main/java/org/coi/juegosolimpicos/inm/vo/Sexo.java create mode 100644 src/main/resources/config.properties create mode 100644 src/main/resources/hibernate.cfg.xml diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..51a6fca --- /dev/null +++ b/.classpath @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..93e00af --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/bin/ +*.class +/target/ diff --git a/.project b/.project new file mode 100644 index 0000000..1406598 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + aadd_act5_5 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bfac099 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,13 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=24 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=24 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=24 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..6f3af90 --- /dev/null +++ b/pom.xml @@ -0,0 +1,45 @@ + + 4.0.0 + org.coi.jjoo + aadd_act5_5 + 0.0.1-SNAPSHOT + + + + + org.mongodb + mongodb-driver-sync + 5.6.2 + compile + + + + + com.mysql + mysql-connector-j + 9.5.0 + + + + + org.hibernate.orm + hibernate-core + 7.1.11.Final + + + + + tools.jackson.dataformat + jackson-dataformat-xml + 3.0.1 + + + + + org.projectlombok + lombok + 1.18.42 + + + + \ No newline at end of file diff --git a/src/main/java/org/coi/juegosolimpicos/inm/AppPrincipalJJOO.java b/src/main/java/org/coi/juegosolimpicos/inm/AppPrincipalJJOO.java new file mode 100644 index 0000000..2f871ef --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/AppPrincipalJJOO.java @@ -0,0 +1,23 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm; + +import org.coi.juegosolimpicos.inm.gestores.GestorSesionHibernate; + +/** +* @author Isidoro Nevares Martín - IES Virgen de la Paloma +* @date 20 feb 2026 +* +*/ +public class AppPrincipalJJOO { + + /** + * @param args + */ + public static void main(String[] args) { + // TODO Auto-generated method stub + GestorSesionHibernate.getSession(); + } + +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/dao/IAtleta.java b/src/main/java/org/coi/juegosolimpicos/inm/dao/IAtleta.java new file mode 100644 index 0000000..01ab10b --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/dao/IAtleta.java @@ -0,0 +1,19 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.dao; + +import org.coi.juegosolimpicos.inm.excepcion.JuegosOlimpicosExcepcion; +import org.coi.juegosolimpicos.inm.vo.Atleta; + +/** +* @author Isidoro Nevares Martín - IES Virgen de la Paloma +* @date 20 feb 2026 +* +*/ +public interface IAtleta { + public Atleta obtenerAtletaPorID(int idAtleta) throws JuegosOlimpicosExcepcion; + public Atleta obtenerAtletaPorNombreApellidos(String nombre, String apellidos) throws JuegosOlimpicosExcepcion; + public void crearAtleta(Atleta atleta) throws JuegosOlimpicosExcepcion; + +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/dao/IAtletaDisciplinaJuego.java b/src/main/java/org/coi/juegosolimpicos/inm/dao/IAtletaDisciplinaJuego.java new file mode 100644 index 0000000..308460a --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/dao/IAtletaDisciplinaJuego.java @@ -0,0 +1,19 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.dao; + +import org.coi.juegosolimpicos.inm.excepcion.JuegosOlimpicosExcepcion; +import org.coi.juegosolimpicos.inm.vo.AtletaDisciplinaJuego; +import org.coi.juegosolimpicos.inm.vo.AtletaDisciplinaJuego.AtletaDisciplinaJuegoID; + +/** +* @author Isidoro Nevares Martín - IES Virgen de la Paloma +* @date 20 feb 2026 +* +*/ +public interface IAtletaDisciplinaJuego { + public AtletaDisciplinaJuego obtenerAtletaDisciplinaJuegoPorId(AtletaDisciplinaJuegoID identificador) throws JuegosOlimpicosExcepcion; + public void crearAtletaDisciplinaJuego(AtletaDisciplinaJuego atletaDisciplinaJuego) throws JuegosOlimpicosExcepcion; + +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/dao/IDisciplina.java b/src/main/java/org/coi/juegosolimpicos/inm/dao/IDisciplina.java new file mode 100644 index 0000000..b3f855d --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/dao/IDisciplina.java @@ -0,0 +1,20 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.dao; + +import java.util.List; + +import org.coi.juegosolimpicos.inm.excepcion.JuegosOlimpicosExcepcion; +import org.coi.juegosolimpicos.inm.vo.Disciplina; + +/** +* @author Isidoro Nevares Martín - IES Virgen de la Paloma +* @date 20 feb 2026 +* +*/ +public interface IDisciplina { + public Disciplina obtenerDisciplinaPorCodigo(String codigoDisciplina) throws JuegosOlimpicosExcepcion; + public List obtenerListaDisciplinas() throws JuegosOlimpicosExcepcion; + public void crearDisciplina(Disciplina disciplinaOlimpica)throws JuegosOlimpicosExcepcion; +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/dao/IJuegoOlimpico.java b/src/main/java/org/coi/juegosolimpicos/inm/dao/IJuegoOlimpico.java new file mode 100644 index 0000000..d3c6ebd --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/dao/IJuegoOlimpico.java @@ -0,0 +1,17 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.dao; + +import org.coi.juegosolimpicos.inm.excepcion.JuegosOlimpicosExcepcion; +import org.coi.juegosolimpicos.inm.vo.JuegoOlimpico; + +/** +* @author Isidoro Nevares Martín - IES Virgen de la Paloma +* @date 20 feb 2026 +* +*/ +public interface IJuegoOlimpico { + public JuegoOlimpico obtenerJuegoOlimpicoPorCodigo(String codigoJuegoOlimpico) throws JuegosOlimpicosExcepcion; + public void crearJuegoOlimpico(JuegoOlimpico juegoOlimpico) throws JuegosOlimpicosExcepcion; +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/dao/IMascota.java b/src/main/java/org/coi/juegosolimpicos/inm/dao/IMascota.java new file mode 100644 index 0000000..cc15a5c --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/dao/IMascota.java @@ -0,0 +1,17 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.dao; + +import org.coi.juegosolimpicos.inm.excepcion.JuegosOlimpicosExcepcion; +import org.coi.juegosolimpicos.inm.vo.Mascota; + +/** +* @author Isidoro Nevares Martín - IES Virgen de la Paloma +* @date 20 feb 2026 +* +*/ +public interface IMascota { + public Mascota obtenerMascotaPorId(int idMascota) throws JuegosOlimpicosExcepcion; + public void crearMascota(Mascota mascota) throws JuegosOlimpicosExcepcion; +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/AtletaDisciplinaJuegoDaoHibernate.java b/src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/AtletaDisciplinaJuegoDaoHibernate.java new file mode 100644 index 0000000..7dd447c --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/AtletaDisciplinaJuegoDaoHibernate.java @@ -0,0 +1,62 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.dao.hbnt; + +import org.coi.juegosolimpicos.inm.dao.IAtletaDisciplinaJuego; +import org.coi.juegosolimpicos.inm.excepcion.JuegosOlimpicosExcepcion; +import org.coi.juegosolimpicos.inm.gestores.GestorSesionHibernate; +import org.coi.juegosolimpicos.inm.vo.AtletaDisciplinaJuego; +import org.coi.juegosolimpicos.inm.vo.AtletaDisciplinaJuego.AtletaDisciplinaJuegoID; +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.Transaction; + +/** + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 20 feb 2026 + * + */ +public class AtletaDisciplinaJuegoDaoHibernate implements IAtletaDisciplinaJuego { + + @Override + public void crearAtletaDisciplinaJuego(AtletaDisciplinaJuego atletaDisciplinaJuego) + throws JuegosOlimpicosExcepcion { + Transaction transaccion = null; + + Session sesion = null; + try { + sesion = GestorSesionHibernate.getSession(); + transaccion = sesion.beginTransaction(); + + sesion.persist(atletaDisciplinaJuego); + + transaccion.commit(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } + throw new JuegosOlimpicosExcepcion(e, JuegosOlimpicosExcepcion.ERROR_INSERCION, getClass()); + } finally { + if (sesion != null) { + sesion.close(); + } + } + } + + @Override + public AtletaDisciplinaJuego obtenerAtletaDisciplinaJuegoPorId(AtletaDisciplinaJuegoID identificador) + throws JuegosOlimpicosExcepcion { + AtletaDisciplinaJuego atletaDJ = null; + + // try con recursos "cerrables": Session + try (Session sesion = GestorSesionHibernate.getSession();) { + atletaDJ = sesion.find(AtletaDisciplinaJuego.class, identificador); + } catch (HibernateException e) { + throw new JuegosOlimpicosExcepcion(e, JuegosOlimpicosExcepcion.ERROR_CONSULTA, getClass()); + } + + return atletaDJ; + } + +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/DisciplinaDaoHibernate.java b/src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/DisciplinaDaoHibernate.java new file mode 100644 index 0000000..44ad781 --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/DisciplinaDaoHibernate.java @@ -0,0 +1,67 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.dao.hbnt; + +import java.util.List; + +import org.coi.juegosolimpicos.inm.dao.IDisciplina; +import org.coi.juegosolimpicos.inm.excepcion.JuegosOlimpicosExcepcion; +import org.coi.juegosolimpicos.inm.gestores.GestorSesionHibernate; +import org.coi.juegosolimpicos.inm.vo.Disciplina; +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.Transaction; + +/** + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 20 feb 2026 + * + */ +public class DisciplinaDaoHibernate implements IDisciplina { + + @Override + public List obtenerListaDisciplinas() throws JuegosOlimpicosExcepcion { + List listaDisciplinasOlimpicas = null; + return listaDisciplinasOlimpicas; + } + + @Override + public void crearDisciplina(Disciplina disciplinaOlimpica) throws JuegosOlimpicosExcepcion { + Transaction transaccion = null; + + Session sesion = null; + try { + sesion = GestorSesionHibernate.getSession(); + transaccion = sesion.beginTransaction(); + + sesion.persist(disciplinaOlimpica); + + transaccion.commit(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } + throw new JuegosOlimpicosExcepcion(e, JuegosOlimpicosExcepcion.ERROR_INSERCION, getClass()); + } finally { + if (sesion != null) { + sesion.close(); + } + } + } + + @Override + public Disciplina obtenerDisciplinaPorCodigo(String codigoDisciplina) throws JuegosOlimpicosExcepcion { + Disciplina disciplina = null; + + // try con recursos "cerrables": Session + try (Session sesion = GestorSesionHibernate.getSession();) { + disciplina = sesion.find(Disciplina.class, codigoDisciplina); + } catch (HibernateException e) { + throw new JuegosOlimpicosExcepcion(e, JuegosOlimpicosExcepcion.ERROR_CONSULTA, getClass()); + } + + return disciplina; + } + +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/JuegoOlimpicoDaoHibernate.java b/src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/JuegoOlimpicoDaoHibernate.java new file mode 100644 index 0000000..e4cebde --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/JuegoOlimpicoDaoHibernate.java @@ -0,0 +1,59 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.dao.hbnt; + +import org.coi.juegosolimpicos.inm.dao.IJuegoOlimpico; +import org.coi.juegosolimpicos.inm.excepcion.JuegosOlimpicosExcepcion; +import org.coi.juegosolimpicos.inm.gestores.GestorSesionHibernate; +import org.coi.juegosolimpicos.inm.vo.JuegoOlimpico; +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.Transaction; + +/** + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 20 feb 2026 + * + */ +public class JuegoOlimpicoDaoHibernate implements IJuegoOlimpico { + + @Override + public void crearJuegoOlimpico(JuegoOlimpico juegoOlimpico) throws JuegosOlimpicosExcepcion { + Transaction transaccion = null; + + Session sesion = null; + try { + sesion = GestorSesionHibernate.getSession(); + transaccion = sesion.beginTransaction(); + + sesion.persist(juegoOlimpico); + + transaccion.commit(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } + throw new JuegosOlimpicosExcepcion(e, JuegosOlimpicosExcepcion.ERROR_INSERCION, getClass()); + } finally { + if (sesion != null) { + sesion.close(); + } + } + } + + @Override + public JuegoOlimpico obtenerJuegoOlimpicoPorCodigo(String codigoJuegoOlimpico) throws JuegosOlimpicosExcepcion { + JuegoOlimpico juegoOlimpico = null; + + // try con recursos "cerrables": Session + try (Session sesion = GestorSesionHibernate.getSession();) { + juegoOlimpico = sesion.find(JuegoOlimpico.class, codigoJuegoOlimpico); + } catch (HibernateException e) { + throw new JuegosOlimpicosExcepcion(e, JuegosOlimpicosExcepcion.ERROR_CONSULTA, getClass()); + } + + return juegoOlimpico; + } + +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/MascotaDaoHibernate.java b/src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/MascotaDaoHibernate.java new file mode 100644 index 0000000..79113ac --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/dao/hbnt/MascotaDaoHibernate.java @@ -0,0 +1,59 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.dao.hbnt; + +import org.coi.juegosolimpicos.inm.dao.IMascota; +import org.coi.juegosolimpicos.inm.excepcion.JuegosOlimpicosExcepcion; +import org.coi.juegosolimpicos.inm.gestores.GestorSesionHibernate; +import org.coi.juegosolimpicos.inm.vo.Mascota; +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.Transaction; + +/** + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 20 feb 2026 + * + */ +public class MascotaDaoHibernate implements IMascota { + + @Override + public void crearMascota(Mascota mascota) throws JuegosOlimpicosExcepcion { + Transaction transaccion = null; + + Session sesion = null; + try { + sesion = GestorSesionHibernate.getSession(); + transaccion = sesion.beginTransaction(); + + sesion.persist(mascota); + + transaccion.commit(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } + throw new JuegosOlimpicosExcepcion(e, JuegosOlimpicosExcepcion.ERROR_INSERCION, getClass()); + } finally { + if (sesion != null) { + sesion.close(); + } + } + } + + @Override + public Mascota obtenerMascotaPorId(int idMascota) throws JuegosOlimpicosExcepcion { + Mascota mascota = null; + + // try con recursos "cerrables": Session + try (Session sesion = GestorSesionHibernate.getSession();) { + mascota = sesion.find(Mascota.class, idMascota); + } catch (HibernateException e) { + throw new JuegosOlimpicosExcepcion(e, JuegosOlimpicosExcepcion.ERROR_CONSULTA, getClass()); + } + + return mascota; + } + +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/dao/jdbc/AtletaDaoJDBC.java b/src/main/java/org/coi/juegosolimpicos/inm/dao/jdbc/AtletaDaoJDBC.java new file mode 100644 index 0000000..3e0a029 --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/dao/jdbc/AtletaDaoJDBC.java @@ -0,0 +1,120 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.dao.jdbc; + +import java.sql.Connection; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.coi.juegosolimpicos.inm.dao.IAtleta; +import org.coi.juegosolimpicos.inm.excepcion.JuegosOlimpicosExcepcion; +import org.coi.juegosolimpicos.inm.gestores.GestorConexionJDBC; +import org.coi.juegosolimpicos.inm.vo.Atleta; +import org.coi.juegosolimpicos.inm.vo.Sexo; + +/** + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 20 feb 2026 + * + */ +public class AtletaDaoJDBC implements IAtleta { + + @Override + public void crearAtleta(Atleta atleta) throws JuegosOlimpicosExcepcion { + + String sentenciaSQL = """ + INSERT INTO T_ATLETA (nombre, apellidos, fecha_nacimiento, sexo) + VALUES (?, ?, ?, ?) + """; + + // try con recursos "cerrables": Connection, Statement + try (Connection conexion = GestorConexionJDBC.getConexionSGDB(); + PreparedStatement sentenciaJDBCPreparada = conexion.prepareStatement(sentenciaSQL);) { + + sentenciaJDBCPreparada.setString(1, atleta.getNombre()); + sentenciaJDBCPreparada.setString(2, atleta.getApellidos()); + sentenciaJDBCPreparada.setDate(3, Date.valueOf(atleta.getFechaNacimiento())); + sentenciaJDBCPreparada.setString(4, atleta.getSexo().name()); + System.out.println(sentenciaJDBCPreparada); + + sentenciaJDBCPreparada.executeUpdate(); + + } catch (SQLException e) { + throw new JuegosOlimpicosExcepcion(e, JuegosOlimpicosExcepcion.ERROR_INSERCION, getClass()); + } + } + + @Override + public Atleta obtenerAtletaPorNombreApellidos(String nombre, String apellidos) throws JuegosOlimpicosExcepcion { + Atleta atleta = null; + + String sentenciaSQL = """ + SELECT * FROM T_ATLETA + where nombre=? + and apellidos=? + """; + try (Connection conexion = GestorConexionJDBC.getConexionSGDB(); + PreparedStatement sentenciaJDBCPreparada = conexion.prepareStatement(sentenciaSQL);) { + sentenciaJDBCPreparada.setString(1, nombre); + sentenciaJDBCPreparada.setString(2, apellidos); + System.out.println(sentenciaJDBCPreparada); + + ResultSet resultadoSentencia = null; + resultadoSentencia = sentenciaJDBCPreparada.executeQuery(); + + // Asumo que sólo se espera un resultado, por lo que no es necesario un bucle while + if (resultadoSentencia.next()) { + atleta = getAtletaFromResultSet(resultadoSentencia); + } + + } catch (Exception e) { + throw new JuegosOlimpicosExcepcion(e, JuegosOlimpicosExcepcion.ERROR_CONSULTA, getClass()); + } + + return atleta; + } + + @Override + public Atleta obtenerAtletaPorID(int idAtleta) throws JuegosOlimpicosExcepcion { + Atleta atleta = null; + + String sentenciaSQL = """ + SELECT * FROM T_ATLETA + where identificador=? + """; + try (Connection conexion = GestorConexionJDBC.getConexionSGDB(); + PreparedStatement sentenciaJDBCPreparada = conexion.prepareStatement(sentenciaSQL);) { + sentenciaJDBCPreparada.setInt(1, idAtleta); + System.out.println(sentenciaJDBCPreparada); + + ResultSet resultadoSentencia = null; + resultadoSentencia = sentenciaJDBCPreparada.executeQuery(); + + if (resultadoSentencia.next()) { + atleta = getAtletaFromResultSet(resultadoSentencia); + } + + } catch (Exception e) { + throw new JuegosOlimpicosExcepcion(e, JuegosOlimpicosExcepcion.ERROR_CONSULTA, getClass()); + } + + return atleta; + } + + private Atleta getAtletaFromResultSet(ResultSet resultadoSentencia) throws SQLException { + Atleta atleta = new Atleta(); + + atleta.setIdentificador(resultadoSentencia.getInt("identificador")); + atleta.setNombre(resultadoSentencia.getString("nombre")); + atleta.setApellidos(resultadoSentencia.getString("apellidos")); + atleta.setFechaNacimiento(resultadoSentencia.getDate("fecha_nacimiento").toLocalDate()); + String sexo = resultadoSentencia.getString("sexo"); + atleta.setSexo(Sexo.valueOf(sexo)); + + return atleta; + } + +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/dao/mngbd/DisciplinaDaoMongoDB.java b/src/main/java/org/coi/juegosolimpicos/inm/dao/mngbd/DisciplinaDaoMongoDB.java new file mode 100644 index 0000000..8e8f379 --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/dao/mngbd/DisciplinaDaoMongoDB.java @@ -0,0 +1,72 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.dao.mngbd; + +import java.util.ArrayList; +import java.util.List; + +import org.bson.Document; +import org.coi.juegosolimpicos.inm.dao.IDisciplina; +import org.coi.juegosolimpicos.inm.excepcion.JuegosOlimpicosExcepcion; +import org.coi.juegosolimpicos.inm.gestores.GestorConexionMongoDB; +import org.coi.juegosolimpicos.inm.vo.Disciplina; + +import com.mongodb.client.FindIterable; +import com.mongodb.client.MongoCollection; + +/** +* @author Isidoro Nevares Martín - IES Virgen de la Paloma +* @date 20 feb 2026 +* +*/ +public class DisciplinaDaoMongoDB implements IDisciplina { + public final static String COLLECCION_DISCIPLINA="C_DISCIPLINA"; + private final static String VALOR_SI="Sí"; + + @Override + public List obtenerListaDisciplinas() throws JuegosOlimpicosExcepcion { + final List listaDisciplinasOlimpicas=new ArrayList(); + MongoCollection coleccionMongoDB = null; + try{ + coleccionMongoDB= GestorConexionMongoDB.getMongoDatabase().getCollection(COLLECCION_DISCIPLINA); + + FindIterable documentosIterables= coleccionMongoDB.find(); + if(documentosIterables!=null) { + // Usando expresión Lambda + documentosIterables.forEach(documentoDisciplina -> listaDisciplinasOlimpicas.add(getDisciplinaFromDocumento(documentoDisciplina))); + } + }catch (Exception exc) { + throw new JuegosOlimpicosExcepcion(exc, JuegosOlimpicosExcepcion.ERROR_CONSULTA, DisciplinaDaoMongoDB.class); + } + return listaDisciplinasOlimpicas; + } + @Override + public void crearDisciplina(Disciplina disciplinaOlimpica) throws JuegosOlimpicosExcepcion { + // TODO Auto-generated method stub + + } + private Disciplina getDisciplinaFromDocumento(Document docDisciplina) { + Disciplina disciplina=null; + if(docDisciplina!=null) { + String codigo= docDisciplina.getString("codigo"); + String descripcion= docDisciplina.getString("descripcion"); + String es_individual= docDisciplina.getString("es_individual"); + + disciplina=new Disciplina(); + disciplina.setCodigo(codigo); + disciplina.setNombre(descripcion); + disciplina.setDisciplinaIndividual(false); + if (es_individual.equals(VALOR_SI)) { + disciplina.setDisciplinaIndividual(true); + } + } + return disciplina; + } + @Override + public Disciplina obtenerDisciplinaPorCodigo(String codigoDisciplina) throws JuegosOlimpicosExcepcion { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/excepcion/JuegosOlimpicosExcepcion.java b/src/main/java/org/coi/juegosolimpicos/inm/excepcion/JuegosOlimpicosExcepcion.java new file mode 100644 index 0000000..b4687ac --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/excepcion/JuegosOlimpicosExcepcion.java @@ -0,0 +1,40 @@ +package org.coi.juegosolimpicos.inm.excepcion; + +public class JuegosOlimpicosExcepcion extends Exception { + + private static final long serialVersionUID = 1L; + + public static final int ERROR_GENERAL = 0; + public static final int ERROR_GESTION_CONEXION = 1; + public static final int ERROR_CONSULTA = 2; + public static final int ERROR_INSERCION = 3; + public static final int ERROR_ACTUALIZACION = 4; + public static final int ERROR_BORRADO = 5; + + private int codigoError; + private Class claseOrigen; + + @SuppressWarnings("rawtypes") + public JuegosOlimpicosExcepcion(Exception excepcion, int tipoError, Class claseOrigenError) { + super(excepcion); + this.codigoError = tipoError; + this.claseOrigen = claseOrigenError; + } + + public int getCodigoError() { + return codigoError; + } + + public void setCodigoError(int codigoError) { + this.codigoError = codigoError; + } + + public Class getClaseOrigen() { + return claseOrigen; + } + + public void setClaseOrigen(Class claseOrigen) { + this.claseOrigen = claseOrigen; + } + +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorConexionJDBC.java b/src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorConexionJDBC.java new file mode 100644 index 0000000..dc24b5b --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorConexionJDBC.java @@ -0,0 +1,35 @@ +package org.coi.juegosolimpicos.inm.gestores; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +import org.coi.juegosolimpicos.inm.excepcion.JuegosOlimpicosExcepcion; + +public class GestorConexionJDBC { + + // Evita que pueda construirse un objeto de la clase. + private GestorConexionJDBC() {} + + public static Connection getConexionSGDB() throws JuegosOlimpicosExcepcion{ + Connection conexionSGDB = null; + + // Datos URL + String urlBBDD =GestorFicheroConfiguracion.obtenerValor("jdbc.url"); + + String usuario = GestorFicheroConfiguracion.obtenerValor("jdbc.usuario"); + String contrasenya =GestorFicheroConfiguracion.obtenerValor("jdbc.password"); + + try { + String claseDriver= GestorFicheroConfiguracion.obtenerValor("jdbc.driver"); + Class.forName(claseDriver); + + conexionSGDB = DriverManager.getConnection(urlBBDD, usuario, contrasenya); + } catch (SQLException | ClassNotFoundException e) { + throw new JuegosOlimpicosExcepcion(e, JuegosOlimpicosExcepcion.ERROR_GESTION_CONEXION, GestorConexionJDBC.class); + } + + return conexionSGDB; + } + +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorConexionMongoDB.java b/src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorConexionMongoDB.java new file mode 100644 index 0000000..90542bf --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorConexionMongoDB.java @@ -0,0 +1,39 @@ +package org.coi.juegosolimpicos.inm.gestores; + +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; +import com.mongodb.client.MongoDatabase; + +/** + * + * GestorConexionMongoDB: Clase que realiza la gestión de Conexiones a MongoDB. + * + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 30 enero 2026 + * + * + */ + +public class GestorConexionMongoDB { + private static MongoDatabase mongoDBDatabase= null; + + private GestorConexionMongoDB() { // Constructor privado para evitar instanciación + } + + // Carga la configuración desde META-INF/persistence.xml + static { + // Cadena de conexion con la base de datos MongoDB + String uri = GestorFicheroConfiguracion.obtenerValor("mongodb.url"); + // Se abre la conexión con MongoDB + MongoClient clienteMongo = MongoClients.create(uri); + + // Obtener una base de datos MongoDB desde Java + String bbddMongoDB= GestorFicheroConfiguracion.obtenerValor("mongodb.bbdd"); + mongoDBDatabase = clienteMongo.getDatabase(bbddMongoDB); + } + + public static MongoDatabase getMongoDatabase() { + return mongoDBDatabase; + } + +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorFicheroConfiguracion.java b/src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorFicheroConfiguracion.java new file mode 100644 index 0000000..3c20e93 --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorFicheroConfiguracion.java @@ -0,0 +1,40 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.gestores; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +/** +* @author Isidoro Nevares Martín - IES Virgen de la Paloma +* @date 20 feb 2026 +* +*/ +public class GestorFicheroConfiguracion { + private static final Properties PROPIEDADES = new Properties(); + + static { + try (InputStream is = GestorFicheroConfiguracion.class.getClassLoader() + .getResourceAsStream("config.properties")) { + if (is != null) { + PROPIEDADES.load(is); + } else { + throw new IllegalStateException("No se encontró application.properties en el classpath"); + } + } catch (IOException e) { + throw new IllegalStateException("Error al cargar application.properties", e); + } + } + + /** + * 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) { + return PROPIEDADES.getProperty(clave); + } +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorSesionHibernate.java b/src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorSesionHibernate.java new file mode 100644 index 0000000..46f88b1 --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/gestores/GestorSesionHibernate.java @@ -0,0 +1,45 @@ +package org.coi.juegosolimpicos.inm.gestores; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.cfg.Configuration; + +/** + * + * GestorSesionesHibernate: Clase que gestiona las sesiones de Hibernate + * + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 20 feb 2026 + * + */ + +public class GestorSesionHibernate { + private static SessionFactory sessionFactory = null; + + private GestorSesionHibernate() {// Constructor privado para evitar instanciación + } + + // Carga la configuración desde hibernate.cfg.xml + static { + try { + sessionFactory = new Configuration().configure().buildSessionFactory(); + } catch (Throwable ex) { + System.err.println("Error en SessionFactory: " + ex); + throw new ExceptionInInitializerError(ex); + } + } + + public static Session getSession() { + return sessionFactory.openSession(); + } + + public static Session getCurrentSession() { + return sessionFactory.getCurrentSession(); + } + + public static void cerrarFactoria() { + if (sessionFactory != null) { + sessionFactory.close(); + } + } +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/vo/Atleta.java b/src/main/java/org/coi/juegosolimpicos/inm/vo/Atleta.java new file mode 100644 index 0000000..de502d4 --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/vo/Atleta.java @@ -0,0 +1,47 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.vo; + +import java.io.Serializable; +import java.time.LocalDate; + +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; + +/** +* @author Isidoro Nevares Martín - IES Virgen de la Paloma +* @date 20 feb 2026 +* +*/ +@Data +@Entity +@Table(name = "T_ATLETA") +public class Atleta implements Serializable{ + private static final long serialVersionUID = 840837584782300608L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "identificador") + private int identificador; + + @Column(name = "nombre") + private String nombre; + + @Column(name = "apellidos") + private String apellidos; + + @Column(name = "fecha_nacimiento") + private LocalDate fechaNacimiento; + + @Enumerated(EnumType.STRING) + @Column(name = "sexo", length = 1) + private Sexo sexo; +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/vo/AtletaDisciplinaJuego.java b/src/main/java/org/coi/juegosolimpicos/inm/vo/AtletaDisciplinaJuego.java new file mode 100644 index 0000000..ea3affa --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/vo/AtletaDisciplinaJuego.java @@ -0,0 +1,93 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.vo; + +import java.io.Serializable; +import java.util.Objects; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import jakarta.persistence.EmbeddedId; +import jakarta.persistence.Entity; +import jakarta.persistence.ForeignKey; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Data; + +/** +* @author Isidoro Nevares Martín - IES Virgen de la Paloma +* @date 20 feb 2026 +* +*/ +@Data +@Entity +@Table(name="T_ATLETA_DISCIPLINA_JUEGO") +public class AtletaDisciplinaJuego implements Serializable { + private static final long serialVersionUID = -6178979684877622477L; + @EmbeddedId + private AtletaDisciplinaJuegoID idAtletaDisciplinaJuego; + + @ManyToOne + @JoinColumn(name="cod_juego", insertable = false, updatable = false, + foreignKey = @ForeignKey(name = "FK_ATLETADISCIPLINAJUEGO_JUEGO")) + private JuegoOlimpico juego; + + @ManyToOne + @JoinColumn(name="cod_disciplina", insertable = false, updatable = false, + foreignKey = @ForeignKey(name = "FK_ATLETADISCIPLINAJUEGO_DISCIPLINA")) + private Disciplina disciplina; + + @ManyToOne + @JoinColumn(name="id_atleta", insertable = false, updatable = false, + foreignKey = @ForeignKey(name = "FK_ATLETADISCIPLINAJUEGO_ATLETA")) + private Atleta atleta; + + @Column(name = "puesto_competicion") + private int puestoCompeticion; + + /* getters y setters */ + @Embeddable + public static class AtletaDisciplinaJuegoID implements Serializable { + private static final long serialVersionUID = 1618574830712573193L; + + @Column(name = "cod_juego") + private String codigoJuego; + + @Column(name = "cod_disciplina") + private String codigoDisciplina; + + @Column(name = "id_atleta") + private int idAtleta; + + public AtletaDisciplinaJuegoID() { + + } + + public AtletaDisciplinaJuegoID(int idAtleta, String codDisciplina, String codJuego) { + this.codigoJuego=codJuego; + this.codigoDisciplina=codDisciplina; + this.idAtleta=idAtleta; + } + + @Override + public int hashCode() { + return Objects.hash(codigoDisciplina, codigoJuego, idAtleta); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + AtletaDisciplinaJuegoID other = (AtletaDisciplinaJuegoID) obj; + return Objects.equals(codigoDisciplina, other.codigoDisciplina) + && Objects.equals(codigoJuego, other.codigoJuego) && idAtleta == other.idAtleta; + } + + } +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/vo/Disciplina.java b/src/main/java/org/coi/juegosolimpicos/inm/vo/Disciplina.java new file mode 100644 index 0000000..dc90283 --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/vo/Disciplina.java @@ -0,0 +1,34 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.vo; + +import java.io.Serializable; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Data; + +/** +* @author Isidoro Nevares Martín - IES Virgen de la Paloma +* @date 20 feb 2026 +* +*/ +@Data +@Entity +@Table(name = "T_DISCIPLINA") +public class Disciplina implements Serializable { + private static final long serialVersionUID = -1495481881810609339L; + + @Id + @Column(name = "codigo") + private String codigo; + + @Column(name = "nombre_disciplina") + private String nombre; + + @Column(name = "disciplina_individual") + private boolean disciplinaIndividual; +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/vo/JuegoOlimpico.java b/src/main/java/org/coi/juegosolimpicos/inm/vo/JuegoOlimpico.java new file mode 100644 index 0000000..09dca47 --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/vo/JuegoOlimpico.java @@ -0,0 +1,50 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.vo; + +import java.io.Serializable; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.ForeignKey; +import jakarta.persistence.Id; +import jakarta.persistence.Index; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; +import lombok.Data; + +/** + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 20 feb 2026 +* +*/ +@Data +@Entity +@Table(name = "T_JUEGO_OLIMPICO", + indexes = @Index(name="INDICE_MASCOTA", columnList="id_mascota", unique = true)) + +public class JuegoOlimpico implements Serializable{ + private static final long serialVersionUID = -2198660627534301810L; + @Id + @Column(name="codigo", length = 6) + private String codigo; + + @Column(name="anio") + private int anio; + + @Column(name="ciudad", length = 50) + private String ciudad; + + @Column(name="pais", length = 50) + private String pais; + + @Column(name="juego_verano") + private boolean esJuegoVerano; + + @OneToOne + @JoinColumn(name="id_mascota",referencedColumnName="identificador", nullable = false, updatable=false, + foreignKey = @ForeignKey(name = "FK_MASCOTA")) + private Mascota mascotaJuego; +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/vo/Mascota.java b/src/main/java/org/coi/juegosolimpicos/inm/vo/Mascota.java new file mode 100644 index 0000000..dc24971 --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/vo/Mascota.java @@ -0,0 +1,40 @@ +/** + * + */ +package org.coi.juegosolimpicos.inm.vo; + +import java.io.Serializable; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Data; + +/** +* @author Isidoro Nevares Martín - IES Virgen de la Paloma +* @date 20 feb 2026 +* +*/ +@Data +@Entity +@Table(name = "T_MASCOTA") +public class Mascota implements Serializable{ + private static final long serialVersionUID = -4937684627247126196L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "identificador") + private int identificador; + + @Column(name = "nombre_mascota", length = 50) + private String nombre; + @Column(name = "url_mascota", length = 150) + private String urlImagen; + + @Column(name = "imagen_mascota", columnDefinition="LONGBLOB") + private byte[] imagen; + +} diff --git a/src/main/java/org/coi/juegosolimpicos/inm/vo/Sexo.java b/src/main/java/org/coi/juegosolimpicos/inm/vo/Sexo.java new file mode 100644 index 0000000..17bb99e --- /dev/null +++ b/src/main/java/org/coi/juegosolimpicos/inm/vo/Sexo.java @@ -0,0 +1,15 @@ +package org.coi.juegosolimpicos.inm.vo; + +/** + * + * Sexo: Enumeración con los valores posibles para el sexo de un atleta (H, M) + * + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 20 feb 2026 + * + * + */ + +public enum Sexo { + H, M; +} diff --git a/src/main/resources/config.properties b/src/main/resources/config.properties new file mode 100644 index 0000000..cf82d79 --- /dev/null +++ b/src/main/resources/config.properties @@ -0,0 +1,9 @@ +# Parámetros de conexión a la base de datos MapaMundi en SGDB MySQL +jdbc.driver = com.mysql.cj.jdbc.Driver +jdbc.url = jdbc:mysql://192.168.1.36:3306/juegos_olimpicos_inm +jdbc.usuario = root +jdbc.password = mysql_123 + +# Parámetros para la conexión con la base de datos de MongoDB +mongodb.url=mongodb://admin:mongodb_123@192.168.1.36:27017 +mongodb.bbdd=juegos_olimpicos_inm \ No newline at end of file diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml new file mode 100644 index 0000000..8222be9 --- /dev/null +++ b/src/main/resources/hibernate.cfg.xml @@ -0,0 +1,30 @@ + + + + + + + + com.mysql.cj.jdbc.Driver + jdbc:mysql://192.168.1.36:3306/juegos_olimpicos_inm + root + mysql_123 + + + create-drop + true + true + + + thread + + + + + + + + + + \ No newline at end of file