Tratamiento en PostgreSQL
This commit is contained in:
parent
21e005e3a2
commit
e0f8aa1698
@ -5,6 +5,7 @@ import java.util.List;
|
|||||||
import org.lapaloma.aadd.redmetro.dao.ILineaDAO;
|
import org.lapaloma.aadd.redmetro.dao.ILineaDAO;
|
||||||
import org.lapaloma.aadd.redmetro.dao.jpa.LineaDaoJPA;
|
import org.lapaloma.aadd.redmetro.dao.jpa.LineaDaoJPA;
|
||||||
import org.lapaloma.aadd.redmetro.dao.mgdb.LineaDaoMongoDB;
|
import org.lapaloma.aadd.redmetro.dao.mgdb.LineaDaoMongoDB;
|
||||||
|
import org.lapaloma.aadd.redmetro.gestores.GestorEntityManagerJPA;
|
||||||
import org.lapaloma.aadd.redmetro.vo.Linea;
|
import org.lapaloma.aadd.redmetro.vo.Linea;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -16,7 +17,7 @@ public class AppRedMetro {
|
|||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
AppRedMetro app = new AppRedMetro();
|
AppRedMetro app = new AppRedMetro();
|
||||||
// Obtiene la Session de forma estática
|
// Obtiene la Session de forma estática
|
||||||
// GestorEntityManagerJPA.getEntityManager();
|
GestorEntityManagerJPA.getEntityManager();
|
||||||
|
|
||||||
app.migrarMongoDBAPostgreSQL();
|
app.migrarMongoDBAPostgreSQL();
|
||||||
}
|
}
|
||||||
@ -27,7 +28,6 @@ public class AppRedMetro {
|
|||||||
if (listaLineas != null) {
|
if (listaLineas != null) {
|
||||||
lineaDAO = new LineaDaoJPA();
|
lineaDAO = new LineaDaoJPA();
|
||||||
for (Linea linea : listaLineas) {
|
for (Linea linea : listaLineas) {
|
||||||
|
|
||||||
// Se comprueba si existe la línea en PostgreSQL
|
// Se comprueba si existe la línea en PostgreSQL
|
||||||
Linea lineaBBDD = lineaDAO.obtenerLineaPorID(linea.getCodigo());
|
Linea lineaBBDD = lineaDAO.obtenerLineaPorID(linea.getCodigo());
|
||||||
|
|
||||||
|
|||||||
@ -1,19 +1,19 @@
|
|||||||
package org.lapaloma.aadd.redmetro.dao.mgdb;
|
package org.lapaloma.aadd.redmetro.dao.mgdb;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.lapaloma.aadd.redmetro.dao.ILineaDAO;
|
import org.lapaloma.aadd.redmetro.dao.ILineaDAO;
|
||||||
import org.lapaloma.aadd.redmetro.gestores.GestorConexionMongoDB;
|
import org.lapaloma.aadd.redmetro.gestores.GestorConexionMongoDB;
|
||||||
|
import org.lapaloma.aadd.redmetro.util.UtilidadesRedMetro;
|
||||||
import org.lapaloma.aadd.redmetro.vo.Color;
|
import org.lapaloma.aadd.redmetro.vo.Color;
|
||||||
import org.lapaloma.aadd.redmetro.vo.Linea;
|
import org.lapaloma.aadd.redmetro.vo.Linea;
|
||||||
|
|
||||||
import com.mongodb.client.FindIterable;
|
import com.mongodb.client.FindIterable;
|
||||||
import com.mongodb.client.MongoCollection;
|
import com.mongodb.client.MongoCollection;
|
||||||
|
|
||||||
import es.palomafp.aadd.inm.vo.Pais;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* ContinenteDaoMongoDB: Implentación MongoDB de las operaciones de
|
* ContinenteDaoMongoDB: Implentación MongoDB de las operaciones de
|
||||||
@ -23,7 +23,7 @@ import es.palomafp.aadd.inm.vo.Pais;
|
|||||||
* @date 30 enero 2026
|
* @date 30 enero 2026
|
||||||
*/
|
*/
|
||||||
public class LineaDaoMongoDB implements ILineaDAO {
|
public class LineaDaoMongoDB implements ILineaDAO {
|
||||||
private final static String COLECCION_PAIS = "C_LINEA";
|
private final static String COLECCION_PAIS = "c_linea";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Linea obtenerLineaPorID(int identificador) {
|
public Linea obtenerLineaPorID(int identificador) {
|
||||||
@ -63,23 +63,38 @@ public class LineaDaoMongoDB implements ILineaDAO {
|
|||||||
private Linea getLineaFromDocumentoLinea(Document documentoLinea) {
|
private Linea getLineaFromDocumentoLinea(Document documentoLinea) {
|
||||||
Linea linea = null;
|
Linea linea = null;
|
||||||
|
|
||||||
/*
|
int codLinea = Integer.valueOf(documentoLinea.getString("cod_linea"));
|
||||||
* int idMongoDB = documentoPais.getInteger("_id"); int identificador =
|
String urlImgLinea = documentoLinea.getString("url_img_tmp");
|
||||||
* documentoPais.getInteger("identificador"); String nombrePais =
|
byte[] imagenLinea= UtilidadesRedMetro.getBytesFromURL(urlImgLinea);
|
||||||
* documentoPais.getString("nombre"); String capital =
|
Object kilometros = documentoLinea.get("kilometros");
|
||||||
* documentoPais.getString("capital");
|
if (kilometros instanceof Double) {
|
||||||
*
|
kilometros = BigDecimal.valueOf((Double) kilometros);
|
||||||
* Document documentoColor= (Document) documentoPais.get("continente"); String
|
} else if (kilometros instanceof Integer) {
|
||||||
* codigoContinente = documentoContinente.getString("codigo"); String
|
kilometros = BigDecimal.valueOf((Integer) kilometros);
|
||||||
* nombreContinente = documentoContinente.getString("nombre");
|
}
|
||||||
*
|
// System.out.println("kilometros: " + kilometros);
|
||||||
* Color color = new Color(); color.setCodigo(codigoContinente);
|
|
||||||
* color.setNombreContinente(nombreContinente);
|
Document documentoNombre = (Document) documentoLinea.get("nombre");
|
||||||
*
|
String nombreCorto = documentoNombre.getString("nombre_corto");
|
||||||
* linea = new Linea(); linea.setIdentificador(identificador);
|
String nombreLargo = documentoNombre.getString("nombre_largo");
|
||||||
* linea.setNombrePais(nombrePais); linea.setCapital(capital);
|
|
||||||
* linea.setColor(color);
|
Document documentoColor = (Document) documentoLinea.get("color");
|
||||||
*/
|
int codigoColor = documentoColor.getInteger("cod_color");
|
||||||
|
String nombreColor = documentoColor.getString("nombre");
|
||||||
|
String codHexadecimal = documentoColor.getString("cod_hexadecimal");
|
||||||
|
|
||||||
|
Color color = new Color();
|
||||||
|
color.setCodigo(codigoColor);
|
||||||
|
color.setNombre(nombreColor);
|
||||||
|
color.setCodHexadecimal(codHexadecimal);
|
||||||
|
|
||||||
|
linea = new Linea();
|
||||||
|
linea.setCodigo(codLinea);
|
||||||
|
linea.setNombreCorto(nombreCorto);
|
||||||
|
linea.setNombreLargo(nombreLargo);
|
||||||
|
linea.setKilometros((BigDecimal)kilometros);
|
||||||
|
linea.setImagenLinea(imagenLinea);
|
||||||
|
linea.setColor(color);
|
||||||
|
|
||||||
return linea;
|
return linea;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,7 +23,7 @@ public class GestorEntityManagerJPA {
|
|||||||
// Carga la configuración desde META-INF/persistence.xml
|
// Carga la configuración desde META-INF/persistence.xml
|
||||||
static {
|
static {
|
||||||
try {
|
try {
|
||||||
entityManagerFactory = Persistence.createEntityManagerFactory("UP_PROYECTOSIES_ODB");
|
entityManagerFactory = Persistence.createEntityManagerFactory("UP_REDMETRO_POSTGRESQL");
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
System.err.println("Error en EntityManagerFactory: " + ex);
|
System.err.println("Error en EntityManagerFactory: " + ex);
|
||||||
throw new ExceptionInInitializerError(ex);
|
throw new ExceptionInInitializerError(ex);
|
||||||
|
|||||||
@ -0,0 +1,51 @@
|
|||||||
|
package org.lapaloma.aadd.redmetro.util;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* UtilidadesCine: Clase que realiza ....
|
||||||
|
*
|
||||||
|
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
|
||||||
|
* @date 23 ene 2026
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class UtilidadesRedMetro {
|
||||||
|
public static byte[] getBytesFromURL(String textoURL) {
|
||||||
|
byte[] bytesImagen = null;
|
||||||
|
URI url = null;
|
||||||
|
try {
|
||||||
|
url = new URI(textoURL);
|
||||||
|
HttpURLConnection urlConnection = (HttpURLConnection) url.toURL().openConnection();
|
||||||
|
urlConnection.addRequestProperty("User-Agent", "Mozilla");
|
||||||
|
InputStream inputStream = urlConnection.getInputStream();
|
||||||
|
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
int len = 0;
|
||||||
|
while ((len = inputStream.read(buffer)) != -1) {
|
||||||
|
outStream.write(buffer, 0, len);
|
||||||
|
}
|
||||||
|
inputStream.close();
|
||||||
|
bytesImagen = outStream.toByteArray();
|
||||||
|
} catch (IOException | URISyntaxException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return bytesImagen;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static LocalDate parsearFecha(String fechaStr, String formato) {
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(formato);
|
||||||
|
|
||||||
|
LocalDate fecha = LocalDate.parse(fechaStr, formatter);
|
||||||
|
return fecha;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
package org.lapaloma.aadd.redmetro.vo;
|
package org.lapaloma.aadd.redmetro.vo;
|
||||||
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entidad que representa la tabla T_COLOR.
|
* Entidad que representa la tabla T_COLOR.
|
||||||
@ -9,7 +12,7 @@ import jakarta.persistence.*;
|
|||||||
@Table(name = "T_COLOR")
|
@Table(name = "T_COLOR")
|
||||||
public class Color {
|
public class Color {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
// @GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
@Column(name = "cod_color")
|
@Column(name = "cod_color")
|
||||||
private int codigo;
|
private int codigo;
|
||||||
|
|
||||||
|
|||||||
@ -1,26 +1,27 @@
|
|||||||
package org.lapaloma.aadd.redmetro.vo;
|
package org.lapaloma.aadd.redmetro.vo;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import jakarta.persistence.CascadeType;
|
||||||
import jakarta.persistence.Column;
|
import jakarta.persistence.Column;
|
||||||
import jakarta.persistence.Entity;
|
import jakarta.persistence.Entity;
|
||||||
import jakarta.persistence.FetchType;
|
import jakarta.persistence.FetchType;
|
||||||
import jakarta.persistence.GeneratedValue;
|
|
||||||
import jakarta.persistence.GenerationType;
|
|
||||||
import jakarta.persistence.Id;
|
import jakarta.persistence.Id;
|
||||||
import jakarta.persistence.JoinColumn;
|
import jakarta.persistence.JoinColumn;
|
||||||
import jakarta.persistence.OneToOne;
|
import jakarta.persistence.OneToOne;
|
||||||
import jakarta.persistence.Table;
|
import jakarta.persistence.Table;
|
||||||
|
import jakarta.persistence.UniqueConstraint;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entidad que representa la tabla T_LINEA.
|
* Entidad que representa la tabla T_LINEA.
|
||||||
* Relación OneToOne con T_COLOR (código único).
|
* Relación OneToOne con T_COLOR (código único).
|
||||||
*/
|
*/
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "T_LINEA")
|
@Table(name = "T_LINEA", uniqueConstraints = @UniqueConstraint(columnNames = "cod_color"))
|
||||||
public class Linea {
|
public class Linea {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
//@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
@Column(name = "cod_linea")
|
@Column(name = "cod_linea")
|
||||||
private int codigo;
|
private int codigo;
|
||||||
|
|
||||||
@ -30,15 +31,17 @@ public class Linea {
|
|||||||
@Column(name = "nombre_largo", nullable = false, length = 100)
|
@Column(name = "nombre_largo", nullable = false, length = 100)
|
||||||
private String nombreLargo;
|
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)
|
@Column(name = "kilometros", nullable = false, precision = 5, scale = 2)
|
||||||
private BigDecimal kilometros;
|
private BigDecimal kilometros;
|
||||||
|
|
||||||
|
// Relación OneToOne con T_COLOR (clave única)
|
||||||
|
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
|
||||||
|
@JoinColumn(name = "cod_color", nullable = false)
|
||||||
|
private Color color;
|
||||||
|
|
||||||
|
@Column(name = "imagen_linea", columnDefinition = "BYTEA")
|
||||||
|
private byte[] imagenLinea;
|
||||||
|
|
||||||
public int getCodigo() {
|
public int getCodigo() {
|
||||||
return codigo;
|
return codigo;
|
||||||
}
|
}
|
||||||
@ -79,11 +82,18 @@ public class Linea {
|
|||||||
this.kilometros = kilometros;
|
this.kilometros = kilometros;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public byte[] getImagenLinea() {
|
||||||
|
return imagenLinea;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setImagenLinea(byte[] imagenLinea) {
|
||||||
|
this.imagenLinea = imagenLinea;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Linea [codigo=" + codigo + ", nombreCorto=" + nombreCorto + ", nombreLargo=" + nombreLargo + ", color="
|
return "Linea [codigo=" + codigo + ", nombreCorto=" + nombreCorto + ", nombreLargo=" + nombreLargo + ", color="
|
||||||
+ color + ", kilometros=" + kilometros + "]\n";
|
+ color + ", kilometros=" + kilometros + ", imagenLinea=" + Arrays.toString(imagenLinea) + "]\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
<!-- Configuración de propiedades del SGDB (PostgreSQL) -->
|
<!-- Configuración de propiedades del SGDB (PostgreSQL) -->
|
||||||
<properties>
|
<properties>
|
||||||
<property name="jakarta.persistence.jdbc.url" value="jdbc:postgresql://192.168.1.36:5432/Mapamundi"/>
|
<property name="jakarta.persistence.jdbc.url" value="jdbc:postgresql://192.168.1.36:5432/red_metro_aadd"/>
|
||||||
<property name="jakarta.persistence.jdbc.user" value="vdlp"/>
|
<property name="jakarta.persistence.jdbc.user" value="vdlp"/>
|
||||||
<property name="jakarta.persistence.jdbc.password" value="postgresql_123"/>
|
<property name="jakarta.persistence.jdbc.password" value="postgresql_123"/>
|
||||||
<property name="jakarta.persistence.jdbc.driver" value="org.postgresql.Driver"/>
|
<property name="jakarta.persistence.jdbc.driver" value="org.postgresql.Driver"/>
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
url.conexion.mongodb=mongodb://admin:mongodb_123@172.16.0.181:27017
|
url.conexion.mongodb=mongodb://admin:mongodb_123@192.168.1.36:27017
|
||||||
bbdd.mongodb=MapaMundi
|
bbdd.mongodb=red_metro_aadd
|
||||||
Loading…
Reference in New Issue
Block a user