Implementaciones IPaisDAO y IREpartoDAO

This commit is contained in:
Isidoro Nevares Martín 2025-11-14 12:45:50 +01:00
parent 683bc05d20
commit 9e6a53937f
10 changed files with 188 additions and 86 deletions

View File

@ -18,6 +18,6 @@
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="lib" path="C:/Users/IsidoroNM/Downloads/mapamundi.jar"/> <classpathentry kind="lib" path="C:/Users/ineva/INM/tmp/mapamundi.jar"/>
<classpathentry kind="output" path="target/classes"/> <classpathentry kind="output" path="target/classes"/>
</classpath> </classpath>

View File

5
config/config.properties Normal file
View File

@ -0,0 +1,5 @@
# Parámetros de conexión a la base de datos 'Cine' en SGDB MySQL
jdbc.driver = com.mysql.cj.jdbc.Driver
jdbc.url = jdbc:mysql://192.168.1.36:3306/Cine
jdbc.usuario = root
jdbc.password = mysql_123

View File

@ -3,7 +3,8 @@ package es.palomafp.aadd.inm;
import java.util.List; import java.util.List;
import es.palomafp.aadd.inm.dao.IRepartoDAO; import es.palomafp.aadd.inm.dao.IRepartoDAO;
import es.palomafp.aadd.inm.dao.impl.RepartoDaoGeneral; import es.palomafp.aadd.inm.dao.impl.RepartoDaoJDBC;
import es.palomafp.aadd.inm.util.ConversorTiposDatosYFormatos;
import es.palomafp.aadd.inm.vo.Reparto; import es.palomafp.aadd.inm.vo.Reparto;
/** /**
@ -21,16 +22,19 @@ public class GestorCine {
} }
private void imprimirRepartoPeliculasActorTerminaEnT() { private void imprimirRepartoPeliculasActorTerminaEnT() {
IRepartoDAO iRepartoDAO = new RepartoDaoGeneral(); IRepartoDAO iRepartoDAO = new RepartoDaoJDBC();
List<Reparto> listaReparto = iRepartoDAO.obtenerListaRepartoPeliculasNombreActorTerminaT(); List<Reparto> listaReparto = iRepartoDAO.obtenerListaRepartoPeliculasNombreActorTerminaT();
for (Reparto reparto : listaReparto) { for (Reparto reparto : listaReparto) {
System.out.println(reparto); // System.out.println(reparto);
String textoImprimir = """ String textoImprimir = """
%s, que nació en %s (%s), %s, que nació en %s (%s), participó en la película
participó en la película '%s', rodada '%s', rodada en %s (%s) y dirigida por
en %s (%s) y dirigida por %d %s que nació en %s (%s) el %s.
que nació en %s (%s) el %s.
"""; """;
String fechaNacimientoFormateada = null;
if (reparto.getPelicula().getDirector().getFechaNacimiento()!=null) {
ConversorTiposDatosYFormatos.convertirDateAString(reparto.getPelicula().getDirector().getFechaNacimiento(), "dd/MM/yyyy");
}
textoImprimir= String.format(textoImprimir, reparto.getActor().getNombre(), textoImprimir= String.format(textoImprimir, reparto.getActor().getNombre(),
reparto.getActor().getPaisNacimiento().getNombre(), reparto.getActor().getPaisNacimiento().getNombre(),
reparto.getActor().getPaisNacimiento().getContinente().getNombre(), reparto.getActor().getPaisNacimiento().getContinente().getNombre(),
@ -38,8 +42,8 @@ public class GestorCine {
reparto.getPelicula().getPaisLocalizacion().getContinente().getNombre(), reparto.getPelicula().getPaisLocalizacion().getContinente().getNombre(),
reparto.getPelicula().getDirector().getNombre(), reparto.getPelicula().getDirector().getNombre(),
reparto.getPelicula().getDirector().getPaisNacimiento().getNombre(), reparto.getPelicula().getDirector().getPaisNacimiento().getNombre(),
reparto.getPelicula().getDirector().getPaisNacimiento().getContinente(), reparto.getPelicula().getDirector().getPaisNacimiento().getContinente().getNombre(),
reparto.getPelicula().getDirector().getFechaNacimiento()); fechaNacimientoFormateada);
System.out.println(textoImprimir); System.out.println(textoImprimir);
} }
} }

View File

@ -1,22 +0,0 @@
package es.palomafp.aadd.inm.dao.impl;
import es.palomafp.aadd.inm.dao.IPaisDAO;
import es.palomafp.aadd.inm.vo.Pais;
/**
*
* PaisDaoGeneral: Clase que representa la implementación de un Pais
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 2 oct 2025
*/
public class PaisDaoGeneral implements IPaisDAO{
@Override
public Pais obtenerPais(int identificadorPais) {
// TODO Auto-generated method stub
return null;
}
}

View File

@ -0,0 +1,41 @@
package es.palomafp.aadd.inm.dao.impl;
import es.palomafp.aadd.inm.dao.IPaisDAO;
import es.palomafp.aadd.inm.vo.Continente;
import es.palomafp.aadd.inm.vo.Pais;
import inm.mapamundi.dao.impl.PaisINMDaoJDBC;
import inm.mapamundi.inm.dao.IPaisINMDAO;
/**
*
* PaisDaoGeneral: Clase que representa la implementación de un Pais
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 2 oct 2025
*/
public class PaisDaoJAR implements IPaisDAO {
@Override
public Pais obtenerPais(int identificadorPais) {
Pais pais = null;
IPaisINMDAO paisINMDAO = new PaisINMDaoJDBC();
inm.mapamundi.vo.Pais paisINM = paisINMDAO.obtenerPaisPorID(identificadorPais);
if (paisINM != null) {
// Información del Continente
Continente continente = new Continente();
continente.setCodigo(paisINM.getContinente().getCodigo());
continente.setNombre(paisINM.getContinente().getNombre());
// Información del País
pais = new Pais();
pais.setIdentificador(identificadorPais);
pais.setNombre(paisINM.getNombre());
pais.setCapital(paisINM.getCapital());
pais.setContinente(continente);
}
return pais;
}
}

View File

@ -1,51 +0,0 @@
package es.palomafp.aadd.inm.dao.impl;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import es.palomafp.aadd.inm.dao.IRepartoDAO;
import es.palomafp.aadd.inm.gestor.GestorConexionJDBC;
import es.palomafp.aadd.inm.vo.Reparto;
/**
*
* RepartoDaoGeneral: Clase que representa la implementación de un Reparto
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 2 oct 2025
*/
public class RepartoDaoGeneral implements IRepartoDAO{
@Override
public List<Reparto> obtenerListaRepartoPeliculasNombreActorTerminaT() {
List<Reparto> listaReparto=null;
String sentenciaSQL = """
SELECT *
FROM T_PAIS p join T_CONTINENTE c
on cod_continente= codigo
WHERE identificador=107
""";
// try con recursos "cerrables": Connection, Statement, ResultSet
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
Statement stm = conexion.createStatement();
ResultSet resultado = stm.executeQuery(sentenciaSQL);) {
listaReparto= new ArrayList<Reparto>();
while (resultado.next()) {
// Completar los atributos de Reparto
Reparto reparto = new Reparto();
listaReparto.add(reparto);
}
} catch (SQLException e) {
e.printStackTrace();
}
return listaReparto;
}
}

View File

@ -0,0 +1,99 @@
package es.palomafp.aadd.inm.dao.impl;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import es.palomafp.aadd.inm.dao.IPaisDAO;
import es.palomafp.aadd.inm.dao.IRepartoDAO;
import es.palomafp.aadd.inm.gestor.GestorConexionJDBC;
import es.palomafp.aadd.inm.vo.Actor;
import es.palomafp.aadd.inm.vo.Director;
import es.palomafp.aadd.inm.vo.Pais;
import es.palomafp.aadd.inm.vo.Pelicula;
import es.palomafp.aadd.inm.vo.Reparto;
/**
*
* RepartoDaoGeneral: Clase que representa la implementación de un Reparto con JDBC
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 2 oct 2025
*/
public class RepartoDaoJDBC implements IRepartoDAO{
@Override
public List<Reparto> obtenerListaRepartoPeliculasNombreActorTerminaT() {
List<Reparto> listaReparto=null;
String sentenciaSQL = """
select a.nombre as nombre_actor, a.id_pais as id_pais_actor,
p.titulo as titulo_pelicula, p.id_pais as id_pais_pelicula,
d.nombre as nombre_director, d.id_pais as id_pais_director, d.fecha_nacimiento as fecha_nacimiento_director
from reparto r join actor a
on r.id_actor =a.identificador
join pelicula p
on p.identificador =r.id_pelicula
join director d
on p.id_director = d.identificador
where p.identificador IN (SELECT re.id_pelicula
from reparto re join actor ac
on re.id_actor = ac.identificador
join pelicula pe
on re.id_pelicula = pe.identificador
where ac.nombre like '%t');
""";
// try con recursos "cerrables": Connection, Statement, ResultSet
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
Statement stm = conexion.createStatement();
ResultSet resultado = stm.executeQuery(sentenciaSQL);) {
listaReparto= new ArrayList<Reparto>();
while (resultado.next()) {
IPaisDAO paisDAO = new PaisDaoJAR();
// Información del Actor
String nombreActor = resultado.getString("nombre_actor");
int idPaisNacimientoActor = resultado.getInt("id_pais_actor");
Pais paisNacimientoActor = paisDAO.obtenerPais(idPaisNacimientoActor);
Actor actor = new Actor();
actor.setNombre(nombreActor);
actor.setPaisNacimiento(paisNacimientoActor);
// Información del Director
String nombreDirector = resultado.getString("nombre_director");
int idPaisNacimientoDirector= resultado.getInt("id_pais_director");
Pais paisNacimientoDirector = paisDAO.obtenerPais(idPaisNacimientoDirector);
Date fechaNacimientoDirector= resultado.getDate("fecha_nacimiento_director");
Director director = new Director();
director.setNombre(nombreDirector);
director.setPaisNacimiento(paisNacimientoDirector);
director.setFechaNacimiento(fechaNacimientoDirector);
// Información de la Película
String tituloPelicula = resultado.getString("titulo_pelicula");
int idPaisLocalizacionPelicula= resultado.getInt("id_pais_pelicula");
Pais paisLocalizacionPelicula = paisDAO.obtenerPais(idPaisLocalizacionPelicula);
Pelicula pelicula = new Pelicula();
pelicula.setTitulo(tituloPelicula);
pelicula.setPaisLocalizacion(paisLocalizacionPelicula);
pelicula.setDirector(director);
// Completar los atributos de Reparto
Reparto reparto = new Reparto();
reparto.setActor(actor);
reparto.setPelicula(pelicula);
listaReparto.add(reparto);
}
} catch (SQLException e) {
e.printStackTrace();
}
return listaReparto;
}
}

View File

@ -1,5 +1,6 @@
package es.palomafp.aadd.inm.gestor; package es.palomafp.aadd.inm.gestor;
import java.io.FileInputStream;
import java.util.Properties; import java.util.Properties;
/** /**
@ -11,7 +12,7 @@ import java.util.Properties;
* @date 31 oct 2025 * @date 31 oct 2025
*/ */
public class GestorFicheroConfiguracion { public class GestorFicheroConfiguracion {
private static final String RUTA_FICHERO_CONFIGURACION = "config/conf.properties"; private static final String RUTA_FICHERO_CONFIGURACION = "config/config.properties";
private static Properties propiedades; private static Properties propiedades;
private GestorFicheroConfiguracion() { private GestorFicheroConfiguracion() {
@ -21,10 +22,10 @@ public class GestorFicheroConfiguracion {
propiedades= new Properties(); propiedades= new Properties();
try { try {
// Fichero que está en el classpath // Fichero que está en el classpath
propiedades.load(GestorFicheroConfiguracion.class.getClassLoader().getResourceAsStream(RUTA_FICHERO_CONFIGURACION)); //propiedades.load(GestorFicheroConfiguracion.class.getClassLoader().getResourceAsStream(RUTA_FICHERO_CONFIGURACION));
// Fichero con ruta relativa al proyecto // Fichero con ruta relativa al proyecto
// propiedades.load(new FileInputStream(RUTA_FICHERO_CONFIGURACION)); propiedades.load(new FileInputStream(RUTA_FICHERO_CONFIGURACION));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -0,0 +1,25 @@
package es.palomafp.aadd.inm.util;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
*
* ConversorTiposDatos: Clase que realiza conversiones entre tipos de datos y formatos.
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 14 nov 2025
*
*
*/
public class ConversorTiposDatosYFormatos {
public static String convertirDateAString(Date fecha, String formato) {
String fechaFormateada = null;
fechaFormateada= LocalDate.parse(fecha.toString())
.format(DateTimeFormatter.ofPattern(formato));
return fechaFormateada;
}
}