From 25e4f2f6e2179b9544dfd7d06d60490ae391634b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isidoro=20Nevares=20Mart=C3=ADn?= Date: Thu, 11 Dec 2025 15:00:25 +0100 Subject: [PATCH] commit inicial --- .classpath | 41 ++++++++ .gitignore | 3 + .project | 23 +++++ .settings/org.eclipse.core.resources.prefs | 2 + .settings/org.eclipse.jdt.core.prefs | 8 ++ .settings/org.eclipse.m2e.core.prefs | 4 + pom.xml | 20 ++++ .../lapaloma/aadd/redmetro/AppRedMetro.java | 15 +++ .../gestores/GestorSesionesHibernate.java | 42 ++++++++ .../org/lapaloma/aadd/redmetro/vo/Acceso.java | 63 ++++++++++++ .../lapaloma/aadd/redmetro/vo/Cochera.java | 65 +++++++++++++ .../org/lapaloma/aadd/redmetro/vo/Color.java | 51 ++++++++++ .../lapaloma/aadd/redmetro/vo/Estacion.java | 51 ++++++++++ .../org/lapaloma/aadd/redmetro/vo/Linea.java | 89 +++++++++++++++++ .../aadd/redmetro/vo/LineaEstacion.java | 76 +++++++++++++++ .../aadd/redmetro/vo/LineaEstacionId.java | 41 ++++++++ .../org/lapaloma/aadd/redmetro/vo/Tren.java | 97 +++++++++++++++++++ src/main/resources/hibernate.cfg.xml | 31 ++++++ 18 files changed, 722 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/lapaloma/aadd/redmetro/AppRedMetro.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorSesionesHibernate.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/vo/Acceso.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/vo/Cochera.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/vo/Color.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/vo/Estacion.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/vo/Linea.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/vo/LineaEstacion.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/vo/LineaEstacionId.java create mode 100644 src/main/java/org/lapaloma/aadd/redmetro/vo/Tren.java create mode 100644 src/main/resources/hibernate.cfg.xml diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..d863192 --- /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..0ff22dd --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + aadd_act3_3 + + + + + + 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..2f5cc74 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -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 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..b63ee35 --- /dev/null +++ b/pom.xml @@ -0,0 +1,20 @@ + + 4.0.0 + org.lapaloma.aadd + aadd_act3_3 + 0.0.1-SNAPSHOT + + + + org.hibernate.orm + hibernate-core + 7.1.11.Final + + + + com.mysql + mysql-connector-j + 9.0.0 + + + \ No newline at end of file diff --git a/src/main/java/org/lapaloma/aadd/redmetro/AppRedMetro.java b/src/main/java/org/lapaloma/aadd/redmetro/AppRedMetro.java new file mode 100644 index 0000000..e00113b --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/redmetro/AppRedMetro.java @@ -0,0 +1,15 @@ +package org.lapaloma.aadd.redmetro; + +import org.lapaloma.aadd.redmetro.gestores.GestorSesionesHibernate; + +/** + * 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) { + // Obtiene la Session de forma estática + GestorSesionesHibernate.getSession(); + } +} diff --git a/src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorSesionesHibernate.java b/src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorSesionesHibernate.java new file mode 100644 index 0000000..8871da8 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/redmetro/gestores/GestorSesionesHibernate.java @@ -0,0 +1,42 @@ +package org.lapaloma.aadd.redmetro.gestores; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.cfg.Configuration; + +/** + * + * GestorSesionesHibernate: Clase que realiza .... + * + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 4 dic 2025 + * + * + */ + +public class GestorSesionesHibernate { + private static SessionFactory sessionFactory = null; + + private GestorSesionesHibernate() {// 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 void cerrarFactoria() { + if (sessionFactory != null) { + sessionFactory.close(); + } + } +} diff --git a/src/main/java/org/lapaloma/aadd/redmetro/vo/Acceso.java b/src/main/java/org/lapaloma/aadd/redmetro/vo/Acceso.java new file mode 100644 index 0000000..13646eb --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/redmetro/vo/Acceso.java @@ -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"; + } +} diff --git a/src/main/java/org/lapaloma/aadd/redmetro/vo/Cochera.java b/src/main/java/org/lapaloma/aadd/redmetro/vo/Cochera.java new file mode 100644 index 0000000..977bad9 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/redmetro/vo/Cochera.java @@ -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"; + } + +} diff --git a/src/main/java/org/lapaloma/aadd/redmetro/vo/Color.java b/src/main/java/org/lapaloma/aadd/redmetro/vo/Color.java new file mode 100644 index 0000000..1330099 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/redmetro/vo/Color.java @@ -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"; + } + +} diff --git a/src/main/java/org/lapaloma/aadd/redmetro/vo/Estacion.java b/src/main/java/org/lapaloma/aadd/redmetro/vo/Estacion.java new file mode 100644 index 0000000..98c08f7 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/redmetro/vo/Estacion.java @@ -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"; + } + +} diff --git a/src/main/java/org/lapaloma/aadd/redmetro/vo/Linea.java b/src/main/java/org/lapaloma/aadd/redmetro/vo/Linea.java new file mode 100644 index 0000000..0bc3cc2 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/redmetro/vo/Linea.java @@ -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"; + } + + +} diff --git a/src/main/java/org/lapaloma/aadd/redmetro/vo/LineaEstacion.java b/src/main/java/org/lapaloma/aadd/redmetro/vo/LineaEstacion.java new file mode 100644 index 0000000..3315922 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/redmetro/vo/LineaEstacion.java @@ -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"; + } + +} diff --git a/src/main/java/org/lapaloma/aadd/redmetro/vo/LineaEstacionId.java b/src/main/java/org/lapaloma/aadd/redmetro/vo/LineaEstacionId.java new file mode 100644 index 0000000..8b82803 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/redmetro/vo/LineaEstacionId.java @@ -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); + } +} diff --git a/src/main/java/org/lapaloma/aadd/redmetro/vo/Tren.java b/src/main/java/org/lapaloma/aadd/redmetro/vo/Tren.java new file mode 100644 index 0000000..4e426b0 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/redmetro/vo/Tren.java @@ -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"; + } + +} diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml new file mode 100644 index 0000000..784b6a1 --- /dev/null +++ b/src/main/resources/hibernate.cfg.xml @@ -0,0 +1,31 @@ + + + + + jdbc:mysql://192.168.1.36:3306/red_metro + com.mysql.cj.jdbc.Driver + + org.hibernate.dialect.MySQLDialect + + root + mysql_123 + + + create + true + true + + + + + + + + + + + + + \ No newline at end of file