diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f1d3ca --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target/ +*.class \ No newline at end of file diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 98e20ac..bfac099 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,13 +1,13 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=24 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 +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=ignore +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.source=24 diff --git a/config/conf.properties b/config/conf.properties deleted file mode 100644 index be58260..0000000 --- a/config/conf.properties +++ /dev/null @@ -1,5 +0,0 @@ -# Par醡etros de conexi髇 a la base de datos MapaMundi en SGDB MySQL -jdbc.driver = com.mysql.cj.jdbc.Driver -jdbc.url = jdbc:mysql://192.168.1.35:3306/Mapamundi -jdbc.usuario = root -jdbc.password = mysql_123 diff --git a/pom.xml b/pom.xml index 3d49bea..8c07031 100644 --- a/pom.xml +++ b/pom.xml @@ -3,4 +3,13 @@ aadd_act2_3 aadd_act2_3 0.0.1-SNAPSHOT + + + + com.mysql + mysql-connector-j + 9.5.0 + + + \ No newline at end of file diff --git a/src/main/java/es/palomafp/aadd/inm/GestorMapaMundi.java b/src/main/java/es/palomafp/aadd/inm/GestorMapaMundi.java index a4fcffe..08c7a71 100644 --- a/src/main/java/es/palomafp/aadd/inm/GestorMapaMundi.java +++ b/src/main/java/es/palomafp/aadd/inm/GestorMapaMundi.java @@ -1,8 +1,14 @@ package es.palomafp.aadd.inm; +import java.util.List; import java.util.Scanner; -import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion; +import es.palomafp.aadd.inm.dao.IContinenteDAO; +import es.palomafp.aadd.inm.dao.IPaisDAO; +import es.palomafp.aadd.inm.dao.impl.ContinenteDaoJDBC; +import es.palomafp.aadd.inm.dao.impl.PaisDaoJDBC; +import es.palomafp.aadd.inm.vo.Continente; +import es.palomafp.aadd.inm.vo.Pais; /** * @@ -15,8 +21,8 @@ import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion; public class GestorMapaMundi { public static void main(String[] args) { - String urlJDBC= GestorFicheroConfiguracion.getValorDeConfiguracion("jdbc.url"); - System.out.println(urlJDBC); + GestorMapaMundi gestor = new GestorMapaMundi(); + Scanner scanner = new Scanner(System.in); // Crear el scanner System.out.println("Introduce una opci贸n de procesamiento sobre Mapa Mundi."); @@ -28,19 +34,68 @@ public class GestorMapaMundi { switch (opcion) { case "1": - System.out.println("Opci贸n 1: Consultar pa铆ses del continente americao que empiezan por Sa"); + System.out.println("Opci贸n 1: Consultar pa铆ses del continente americano que empiezan por Sa"); + List listaPaises =gestor.consultarPaisesAmericanosEmpiezanSa(); + for(Pais pais : listaPaises) { + String infoPais = "%s (%d) pertenece al continente %s (%s)"; + infoPais = String.format(infoPais, pais.getNombre(), pais.getIdentificador(), + pais.getContinente().getNombre(), pais.getContinente().getCodigo()); + + System.out.println(infoPais); + } break; case "2": System.out.println("Opci贸n 2: A帽adir nuevo continente."); + Continente continente = new Continente(); + continente.setCodigo("06"); + continente.setNombre("Ant谩rtida"); + gestor.anyadirContinente(continente); break; case "3": System.out.println("Opci贸n 3: Actualizar el pa铆s con c贸digo 107. capital -> Capital City."); + gestor.actualizarPaisCodigo107(); break; case "4": System.out.println("Opci贸n 4: Eliminar el continente con c贸digo 02."); + gestor.eliminarContinente("02"); break; } scanner.close(); } + + public List consultarPaisesAmericanosEmpiezanSa() { + List listaPaises = null; + + IPaisDAO paisDAO = new PaisDaoJDBC(); + listaPaises = paisDAO.obtenerListaPaisesAmericanosEmpiezanSa(); + + return listaPaises; + } + + public void eliminarContinente(String codigo) { + IContinenteDAO continenteDAO = new ContinenteDaoJDBC(); + continenteDAO.eliminarContinentePorCodigo(codigo); + } + + public Pais actualizarPaisCodigo107() { + Pais pais = null; + int identificadorPais = 107; + + IPaisDAO paisDAO = new PaisDaoJDBC(); + pais = paisDAO.obtenerPaisPorID(identificadorPais); + pais.setCapital("Capital City"); + paisDAO.actualizarPais(pais); + + pais = paisDAO.obtenerPaisPorID(identificadorPais); + + return pais; + } + + public void anyadirContinente(Continente continente) { + IContinenteDAO continenteDAO = new ContinenteDaoJDBC(); + continenteDAO.anyadirContinente(continente); + System.out.println("Se ha creado el continente: " + continente); + + } } diff --git a/src/main/java/es/palomafp/aadd/inm/dao/IContinenteDAO.java b/src/main/java/es/palomafp/aadd/inm/dao/IContinenteDAO.java index bccca50..ca4fe83 100644 --- a/src/main/java/es/palomafp/aadd/inm/dao/IContinenteDAO.java +++ b/src/main/java/es/palomafp/aadd/inm/dao/IContinenteDAO.java @@ -1,5 +1,7 @@ package es.palomafp.aadd.inm.dao; +import es.palomafp.aadd.inm.vo.Continente; + /** * * IContinenteDAO: Interfaz que define las operaciones de acceso a datos para Continente. @@ -8,4 +10,6 @@ package es.palomafp.aadd.inm.dao; * @date 31 oct 2025 */ public interface IContinenteDAO { + void anyadirContinente(Continente continente); + void eliminarContinentePorCodigo(String codigo); } diff --git a/src/main/java/es/palomafp/aadd/inm/dao/IPaisDAO.java b/src/main/java/es/palomafp/aadd/inm/dao/IPaisDAO.java index 6d53e2f..53c9be1 100644 --- a/src/main/java/es/palomafp/aadd/inm/dao/IPaisDAO.java +++ b/src/main/java/es/palomafp/aadd/inm/dao/IPaisDAO.java @@ -12,5 +12,7 @@ import es.palomafp.aadd.inm.vo.Pais; * @date 31 oct 2025 */ public interface IPaisDAO { - List obtenerListaPaises(String codigoContinente); + Pais obtenerPaisPorID(int identificador); + List obtenerListaPaisesAmericanosEmpiezanSa(); + void actualizarPais(Pais pais); } diff --git a/src/main/java/es/palomafp/aadd/inm/dao/impl/ContinenteDaoJDBC.java b/src/main/java/es/palomafp/aadd/inm/dao/impl/ContinenteDaoJDBC.java index af0acc7..cb1232a 100644 --- a/src/main/java/es/palomafp/aadd/inm/dao/impl/ContinenteDaoJDBC.java +++ b/src/main/java/es/palomafp/aadd/inm/dao/impl/ContinenteDaoJDBC.java @@ -1,6 +1,12 @@ package es.palomafp.aadd.inm.dao.impl; +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.Statement; + import es.palomafp.aadd.inm.dao.IContinenteDAO; +import es.palomafp.aadd.inm.gestor.GestorConexionJDBC; +import es.palomafp.aadd.inm.vo.Continente; /** * @@ -10,4 +16,44 @@ import es.palomafp.aadd.inm.dao.IContinenteDAO; * @date 31 oct 2025 */ public class ContinenteDaoJDBC implements IContinenteDAO { + + @Override + public void anyadirContinente(Continente continente) { + String sentenciaSQL = "INSERT INTO T_CONTINENTE (codigo, nombre_continente) VALUES ('%s', '%s')"; + + sentenciaSQL = String.format(sentenciaSQL, continente.getCodigo(), continente.getNombre()); + + // try con recursos "cerrables": Connection, Statement + try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC(); + Statement stm = conexion.createStatement();) { + stm.executeUpdate(sentenciaSQL); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + @Override + public void eliminarContinentePorCodigo(String codigo) { + String sentenciaBorradoPaisesSQL = "DELETE FROM T_PAIS WHERE cod_continente='%s'"; + sentenciaBorradoPaisesSQL = String.format(sentenciaBorradoPaisesSQL, codigo); + + String sentenciaBorradoContinenteSQL = "DELETE FROM T_CONTINENTE WHERE codigo='%s'"; + sentenciaBorradoContinenteSQL = String.format(sentenciaBorradoContinenteSQL, codigo); + + // try con recursos "cerrables": Connection, Statement + try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC(); + Statement stm = conexion.createStatement();) { + + // Se desactiva 'autocommit' para manejar la transacci贸n manualmente + conexion.setAutoCommit(false); + stm.executeUpdate(sentenciaBorradoPaisesSQL); + stm.executeUpdate(sentenciaBorradoContinenteSQL); + + // Confirmamos la transacci贸n + conexion.commit(); + } catch (SQLException e) { + e.printStackTrace(); + } + + } } diff --git a/src/main/java/es/palomafp/aadd/inm/dao/impl/PaisDaoJDBC.java b/src/main/java/es/palomafp/aadd/inm/dao/impl/PaisDaoJDBC.java index 510998a..b67f254 100644 --- a/src/main/java/es/palomafp/aadd/inm/dao/impl/PaisDaoJDBC.java +++ b/src/main/java/es/palomafp/aadd/inm/dao/impl/PaisDaoJDBC.java @@ -1,9 +1,15 @@ 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.IPaisDAO; -import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion; +import es.palomafp.aadd.inm.gestor.GestorConexionJDBC; +import es.palomafp.aadd.inm.vo.Continente; import es.palomafp.aadd.inm.vo.Pais; /** @@ -13,13 +19,88 @@ import es.palomafp.aadd.inm.vo.Pais; * @author Isidoro Nevares Mart铆n - IES Virgen de la Paloma * @date 31 oct 2025 */ -public class PaisDaoJDBC implements IPaisDAO{ +public class PaisDaoJDBC implements IPaisDAO { @Override - public List obtenerListaPaises(String codigoContinente) { - // TODO Auto-generated method stub - String urlJDBC= GestorFicheroConfiguracion.getValorDeConfiguracion("jdbc.url"); - System.out.println("urlJDBC: "+urlJDBC); - return null; + public List obtenerListaPaisesAmericanosEmpiezanSa() { + List listaPaises = null; + String sentenciaSQL = """ + SELECT * + FROM T_PAIS p join T_CONTINENTE c + on cod_continente= codigo + WHERE codigo='02' AND p.nombre_pais LIKE 'Sa%' + """; + + // try con recursos "cerrables": Connection, Statement, ResultSet + try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC(); + Statement stm = conexion.createStatement(); + ResultSet resultado = stm.executeQuery(sentenciaSQL);) { + listaPaises = new ArrayList(); + while (resultado.next()) { + // Completar los atributos de continente + Continente continente = new Continente(); + continente.setCodigo(resultado.getString("codigo")); + continente.setNombre(resultado.getString("nombre_continente")); + + Pais pais = new Pais(); + pais.setIdentificador(resultado.getInt("identificador")); + pais.setNombre(resultado.getString("nombre_pais")); + pais.setCapital(resultado.getString("capital")); + pais.setContinente(continente); + + listaPaises.add(pais); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return listaPaises; } + + @Override + public void actualizarPais(Pais pais) { + String sentenciaSQL = "update T_PAIS set capital= '%s' WHERE identificador=%d"; + sentenciaSQL = String.format(sentenciaSQL, pais.getCapital(), pais.getIdentificador()); + + // try con recursos "cerrables": Connection, Statement + try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC(); + Statement stm = conexion.createStatement();) { + stm.executeUpdate(sentenciaSQL); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + @Override + public Pais obtenerPaisPorID(int identificador) { + Pais pais = null; + String sentenciaSQL = """ + SELECT * + FROM T_PAIS p join T_CONTINENTE c + on cod_continente= codigo + WHERE identificador=%d + """; + sentenciaSQL = String.format(sentenciaSQL, identificador); + + // try con recursos "cerrables": Connection, Statement, ResultSet + try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC(); + Statement stm = conexion.createStatement(); + ResultSet resultado = stm.executeQuery(sentenciaSQL);) { + if (resultado.next()) { + // Completar los atributos de continente + Continente continente = new Continente(); + continente.setCodigo(resultado.getString("codigo")); + continente.setNombre(resultado.getString("nombre_continente")); + + pais = new Pais(); + pais.setIdentificador(resultado.getInt("identificador")); + pais.setNombre(resultado.getString("nombre_pais")); + pais.setCapital(resultado.getString("capital")); + pais.setContinente(continente); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return pais; + } + } diff --git a/src/main/java/es/palomafp/aadd/inm/gestor/GestorConexionJDBC.java b/src/main/java/es/palomafp/aadd/inm/gestor/GestorConexionJDBC.java new file mode 100644 index 0000000..dbe5041 --- /dev/null +++ b/src/main/java/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/main/java/es/palomafp/aadd/inm/gestor/GestorFicheroConfiguracion.java b/src/main/java/es/palomafp/aadd/inm/gestor/GestorFicheroConfiguracion.java index 08852f9..bd2a0b6 100644 --- a/src/main/java/es/palomafp/aadd/inm/gestor/GestorFicheroConfiguracion.java +++ b/src/main/java/es/palomafp/aadd/inm/gestor/GestorFicheroConfiguracion.java @@ -1,6 +1,5 @@ package es.palomafp.aadd.inm.gestor; -import java.io.FileInputStream; import java.util.Properties; /** @@ -22,10 +21,10 @@ public class GestorFicheroConfiguracion { propiedades= new Properties(); try { // 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 - propiedades.load(new FileInputStream(RUTA_FICHERO_CONFIGURACION)); +// propiedades.load(new FileInputStream(RUTA_FICHERO_CONFIGURACION)); } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/resources/config/conf.properties b/src/main/resources/config/conf.properties index be58260..91412b1 100644 --- a/src/main/resources/config/conf.properties +++ b/src/main/resources/config/conf.properties @@ -1,5 +1,5 @@ # Par醡etros de conexi髇 a la base de datos MapaMundi en SGDB MySQL jdbc.driver = com.mysql.cj.jdbc.Driver -jdbc.url = jdbc:mysql://192.168.1.35:3306/Mapamundi +jdbc.url = jdbc:mysql://192.168.1.36:3306/Mapamundi jdbc.usuario = root jdbc.password = mysql_123 diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF deleted file mode 100644 index a297ac5..0000000 --- a/target/classes/META-INF/MANIFEST.MF +++ /dev/null @@ -1,4 +0,0 @@ -Manifest-Version: 1.0 -Build-Jdk-Spec: 25 -Created-By: Maven Integration for Eclipse - diff --git a/target/classes/META-INF/maven/aadd_act2_3/aadd_act2_3/pom.properties b/target/classes/META-INF/maven/aadd_act2_3/aadd_act2_3/pom.properties deleted file mode 100644 index 2815589..0000000 --- a/target/classes/META-INF/maven/aadd_act2_3/aadd_act2_3/pom.properties +++ /dev/null @@ -1,7 +0,0 @@ -#Generated by Maven Integration for Eclipse -#Mon Nov 03 10:44:08 CET 2025 -artifactId=aadd_act2_3 -groupId=aadd_act2_3 -m2e.projectLocation=C\:\\Users\\ineva\\INM\\Personal\\Trabajo\\00-Educaci\u00F3n - CM\\10-Curso 2025-2026\\02-Acceso de datos -DAM2\\workspace\\aadd_act2_3 -m2e.projectName=aadd_act2_3 -version=0.0.1-SNAPSHOT diff --git a/target/classes/META-INF/maven/aadd_act2_3/aadd_act2_3/pom.xml b/target/classes/META-INF/maven/aadd_act2_3/aadd_act2_3/pom.xml deleted file mode 100644 index 3d49bea..0000000 --- a/target/classes/META-INF/maven/aadd_act2_3/aadd_act2_3/pom.xml +++ /dev/null @@ -1,6 +0,0 @@ - - 4.0.0 - aadd_act2_3 - aadd_act2_3 - 0.0.1-SNAPSHOT - \ No newline at end of file diff --git a/target/classes/config/conf.properties b/target/classes/config/conf.properties deleted file mode 100644 index be58260..0000000 --- a/target/classes/config/conf.properties +++ /dev/null @@ -1,5 +0,0 @@ -# Par醡etros de conexi髇 a la base de datos MapaMundi en SGDB MySQL -jdbc.driver = com.mysql.cj.jdbc.Driver -jdbc.url = jdbc:mysql://192.168.1.35:3306/Mapamundi -jdbc.usuario = root -jdbc.password = mysql_123 diff --git a/target/classes/es/palomafp/aadd/inm/GestorMapaMundi.class b/target/classes/es/palomafp/aadd/inm/GestorMapaMundi.class deleted file mode 100644 index dc60014..0000000 Binary files a/target/classes/es/palomafp/aadd/inm/GestorMapaMundi.class and /dev/null differ diff --git a/target/classes/es/palomafp/aadd/inm/dao/IContinenteDAO.class b/target/classes/es/palomafp/aadd/inm/dao/IContinenteDAO.class deleted file mode 100644 index 5ab11b9..0000000 Binary files a/target/classes/es/palomafp/aadd/inm/dao/IContinenteDAO.class and /dev/null differ diff --git a/target/classes/es/palomafp/aadd/inm/dao/IPaisDAO.class b/target/classes/es/palomafp/aadd/inm/dao/IPaisDAO.class deleted file mode 100644 index db9da9c..0000000 Binary files a/target/classes/es/palomafp/aadd/inm/dao/IPaisDAO.class and /dev/null differ diff --git a/target/classes/es/palomafp/aadd/inm/dao/impl/ContinenteDaoJDBC.class b/target/classes/es/palomafp/aadd/inm/dao/impl/ContinenteDaoJDBC.class deleted file mode 100644 index c84bac5..0000000 Binary files a/target/classes/es/palomafp/aadd/inm/dao/impl/ContinenteDaoJDBC.class and /dev/null differ diff --git a/target/classes/es/palomafp/aadd/inm/dao/impl/PaisDaoJDBC.class b/target/classes/es/palomafp/aadd/inm/dao/impl/PaisDaoJDBC.class deleted file mode 100644 index 705eb0e..0000000 Binary files a/target/classes/es/palomafp/aadd/inm/dao/impl/PaisDaoJDBC.class and /dev/null differ diff --git a/target/classes/es/palomafp/aadd/inm/gestor/GestorFicheroConfiguracion.class b/target/classes/es/palomafp/aadd/inm/gestor/GestorFicheroConfiguracion.class deleted file mode 100644 index 82240a4..0000000 Binary files a/target/classes/es/palomafp/aadd/inm/gestor/GestorFicheroConfiguracion.class and /dev/null differ diff --git a/target/classes/es/palomafp/aadd/inm/vo/Continente.class b/target/classes/es/palomafp/aadd/inm/vo/Continente.class deleted file mode 100644 index 699d8ea..0000000 Binary files a/target/classes/es/palomafp/aadd/inm/vo/Continente.class and /dev/null differ diff --git a/target/classes/es/palomafp/aadd/inm/vo/Pais.class b/target/classes/es/palomafp/aadd/inm/vo/Pais.class deleted file mode 100644 index 33dc118..0000000 Binary files a/target/classes/es/palomafp/aadd/inm/vo/Pais.class and /dev/null differ