Commit inicial

This commit is contained in:
Isidoro Nevares 2026-02-05 21:25:22 +01:00
commit 21e005e3a2
26 changed files with 1112 additions and 0 deletions

41
.classpath Normal file
View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="test" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
/bin/
*.class
/target/

23
.project Normal file
View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>aadd_act5_3</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8

View File

@ -0,0 +1,8 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8

View File

@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

30
pom.xml Normal file
View File

@ -0,0 +1,30 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.lapaloma.aadd</groupId>
<artifactId>aadd_act3_3</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- Source: https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.8</version>
<scope>compile</scope>
</dependency>
<!-- Hibernate Core -->
<dependency>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-core</artifactId>
<version>7.1.11.Final</version>
</dependency>
<!-- Source: https://mvnrepository.com/artifact/org.mongodb/mongodb-driver-sync -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>5.6.2</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,43 @@
package org.lapaloma.aadd.redmetro;
import java.util.List;
import org.lapaloma.aadd.redmetro.dao.ILineaDAO;
import org.lapaloma.aadd.redmetro.dao.jpa.LineaDaoJPA;
import org.lapaloma.aadd.redmetro.dao.mgdb.LineaDaoMongoDB;
import org.lapaloma.aadd.redmetro.vo.Linea;
/**
* Clase principal que inicia la sesión de Hibernate. Al iniciar la sesión,
* Hibernate ejecutará hbm2ddl.auto=create y recreará la base de datos según las
* entidades definidas.
*/
public class AppRedMetro {
public static void main(String[] args) {
AppRedMetro app = new AppRedMetro();
// Obtiene la Session de forma estática
// GestorEntityManagerJPA.getEntityManager();
app.migrarMongoDBAPostgreSQL();
}
private void migrarMongoDBAPostgreSQL() {
ILineaDAO lineaDAO = new LineaDaoMongoDB();
List<Linea> listaLineas = lineaDAO.obtenerListaLineas();
if (listaLineas != null) {
lineaDAO = new LineaDaoJPA();
for (Linea linea : listaLineas) {
// Se comprueba si existe la línea en PostgreSQL
Linea lineaBBDD = lineaDAO.obtenerLineaPorID(linea.getCodigo());
// Si no existe la línea en PostgreSQL se inserta, caso contrario se actualiza.
if (lineaBBDD == null) {
lineaDAO.crearLinea(linea);
} else {
lineaDAO.actualizarLinea(linea);
}
}
}
}
}

View File

@ -0,0 +1,11 @@
package org.lapaloma.aadd.redmetro.dao;
import org.lapaloma.aadd.redmetro.vo.Color;
public interface IColorDAO {
Color obtenerColorPorID(int identificador);
void crearColor(Color color);
void actualizarColor(Color color);
}

View File

@ -0,0 +1,16 @@
package org.lapaloma.aadd.redmetro.dao;
import java.util.List;
import org.lapaloma.aadd.redmetro.vo.Linea;
public interface ILineaDAO {
Linea obtenerLineaPorID(int identificador);
List<Linea> obtenerListaLineas();
void crearLinea(Linea linea);
void actualizarLinea(Linea linea);
}

View File

@ -0,0 +1,75 @@
package org.lapaloma.aadd.redmetro.dao.jpa;
import org.lapaloma.aadd.redmetro.dao.IColorDAO;
import org.lapaloma.aadd.redmetro.gestores.GestorEntityManagerJPA;
import org.lapaloma.aadd.redmetro.vo.Color;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityTransaction;
public class ColorDaoJPA implements IColorDAO {
@Override
public Color obtenerColorPorID(int codigo) {
Color color = null;
// try con recursos "cerrables": Session
try (EntityManager gestorEntidades = GestorEntityManagerJPA.getEntityManager()) {
color = gestorEntidades.find(Color.class, codigo);
} catch (Exception e) {
e.printStackTrace();
}
return color;
}
@Override
public void crearColor(Color color) {
EntityManager gestorEntidades = null;
EntityTransaction transaccion = null;
try {
gestorEntidades = GestorEntityManagerJPA.getEntityManager();
transaccion = gestorEntidades.getTransaction();
transaccion.begin();
gestorEntidades.persist(color);
transaccion.commit();
} catch (Exception e) {
if (transaccion != null && transaccion.isActive()) {
transaccion.rollback();
}
e.printStackTrace();
} finally {
if (gestorEntidades != null) {
gestorEntidades.close();
}
}
}
@Override
public void actualizarColor(Color color) {
EntityManager gestorEntidades = null;
EntityTransaction transaccion = null;
try {
gestorEntidades = GestorEntityManagerJPA.getEntityManager();
transaccion = gestorEntidades.getTransaction();
transaccion.begin();
if (!gestorEntidades.contains(color))
gestorEntidades.merge(color);
transaccion.commit();
} catch (Exception e) {
if (transaccion != null && transaccion.isActive()) {
transaccion.rollback();
}
e.printStackTrace();
} finally {
if (gestorEntidades != null) {
gestorEntidades.close();
}
}
}
}

View File

@ -0,0 +1,83 @@
package org.lapaloma.aadd.redmetro.dao.jpa;
import java.util.List;
import org.lapaloma.aadd.redmetro.dao.ILineaDAO;
import org.lapaloma.aadd.redmetro.gestores.GestorEntityManagerJPA;
import org.lapaloma.aadd.redmetro.vo.Linea;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityTransaction;
public class LineaDaoJPA implements ILineaDAO {
@Override
public Linea obtenerLineaPorID(int codigo) {
Linea linea = null;
// try con recursos "cerrables": Session
try (EntityManager gestorEntidades = GestorEntityManagerJPA.getEntityManager()) {
linea = gestorEntidades.find(Linea.class, codigo);
} catch (Exception e) {
e.printStackTrace();
}
return linea;
}
@Override
public void crearLinea(Linea linea) {
EntityManager gestorEntidades = null;
EntityTransaction transaccion = null;
try {
gestorEntidades = GestorEntityManagerJPA.getEntityManager();
transaccion = gestorEntidades.getTransaction();
transaccion.begin();
gestorEntidades.persist(linea);
transaccion.commit();
} catch (Exception e) {
if (transaccion != null && transaccion.isActive()) {
transaccion.rollback();
}
e.printStackTrace();
} finally {
if (gestorEntidades != null) {
gestorEntidades.close();
}
}
}
@Override
public void actualizarLinea(Linea linea) {
EntityManager gestorEntidades = null;
EntityTransaction transaccion = null;
try {
gestorEntidades = GestorEntityManagerJPA.getEntityManager();
transaccion = gestorEntidades.getTransaction();
transaccion.begin();
if (!gestorEntidades.contains(linea))
gestorEntidades.merge(linea);
transaccion.commit();
} catch (Exception e) {
if (transaccion != null && transaccion.isActive()) {
transaccion.rollback();
}
e.printStackTrace();
} finally {
if (gestorEntidades != null) {
gestorEntidades.close();
}
}
}
@Override
public List<Linea> obtenerListaLineas() {
// TODO Auto-generated method stub
return null;
}
}

View File

@ -0,0 +1,86 @@
package org.lapaloma.aadd.redmetro.dao.mgdb;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import org.lapaloma.aadd.redmetro.dao.ILineaDAO;
import org.lapaloma.aadd.redmetro.gestores.GestorConexionMongoDB;
import org.lapaloma.aadd.redmetro.vo.Color;
import org.lapaloma.aadd.redmetro.vo.Linea;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import es.palomafp.aadd.inm.vo.Pais;
/**
*
* ContinenteDaoMongoDB: Implentación MongoDB de las operaciones de
* IContinenteDAO.
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 30 enero 2026
*/
public class LineaDaoMongoDB implements ILineaDAO {
private final static String COLECCION_PAIS = "C_LINEA";
@Override
public Linea obtenerLineaPorID(int identificador) {
Linea linea = null;
return linea;
}
@Override
public List<Linea> obtenerListaLineas() {
List<Linea> listaLineas = null;
// Obtener colección MongoDB
MongoCollection<Document> coleccionMDb = GestorConexionMongoDB.getMongoDatabase().getCollection(COLECCION_PAIS);
FindIterable<Document> documentosEncontrados = null;
documentosEncontrados = documentosEncontrados = coleccionMDb.find();
if (documentosEncontrados != null) {
listaLineas = new ArrayList<Linea>();
for (Document documentoEncontrado : documentosEncontrados) {
Linea linea = getLineaFromDocumentoLinea(documentoEncontrado);
listaLineas.add(linea);
}
}
return listaLineas;
}
@Override
public void crearLinea(Linea linea) {
}
@Override
public void actualizarLinea(Linea linea) {
}
private Linea getLineaFromDocumentoLinea(Document documentoLinea) {
Linea linea = null;
/*
* int idMongoDB = documentoPais.getInteger("_id"); int identificador =
* documentoPais.getInteger("identificador"); String nombrePais =
* documentoPais.getString("nombre"); String capital =
* documentoPais.getString("capital");
*
* Document documentoColor= (Document) documentoPais.get("continente"); String
* codigoContinente = documentoContinente.getString("codigo"); String
* nombreContinente = documentoContinente.getString("nombre");
*
* Color color = new Color(); color.setCodigo(codigoContinente);
* color.setNombreContinente(nombreContinente);
*
* linea = new Linea(); linea.setIdentificador(identificador);
* linea.setNombrePais(nombrePais); linea.setCapital(capital);
* linea.setColor(color);
*/
return linea;
}
}

View File

@ -0,0 +1,39 @@
package org.lapaloma.aadd.redmetro.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("url.conexion.mongodb");
// Se abre la conexión con MongoDB
MongoClient clienteMongo = MongoClients.create(uri);
// Obtener una base de datos MongoDB desde Java
String bbddMongoDB= GestorFicheroConfiguracion.obtenerValor("bbdd.mongodb");
mongoDBDatabase = clienteMongo.getDatabase(bbddMongoDB);
}
public static MongoDatabase getMongoDatabase() {
return mongoDBDatabase;
}
}

View File

@ -0,0 +1,41 @@
package org.lapaloma.aadd.redmetro.gestores;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
/**
*
* GestorEntityManagerJPA: Clase que realiza la gestión de EntityManagers de JPA.
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 4 dic 2025
*
*
*/
public class GestorEntityManagerJPA {
private static EntityManagerFactory entityManagerFactory = null;
private GestorEntityManagerJPA() { // Constructor privado para evitar instanciación
}
// Carga la configuración desde META-INF/persistence.xml
static {
try {
entityManagerFactory = Persistence.createEntityManagerFactory("UP_PROYECTOSIES_ODB");
} catch (Throwable ex) {
System.err.println("Error en EntityManagerFactory: " + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static EntityManager getEntityManager() {
return entityManagerFactory.createEntityManager();
}
public static void closeEntityManagerFactory() {
entityManagerFactory.close();
}
}

View File

@ -0,0 +1,39 @@
/**
* GestorFicheroConfiguracion: clase utilitaria para leer propiedades del archivo application.properties.
* Provee un método estático que devuelve el valor asociado a una clave.
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 25 nov 2025
*/
package org.lapaloma.aadd.redmetro.gestores;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class GestorFicheroConfiguracion {
private static final Properties PROPIEDADES = new Properties();
static {
try (InputStream is = GestorFicheroConfiguracion.class.getClassLoader()
.getResourceAsStream("conf.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);
}
}

View File

@ -0,0 +1,63 @@
package org.lapaloma.aadd.redmetro.vo;
import jakarta.persistence.*;
/**
* Entidad que representa la tabla T_ACCESO.
*/
@Entity
@Table(name = "T_ACCESO")
public class Acceso {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cod_acceso")
private int codigo;
@Column(name = "nombre", nullable = false, length = 100)
private String nombre;
@Column(name = "acceso_discapacidad", columnDefinition = "int", nullable = false)
private boolean accesoDiscapacidad;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cod_estacion", nullable = false)
private Estacion estacion;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public boolean isAccesoDiscapacidad() {
return accesoDiscapacidad;
}
public void setAccesoDiscapacidad(boolean accesoDiscapacidad) {
this.accesoDiscapacidad = accesoDiscapacidad;
}
public Estacion getEstacion() {
return estacion;
}
public void setEstacion(Estacion estacion) {
this.estacion = estacion;
}
@Override
public String toString() {
return "Acceso [codigo=" + codigo + ", nombre=" + nombre + ", accesoDiscapacidad=" + accesoDiscapacidad
+ ", estacion=" + estacion + "]\n";
}
}

View File

@ -0,0 +1,65 @@
package org.lapaloma.aadd.redmetro.vo;
import jakarta.persistence.*;
/**
* Entidad que representa la tabla T_COCHERA.
*/
@Entity
@Table(name = "T_COCHERA")
public class Cochera {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cod_cochera")
private int codigo;
@Column(name = "nombre", nullable = false, length = 255)
private String nombre;
@Column(name = "direccion", nullable = false, length = 255)
private String direccion;
@Column(name = "deposito", columnDefinition = "int")
private boolean deposito; // 1 o 0
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public boolean isDeposito() {
return deposito;
}
public void setDeposito(boolean deposito) {
this.deposito = deposito;
}
@Override
public String toString() {
return "Cochera [codigo=" + codigo + ", nombre=" + nombre + ", direccion=" + direccion + ", deposito="
+ deposito + "]\n";
}
}

View File

@ -0,0 +1,51 @@
package org.lapaloma.aadd.redmetro.vo;
import jakarta.persistence.*;
/**
* Entidad que representa la tabla T_COLOR.
*/
@Entity
@Table(name = "T_COLOR")
public class Color {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cod_color")
private int codigo;
@Column(name = "nombre", nullable = false, length = 100)
private String nombre;
@Column(name = "cod_hexadecimal", nullable = false, length = 7)
private String codHexadecimal;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getCodHexadecimal() {
return codHexadecimal;
}
public void setCodHexadecimal(String codHexadecimal) {
this.codHexadecimal = codHexadecimal;
}
@Override
public String toString() {
return "Color [codigo=" + codigo + ", nombre=" + nombre + ", codHexadecimal=" + codHexadecimal + "]\n";
}
}

View File

@ -0,0 +1,51 @@
package org.lapaloma.aadd.redmetro.vo;
import jakarta.persistence.*;
/**
* Entidad que representa la tabla T_ESTACION.
*/
@Entity
@Table(name = "T_ESTACION")
public class Estacion {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cod_estacion")
private int codigo;
@Column(name = "nombre", nullable = false, length = 100)
private String nombre;
@Column(name = "direccion", nullable = false, length = 255)
private String direccion;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
@Override
public String toString() {
return "Estacion [codigo=" + codigo + ", nombre=" + nombre + ", direccion=" + direccion + "]\n";
}
}

View File

@ -0,0 +1,89 @@
package org.lapaloma.aadd.redmetro.vo;
import java.math.BigDecimal;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
/**
* Entidad que representa la tabla T_LINEA.
* Relación OneToOne con T_COLOR (código único).
*/
@Entity
@Table(name = "T_LINEA")
public class Linea {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cod_linea")
private int codigo;
@Column(name = "nombre_corto", nullable = false, length = 50)
private String nombreCorto;
@Column(name = "nombre_largo", nullable = false, length = 100)
private String nombreLargo;
// Relación OneToOne con T_COLOR (clave única)
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cod_color", nullable = false, unique = true)
private Color color;
@Column(name = "kilometros", nullable = false, precision = 5, scale = 2)
private BigDecimal kilometros;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNombreCorto() {
return nombreCorto;
}
public void setNombreCorto(String nombreCorto) {
this.nombreCorto = nombreCorto;
}
public String getNombreLargo() {
return nombreLargo;
}
public void setNombreLargo(String nombreLargo) {
this.nombreLargo = nombreLargo;
}
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
}
public BigDecimal getKilometros() {
return kilometros;
}
public void setKilometros(BigDecimal kilometros) {
this.kilometros = kilometros;
}
@Override
public String toString() {
return "Linea [codigo=" + codigo + ", nombreCorto=" + nombreCorto + ", nombreLargo=" + nombreLargo + ", color="
+ color + ", kilometros=" + kilometros + "]\n";
}
}

View File

@ -0,0 +1,76 @@
package org.lapaloma.aadd.redmetro.vo;
import jakarta.persistence.*;
/**
* Entidad que representa la tabla T_LINEA_ESTACION. Usa una clave primaria
* compuesta mediante @EmbeddedId.
*/
@Entity
@Table(name = "T_LINEA_ESTACION")
public class LineaEstacion {
@EmbeddedId
private LineaEstacionId id;
@Column(name = "orden", nullable = false)
private int orden;
// Relaciones a T_LINEA y T_ESTACION mediante los campos de la clave compuesta
@MapsId("codigoLinea")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cod_linea", nullable = false)
private Linea linea;
@MapsId("codigoEstacion")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cod_estacion", nullable = false)
private Estacion estacion;
public LineaEstacion() {
}
public LineaEstacion(Linea linea, Estacion estacion, Integer orden) {
this.linea = linea;
this.estacion = estacion;
this.orden = orden;
this.id = new LineaEstacionId(linea.getCodigo(), estacion.getCodigo());
}
public LineaEstacionId getId() {
return id;
}
public void setId(LineaEstacionId id) {
this.id = id;
}
public int getOrden() {
return orden;
}
public void setOrden(int orden) {
this.orden = orden;
}
public Linea getLinea() {
return linea;
}
public void setLinea(Linea linea) {
this.linea = linea;
}
public Estacion getEstacion() {
return estacion;
}
public void setEstacion(Estacion estacion) {
this.estacion = estacion;
}
@Override
public String toString() {
return "LineaEstacion [id=" + id + ", orden=" + orden + ", linea=" + linea + ", estacion=" + estacion + "]\n";
}
}

View File

@ -0,0 +1,41 @@
package org.lapaloma.aadd.redmetro.vo;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.Objects;
/**
* Clase embebible que representa la clave primaria compuesta de
* T_LINEA_ESTACION.
*/
@Embeddable
public class LineaEstacionId implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "cod_linea")
private Integer codigoLinea;
@Column(name = "cod_estacion")
private Integer codigoEstacion;
public LineaEstacionId() {
}
public LineaEstacionId(Integer codLinea, Integer codEstacion) {
this.codigoLinea = codLinea;
this.codigoEstacion = codEstacion;
}
@Override
public boolean equals(Object o) {
LineaEstacionId claveObjetoNuevo = (LineaEstacionId) o;
return Objects.equals(codigoLinea, claveObjetoNuevo.codigoLinea) && Objects.equals(codigoEstacion, claveObjetoNuevo.codigoEstacion);
}
@Override
public int hashCode() {
return Objects.hash(codigoLinea, codigoEstacion);
}
}

View File

@ -0,0 +1,97 @@
package org.lapaloma.aadd.redmetro.vo;
import java.time.LocalDate;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
/**
* Entidad que representa la tabla T_TREN.
*/
@Entity
@Table(name = "T_TREN")
public class Tren {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cod_tren")
private int codigo;
@Column(name = "modelo", nullable = false, length = 100)
private String modelo;
@Column(name = "empresa_constructora", nullable = false, length = 255)
private String empresaConstructora;
@Column(name = "fecha_incorporacion")
private LocalDate fechaIncorporacion;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cod_cochera", nullable = false)
private Cochera cochera;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cod_linea", nullable = false)
private Linea linea;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public String getEmpresaConstructora() {
return empresaConstructora;
}
public void setEmpresaConstructora(String empresaConstructora) {
this.empresaConstructora = empresaConstructora;
}
public LocalDate getFechaIncorporacion() {
return fechaIncorporacion;
}
public void setFechaIncorporacion(LocalDate fechaIncorporacion) {
this.fechaIncorporacion = fechaIncorporacion;
}
public Cochera getCochera() {
return cochera;
}
public void setCochera(Cochera cochera) {
this.cochera = cochera;
}
public Linea getLinea() {
return linea;
}
public void setLinea(Linea linea) {
this.linea = linea;
}
@Override
public String toString() {
return "Tren [codigo=" + codigo + ", modelo=" + modelo + ", empresaConstructora=" + empresaConstructora
+ ", fechaIncorporacion=" + fechaIncorporacion + ", cochera=" + cochera + ", linea=" + linea + "]\n";
}
}

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="UP_REDMETRO_POSTGRESQL" transaction-type="RESOURCE_LOCAL">
<!-- Proveedor de persistencia JPA -->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!-- Clases a "mapear" -->
<class>org.lapaloma.aadd.redmetro.vo.Cochera</class>
<class>org.lapaloma.aadd.redmetro.vo.Color</class>
<class>org.lapaloma.aadd.redmetro.vo.Linea</class>
<class>org.lapaloma.aadd.redmetro.vo.Tren</class>
<class>org.lapaloma.aadd.redmetro.vo.Estacion</class>
<class>org.lapaloma.aadd.redmetro.vo.LineaEstacion</class>
<!-- Configuración de propiedades del SGDB (PostgreSQL) -->
<properties>
<property name="jakarta.persistence.jdbc.url" value="jdbc:postgresql://192.168.1.36:5432/Mapamundi"/>
<property name="jakarta.persistence.jdbc.user" value="vdlp"/>
<property name="jakarta.persistence.jdbc.password" value="postgresql_123"/>
<property name="jakarta.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<!-- Configuración Hibernate -->
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.show_sql" value="true"/>
<property name="format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>

View File

@ -0,0 +1,2 @@
url.conexion.mongodb=mongodb://admin:mongodb_123@172.16.0.181:27017
bbdd.mongodb=MapaMundi