commit 657ce22c2033e883df065692f97e283b4b8b486d Author: Isidoro Nevares Mart铆n Date: Fri Nov 14 15:07:47 2025 +0100 first commit diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..46fcc12 --- /dev/null +++ b/.classpath @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + 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..d06b73f --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + aadd_act2_8 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..a1bee5a --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +eclipse.preferences.version=1 +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=enabled +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/config/config.properties b/config/config.properties new file mode 100644 index 0000000..5abecf6 --- /dev/null +++ b/config/config.properties @@ -0,0 +1,5 @@ +# Par醡etros de conexi髇 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 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..97aa563 --- /dev/null +++ b/pom.xml @@ -0,0 +1,32 @@ + + 4.0.0 + aadd_act2_7 + aadd_act2_7 + 0.0.1-SNAPSHOT + + + + com.mysql + mysql-connector-j + 9.5.0 + + + + org.postgresql + postgresql + 42.7.8 + + + + src + + + maven-compiler-plugin + 3.13.0 + + 24 + + + + + \ No newline at end of file diff --git a/src/es/palomafp/aadd/inm/GestorCine.java b/src/es/palomafp/aadd/inm/GestorCine.java new file mode 100644 index 0000000..956c816 --- /dev/null +++ b/src/es/palomafp/aadd/inm/GestorCine.java @@ -0,0 +1,61 @@ +package es.palomafp.aadd.inm; + +import java.util.List; + +import es.palomafp.aadd.inm.dao.IRepartoDAO; +import es.palomafp.aadd.inm.dao.impl.RepartoDaoJDBC; +import es.palomafp.aadd.inm.util.ConversorTiposDatosYFormatos; +import es.palomafp.aadd.inm.vo.Reparto; + +/** + * + * GestorCine: Clase que se encarga de gestionar (Continente, Pais, Actor, + * Director, Pelicula, Reparto) + * + * @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma + * @date 2 oct 2025 + */ +public class GestorCine { + public static void main(String[] args) { + GestorCine gc = new GestorCine(); + gc.imprimirRepartoPeliculasActorTerminaEnT(); + } + + private void imprimirRepartoPeliculasActorTerminaEnT() { + IRepartoDAO iRepartoDAO = new RepartoDaoJDBC(); + + System.out.println("----- FIJO -----"); + List listaReparto = iRepartoDAO.obtenerListaRepartoPeliculasNombreActorTerminaT(); + imprimirReparto(listaReparto); + + System.out.println("----- Con patr贸n -----"); + + List listaRepartoConPatron = iRepartoDAO.obtenerListaRepartoPeliculasNombreActorConPatron("%t"); + imprimirReparto(listaRepartoConPatron); + + } + private void imprimirReparto(List listaReparto) { + for (Reparto reparto : listaReparto) { +// System.out.println(reparto); + String textoImprimir = """ + %s, que naci贸 en %s (%s), particip贸 en la pel铆cula + '%s', rodada en %s (%s) y dirigida por + %s que naci贸 en %s (%s) el %s. + """; + String fechaNacimientoFormateada = null; + if (reparto.getPelicula().getDirector().getFechaNacimiento()!=null) { + fechaNacimientoFormateada=ConversorTiposDatosYFormatos.convertirDateAString(reparto.getPelicula().getDirector().getFechaNacimiento(), "dd/MM/yyyy"); + } + textoImprimir= String.format(textoImprimir, reparto.getActor().getNombre(), + reparto.getActor().getPaisNacimiento().getNombre(), + reparto.getActor().getPaisNacimiento().getContinente().getNombre(), + reparto.getPelicula().getTitulo(), reparto.getPelicula().getPaisLocalizacion().getNombre(), + reparto.getPelicula().getPaisLocalizacion().getContinente().getNombre(), + reparto.getPelicula().getDirector().getNombre(), + reparto.getPelicula().getDirector().getPaisNacimiento().getNombre(), + reparto.getPelicula().getDirector().getPaisNacimiento().getContinente().getNombre(), + fechaNacimientoFormateada); + System.out.println(textoImprimir); + } + } +} diff --git a/src/es/palomafp/aadd/inm/dao/IActorDAO.java b/src/es/palomafp/aadd/inm/dao/IActorDAO.java new file mode 100644 index 0000000..6555525 --- /dev/null +++ b/src/es/palomafp/aadd/inm/dao/IActorDAO.java @@ -0,0 +1,13 @@ +package es.palomafp.aadd.inm.dao; + +/** +* +* IActrorDAO: Interfaz que representa las operaciones a realizar sobre Actor +* +* @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma +* @date 2 oct 2025 +*/ + +public interface IActorDAO { + int obtenerNumeroActoresPelicula(int idPelicula); +} diff --git a/src/es/palomafp/aadd/inm/dao/IContinenteDAO.java b/src/es/palomafp/aadd/inm/dao/IContinenteDAO.java new file mode 100644 index 0000000..650c77d --- /dev/null +++ b/src/es/palomafp/aadd/inm/dao/IContinenteDAO.java @@ -0,0 +1,15 @@ +package es.palomafp.aadd.inm.dao; + +import es.palomafp.aadd.inm.vo.Continente; + +/** +* +* IContinenteDAO: Interfaz que representa las operaciones a realizar sobre Continente +* +* @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma +* @date 2 oct 2025 +*/ + +public interface IContinenteDAO { + public Continente obtenerContinente(String codigoContinente); +} diff --git a/src/es/palomafp/aadd/inm/dao/IDirectorDAO.java b/src/es/palomafp/aadd/inm/dao/IDirectorDAO.java new file mode 100644 index 0000000..50acf5f --- /dev/null +++ b/src/es/palomafp/aadd/inm/dao/IDirectorDAO.java @@ -0,0 +1,13 @@ +package es.palomafp.aadd.inm.dao; + +/** +* +* IDirectorDAO: Interfaz que representa las operaciones a realizar sobre Director +* +* @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma +* @date 2 oct 2025 +*/ + +public interface IDirectorDAO { + +} diff --git a/src/es/palomafp/aadd/inm/dao/IPaisDAO.java b/src/es/palomafp/aadd/inm/dao/IPaisDAO.java new file mode 100644 index 0000000..1e6058a --- /dev/null +++ b/src/es/palomafp/aadd/inm/dao/IPaisDAO.java @@ -0,0 +1,15 @@ +package es.palomafp.aadd.inm.dao; + +import es.palomafp.aadd.inm.vo.Pais; + +/** +* +* IPaisDAO: Interfaz que representa las operaciones a realizar sobre Pais +* +* @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma +* @date 2 oct 2025 +*/ +public interface IPaisDAO { + public Pais obtenerPais(int identificadorPais); + +} diff --git a/src/es/palomafp/aadd/inm/dao/IPeliculaDAO.java b/src/es/palomafp/aadd/inm/dao/IPeliculaDAO.java new file mode 100644 index 0000000..9c79682 --- /dev/null +++ b/src/es/palomafp/aadd/inm/dao/IPeliculaDAO.java @@ -0,0 +1,13 @@ +package es.palomafp.aadd.inm.dao; + +/** +* +* IDirectorDAO: Interfaz que representa las operaciones a realizar sobre Director +* +* @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma +* @date 2 oct 2025 +*/ + +public interface IPeliculaDAO { + +} diff --git a/src/es/palomafp/aadd/inm/dao/IRepartoDAO.java b/src/es/palomafp/aadd/inm/dao/IRepartoDAO.java new file mode 100644 index 0000000..8897064 --- /dev/null +++ b/src/es/palomafp/aadd/inm/dao/IRepartoDAO.java @@ -0,0 +1,18 @@ +package es.palomafp.aadd.inm.dao; + +import java.util.List; + +import es.palomafp.aadd.inm.vo.Reparto; + +/** +* +* IRepartoDAO: Interfaz que representa las operaciones a realizar sobre Reparto +* +* @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma +* @date 2 oct 2025 +*/ + +public interface IRepartoDAO { + List obtenerListaRepartoPeliculasNombreActorTerminaT(); + List obtenerListaRepartoPeliculasNombreActorConPatron(String patron); +} diff --git a/src/es/palomafp/aadd/inm/dao/impl/ActorDaoJDBC.java b/src/es/palomafp/aadd/inm/dao/impl/ActorDaoJDBC.java new file mode 100644 index 0000000..9fa9ae9 --- /dev/null +++ b/src/es/palomafp/aadd/inm/dao/impl/ActorDaoJDBC.java @@ -0,0 +1,42 @@ +package es.palomafp.aadd.inm.dao.impl; + +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.ResultSet; + +import es.palomafp.aadd.inm.dao.IActorDAO; +import es.palomafp.aadd.inm.gestor.GestorConexionJDBC; + +/** + * + * ActorDaoGeneral: Clase que representa la implementaci贸n de un Actor + * + * @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma + * @date 2 oct 2025 + */ + +public class ActorDaoJDBC implements IActorDAO { + + @Override + public int obtenerNumeroActoresPelicula(int idPelicula) { + int numeroActores = 0; + // try con recursos "cerrables": Connection, Statement, ResultSet + try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC(); + CallableStatement cstmt = conexion.prepareCall("{call obtenerNumeroActoresPelicula(?)}");) { + + // El par谩metro es el patr贸n por el que se va a buscar + cstmt.setInt(1, idPelicula); + ResultSet resultado = cstmt.executeQuery(); + + if (resultado.next()) { + return 0; + + } + } catch (Exception e) { + e.printStackTrace(); + } + + return numeroActores; + } + +} diff --git a/src/es/palomafp/aadd/inm/dao/impl/ContinenteDaoGeneral.java b/src/es/palomafp/aadd/inm/dao/impl/ContinenteDaoGeneral.java new file mode 100644 index 0000000..34a0364 --- /dev/null +++ b/src/es/palomafp/aadd/inm/dao/impl/ContinenteDaoGeneral.java @@ -0,0 +1,22 @@ +package es.palomafp.aadd.inm.dao.impl; + +import es.palomafp.aadd.inm.dao.IContinenteDAO; +import es.palomafp.aadd.inm.vo.Continente; + +/** +* +* ContinenteDaoGeneral: Clase que representa la implementaci贸n de un Continente +* +* @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma +* @date 2 oct 2025 +*/ + +public class ContinenteDaoGeneral implements IContinenteDAO { + + @Override + public Continente obtenerContinente(String codigoContinente) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/es/palomafp/aadd/inm/dao/impl/DirectorDaoGeneral.java b/src/es/palomafp/aadd/inm/dao/impl/DirectorDaoGeneral.java new file mode 100644 index 0000000..f87f8ad --- /dev/null +++ b/src/es/palomafp/aadd/inm/dao/impl/DirectorDaoGeneral.java @@ -0,0 +1,15 @@ +package es.palomafp.aadd.inm.dao.impl; + +import es.palomafp.aadd.inm.dao.IDirectorDAO; + +/** +* +* DirectorDaoGeneral: Clase que representa la implementaci贸n de un Director +* +* @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma +* @date 2 oct 2025 +*/ + +public class DirectorDaoGeneral implements IDirectorDAO { + +} diff --git a/src/es/palomafp/aadd/inm/dao/impl/PaisDaoJAR.java b/src/es/palomafp/aadd/inm/dao/impl/PaisDaoJAR.java new file mode 100644 index 0000000..12f64ed --- /dev/null +++ b/src/es/palomafp/aadd/inm/dao/impl/PaisDaoJAR.java @@ -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; + } + +} diff --git a/src/es/palomafp/aadd/inm/dao/impl/PeliculaDaoGeneral.java b/src/es/palomafp/aadd/inm/dao/impl/PeliculaDaoGeneral.java new file mode 100644 index 0000000..b76e84c --- /dev/null +++ b/src/es/palomafp/aadd/inm/dao/impl/PeliculaDaoGeneral.java @@ -0,0 +1,15 @@ +package es.palomafp.aadd.inm.dao.impl; + +import es.palomafp.aadd.inm.dao.IPeliculaDAO; + +/** +* +* PeliculaDaoGeneral: Clase que representa la implementaci贸n de un Pelicula +* +* @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma +* @date 2 oct 2025 +*/ + +public class PeliculaDaoGeneral implements IPeliculaDAO{ + +} diff --git a/src/es/palomafp/aadd/inm/dao/impl/RepartoDaoJDBC.java b/src/es/palomafp/aadd/inm/dao/impl/RepartoDaoJDBC.java new file mode 100644 index 0000000..5b1b56d --- /dev/null +++ b/src/es/palomafp/aadd/inm/dao/impl/RepartoDaoJDBC.java @@ -0,0 +1,154 @@ +package es.palomafp.aadd.inm.dao.impl; + +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +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 obtenerListaRepartoPeliculasNombreActorTerminaT() { + List 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(); + PreparedStatement pstm = conexion.prepareStatement(sentenciaSQL); + ResultSet resultado = pstm.executeQuery();) { + listaReparto = new ArrayList(); + 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; + } + + @Override + public List obtenerListaRepartoPeliculasNombreActorConPatron(String patron) { + List listaReparto = null; + // try con recursos "cerrables": Connection, Statement, ResultSet + try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC(); + CallableStatement cstmt = conexion.prepareCall("{call obtenerRepartoPeliculasPorActor(?)}");) { + + // El par谩metro es el patr贸n por el que se va a buscar + cstmt.setString(1, patron); + ResultSet resultado = cstmt.executeQuery(); + + listaReparto = new ArrayList(); + 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; + } + +} diff --git a/src/es/palomafp/aadd/inm/gestor/GestorConexionJDBC.java b/src/es/palomafp/aadd/inm/gestor/GestorConexionJDBC.java new file mode 100644 index 0000000..dbe5041 --- /dev/null +++ b/src/es/palomafp/aadd/inm/gestor/GestorConexionJDBC.java @@ -0,0 +1,39 @@ +package es.palomafp.aadd.inm.gestor; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +/** + * + * GestorConexionJDBC: Clase que realiza .... + * @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma + * @date 6 nov 2025 + * + * + */ + +public class GestorConexionJDBC { + + // Constructor privado para evitar instanciaci贸n + private GestorConexionJDBC() { + } + + public static Connection obtenerConexionJDBC() { + Connection conexion = null; + String driverJDBC= GestorFicheroConfiguracion.getValorDeConfiguracion("jdbc.driver"); + try { + Class.forName(driverJDBC); + + String urlJDBC= GestorFicheroConfiguracion.getValorDeConfiguracion("jdbc.url"); + String usuario= GestorFicheroConfiguracion.getValorDeConfiguracion("jdbc.usuario"); + String password= GestorFicheroConfiguracion.getValorDeConfiguracion("jdbc.password"); + + conexion=DriverManager.getConnection(urlJDBC, usuario, password); + } catch (ClassNotFoundException | SQLException e) { + e.printStackTrace(); + } + return conexion; + } +} + diff --git a/src/es/palomafp/aadd/inm/gestor/GestorFicheroConfiguracion.java b/src/es/palomafp/aadd/inm/gestor/GestorFicheroConfiguracion.java new file mode 100644 index 0000000..3a92bc9 --- /dev/null +++ b/src/es/palomafp/aadd/inm/gestor/GestorFicheroConfiguracion.java @@ -0,0 +1,38 @@ +package es.palomafp.aadd.inm.gestor; + +import java.io.FileInputStream; +import java.util.Properties; + +/** + * + * GestorFicheroConfiguracion: Clase que se encarga de gestionar el fichero de configuraci贸n. + * + * + * @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma + * @date 31 oct 2025 + */ +public class GestorFicheroConfiguracion { + private static final String RUTA_FICHERO_CONFIGURACION = "config/config.properties"; + private static Properties propiedades; + + private GestorFicheroConfiguracion() { + // Constructor privado para evitar instanciaci贸n + } + static { + propiedades= new Properties(); + try { + // Fichero que est谩 en el classpath + //propiedades.load(GestorFicheroConfiguracion.class.getClassLoader().getResourceAsStream(RUTA_FICHERO_CONFIGURACION)); + + // Fichero con ruta relativa al proyecto + propiedades.load(new FileInputStream(RUTA_FICHERO_CONFIGURACION)); + } catch (Exception e) { + e.printStackTrace(); + } + } + public static String getValorDeConfiguracion(String clave) { + String valor = null; + valor = propiedades.getProperty(clave); + return valor; + } +} diff --git a/src/es/palomafp/aadd/inm/util/ConversorTiposDatosYFormatos.java b/src/es/palomafp/aadd/inm/util/ConversorTiposDatosYFormatos.java new file mode 100644 index 0000000..b6488a3 --- /dev/null +++ b/src/es/palomafp/aadd/inm/util/ConversorTiposDatosYFormatos.java @@ -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; + } +} + diff --git a/src/es/palomafp/aadd/inm/vo/Actor.java b/src/es/palomafp/aadd/inm/vo/Actor.java new file mode 100644 index 0000000..59b2ae7 --- /dev/null +++ b/src/es/palomafp/aadd/inm/vo/Actor.java @@ -0,0 +1,47 @@ +package es.palomafp.aadd.inm.vo; + +import java.util.Date; + +/** + * + * Actor: Clase que representa el contenido de un Actor + * + * @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma + * @date 2 oct 2025 + */ +public class Actor { + private int identificador; + private String nombre; + private Date fechaNacimiento; + private Pais paisNacimiento; + +public int getIdentificador() { + return identificador; + } + public void setIdentificador(int identificador) { + this.identificador = identificador; + } + public String getNombre() { + return nombre; + } + public void setNombre(String nombre) { + this.nombre = nombre; + } + public Date getFechaNacimiento() { + return fechaNacimiento; + } + public void setFechaNacimiento(Date fechaNacimiento) { + this.fechaNacimiento = fechaNacimiento; + } + public Pais getPaisNacimiento() { + return paisNacimiento; + } + public void setPaisNacimiento(Pais paisNacimiento) { + this.paisNacimiento = paisNacimiento; + } + @Override + public String toString() { + return "Actor [identificador=" + identificador + ", nombre=" + nombre + ", fechaNacimiento=" + fechaNacimiento + + ", paisNacimiento=" + paisNacimiento + "]"; + } +} diff --git a/src/es/palomafp/aadd/inm/vo/Continente.java b/src/es/palomafp/aadd/inm/vo/Continente.java new file mode 100644 index 0000000..121dedf --- /dev/null +++ b/src/es/palomafp/aadd/inm/vo/Continente.java @@ -0,0 +1,31 @@ +package es.palomafp.aadd.inm.vo; + +/** + * + * Continente: Clase que representa el contenido de un Continente + * + * @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma + * @date 2 oct 2025 + */ +public class Continente { + private String codigo; + private String nombre; + + public String getCodigo() { + return codigo; + } + public void setCodigo(String codigo) { + this.codigo = codigo; + } + public String getNombre() { + return nombre; + } + public void setNombre(String nombre) { + this.nombre = nombre; + } + @Override + public String toString() { + return "Continente [codigo=" + codigo + ", nombre=" + nombre + "]"; + } + +} diff --git a/src/es/palomafp/aadd/inm/vo/Director.java b/src/es/palomafp/aadd/inm/vo/Director.java new file mode 100644 index 0000000..5b2d3d7 --- /dev/null +++ b/src/es/palomafp/aadd/inm/vo/Director.java @@ -0,0 +1,47 @@ +package es.palomafp.aadd.inm.vo; + +import java.util.Date; + +/** + * + * Director: Clase que representa el contenido de un Director + * + * @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma + * @date 2 oct 2025 + */ +public class Director { + private int identificador; + private String nombre; + private Date fechaNacimiento; + private Pais paisNacimiento; + +public int getIdentificador() { + return identificador; + } + public void setIdentificador(int identificador) { + this.identificador = identificador; + } + public String getNombre() { + return nombre; + } + public void setNombre(String nombre) { + this.nombre = nombre; + } + public Date getFechaNacimiento() { + return fechaNacimiento; + } + public void setFechaNacimiento(Date fechaNacimiento) { + this.fechaNacimiento = fechaNacimiento; + } + public Pais getPaisNacimiento() { + return paisNacimiento; + } + public void setPaisNacimiento(Pais paisNacimiento) { + this.paisNacimiento = paisNacimiento; + } + @Override + public String toString() { + return "Actor [identificador=" + identificador + ", nombre=" + nombre + ", fechaNacimiento=" + fechaNacimiento + + ", paisNacimiento=" + paisNacimiento + "]"; + } +} diff --git a/src/es/palomafp/aadd/inm/vo/Pais.java b/src/es/palomafp/aadd/inm/vo/Pais.java new file mode 100644 index 0000000..cc91d86 --- /dev/null +++ b/src/es/palomafp/aadd/inm/vo/Pais.java @@ -0,0 +1,44 @@ +package es.palomafp.aadd.inm.vo; + +/** + * + * Pais: Clase que representa el contenido de un Pais + * + * @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma + * @date 2 oct 2025 + */ +public class Pais { + private int identificador; + private String nombre; + private String capital; + private Continente continente; + public int getIdentificador() { + return identificador; + } + public void setIdentificador(int identificador) { + this.identificador = identificador; + } + public String getNombre() { + return nombre; + } + public void setNombre(String nombre) { + this.nombre = nombre; + } + public String getCapital() { + return capital; + } + public void setCapital(String capital) { + this.capital = capital; + } + public Continente getContinente() { + return continente; + } + public void setContinente(Continente continente) { + this.continente = continente; + } + @Override + public String toString() { + return "Pais [identificador=" + identificador + ", nombre=" + nombre + ", capital=" + capital + ", continente=" + + continente + "]\n"; + } +} diff --git a/src/es/palomafp/aadd/inm/vo/Pelicula.java b/src/es/palomafp/aadd/inm/vo/Pelicula.java new file mode 100644 index 0000000..e00c6fd --- /dev/null +++ b/src/es/palomafp/aadd/inm/vo/Pelicula.java @@ -0,0 +1,90 @@ +package es.palomafp.aadd.inm.vo; + +/** + * + * Pelicula: Clase que representa el contenido de un Pelicula + * + * @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma + * @date 2 oct 2025 + */ +public class Pelicula { + private int identificador; + private String titulo; + private int anyo; + private String idioma; + private boolean color; + private String observaciones; + private Director director; + private Pais paisLocalizacion; + + public int getIdentificador() { + return identificador; + } + + public void setIdentificador(int identificador) { + this.identificador = identificador; + } + + public String getTitulo() { + return titulo; + } + + public void setTitulo(String titulo) { + this.titulo = titulo; + } + + public int getAnyo() { + return anyo; + } + + public void setAnyo(int anyo) { + this.anyo = anyo; + } + + public String getIdioma() { + return idioma; + } + + public void setIdioma(String idioma) { + this.idioma = idioma; + } + + public boolean isColor() { + return color; + } + + public void setColor(boolean color) { + this.color = color; + } + + public String getObservaciones() { + return observaciones; + } + + public void setObservaciones(String observaciones) { + this.observaciones = observaciones; + } + + public Director getDirector() { + return director; + } + + public void setDirector(Director director) { + this.director = director; + } + + public Pais getPaisLocalizacion() { + return paisLocalizacion; + } + + public void setPaisLocalizacion(Pais paisLocalizacion) { + this.paisLocalizacion = paisLocalizacion; + } + + @Override + public String toString() { + return "Pelicula [identificador=" + identificador + ", titulo=" + titulo + ", anyo=" + anyo + ", idioma=" + + idioma + ", color=" + color + ", observaciones=" + observaciones + ", director=" + director + + ", paisLocalizacion=" + paisLocalizacion + "]"; + } +} diff --git a/src/es/palomafp/aadd/inm/vo/Reparto.java b/src/es/palomafp/aadd/inm/vo/Reparto.java new file mode 100644 index 0000000..f4b864f --- /dev/null +++ b/src/es/palomafp/aadd/inm/vo/Reparto.java @@ -0,0 +1,36 @@ +package es.palomafp.aadd.inm.vo; + +/** + * + * Reparto: Clase que representa el contenido de un Reparto + * + * @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma + * @date 2 oct 2025 + */ +public class Reparto { + private String personaje; + private Actor actor; + private Pelicula pelicula; + public String getPersonaje() { + return personaje; + } + public void setPersonaje(String personaje) { + this.personaje = personaje; + } + public Actor getActor() { + return actor; + } + public void setActor(Actor actor) { + this.actor = actor; + } + public Pelicula getPelicula() { + return pelicula; + } + public void setPelicula(Pelicula pelicula) { + this.pelicula = pelicula; + } + @Override + public String toString() { + return "Reparto [personaje=" + personaje + ", actor=" + actor + ", pelicula=" + pelicula + "]"; + } +}