From 3ecb6099dc93d55157a553d8706744043c37708b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isidoro=20Nevares=20Mart=C3=ADn?= Date: Fri, 13 Mar 2026 10:19:18 +0100 Subject: [PATCH] Commit inicial --- .classpath | 41 ++++ .gitignore | 3 + .project | 34 ++++ .settings/org.eclipse.jdt.apt.core.prefs | 2 + .settings/org.eclipse.jdt.core.prefs | 14 ++ .settings/org.eclipse.m2e.core.prefs | 4 + README.md | 0 pom.xml | 50 +++++ .../lapaloma/mapamundi/AppMapaMundiSB.java | 14 ++ .../controller/ContinenteController.java | 48 +++++ .../mapamundi/dao/IContinenteDAO.java | 14 ++ .../mapamundi/dao/impl/ContinenteDaoJDBC.java | 181 ++++++++++++++++++ .../gestores/GestorConexionJDBC.java | 29 +++ .../gestores/GestorFicheroConfiguracion.java | 40 ++++ .../mapamundi/service/ContinenteService.java | 42 ++++ .../org/lapaloma/mapamundi/vo/Continente.java | 44 +++++ src/main/resources/config.properties | 6 + 17 files changed, 566 insertions(+) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.apt.core.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 README.md create mode 100644 pom.xml create mode 100644 src/main/java/org/lapaloma/mapamundi/AppMapaMundiSB.java create mode 100644 src/main/java/org/lapaloma/mapamundi/controller/ContinenteController.java create mode 100644 src/main/java/org/lapaloma/mapamundi/dao/IContinenteDAO.java create mode 100644 src/main/java/org/lapaloma/mapamundi/dao/impl/ContinenteDaoJDBC.java create mode 100644 src/main/java/org/lapaloma/mapamundi/gestores/GestorConexionJDBC.java create mode 100644 src/main/java/org/lapaloma/mapamundi/gestores/GestorFicheroConfiguracion.java create mode 100644 src/main/java/org/lapaloma/mapamundi/service/ContinenteService.java create mode 100644 src/main/java/org/lapaloma/mapamundi/vo/Continente.java create mode 100644 src/main/resources/config.properties diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..8e75d71 --- /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..288324d --- /dev/null +++ b/.project @@ -0,0 +1,34 @@ + + + aaee_ra3_proy4 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + + + 1772465433562 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + + diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..d4313d4 --- /dev/null +++ b/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=false diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..79a4c99 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=17 +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.processAnnotations=disabled +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=17 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/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..89169a8 --- /dev/null +++ b/pom.xml @@ -0,0 +1,50 @@ + + 4.0.0 + org.lapaloma.mapamundi + aaee_mapamundi + 0.0.1 + + Prueba de Springboot + Proyecto para poder probar el funcionamiento de SpringBoot + + + org.springframework.boot + spring-boot-starter-parent + 4.0.1 + + + + + 23 + + + + + + org.springframework.boot + spring-boot-starter-web + + + + com.mysql + mysql-connector-j + runtime + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/lapaloma/mapamundi/AppMapaMundiSB.java b/src/main/java/org/lapaloma/mapamundi/AppMapaMundiSB.java new file mode 100644 index 0000000..26910df --- /dev/null +++ b/src/main/java/org/lapaloma/mapamundi/AppMapaMundiSB.java @@ -0,0 +1,14 @@ +package org.lapaloma.mapamundi; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class AppMapaMundiSB { + + public static void main(String[] args) { + SpringApplication.run(AppMapaMundiSB.class, args); + + } + +} \ No newline at end of file diff --git a/src/main/java/org/lapaloma/mapamundi/controller/ContinenteController.java b/src/main/java/org/lapaloma/mapamundi/controller/ContinenteController.java new file mode 100644 index 0000000..d602e82 --- /dev/null +++ b/src/main/java/org/lapaloma/mapamundi/controller/ContinenteController.java @@ -0,0 +1,48 @@ +/** + * + */ +package org.lapaloma.mapamundi.controller; + +import java.util.List; + +import org.lapaloma.mapamundi.service.ContinenteService; +import org.lapaloma.mapamundi.vo.Continente; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Isidoro Nevares Martín - Virgen de la Paloma Fecha creación: 13 mar 2026 + */ +@RestController +@RequestMapping("/api/continentes") +public class ContinenteController { + + private final ContinenteService continenteService = new ContinenteService(); + + // GET /api/continentes - listar todos los continentes + @GetMapping + public List getAll() { + List listaContinentes = continenteService.obtenerListaContinentes(); + return listaContinentes; + } + + // GET /api/continentes/codigo/{codigo} - Obtener un Continente por su código + @GetMapping("/codigo/{codigo}") + public ResponseEntity getByCodigo(@PathVariable("codigo") String codigo) { + Continente continente = continenteService.obtenerContinentePorClave(codigo); + + return continente != null ? ResponseEntity.ok(continente) : ResponseEntity.notFound().build(); + } + + // GET /api/continentes/nombre/{nombre} - Obtener un Continente por su nombre + @GetMapping("/nombre/{nombre}") + public List getByNombre(@PathVariable("nombre") String nombre) { + List listaContinentes = continenteService.obtenerContinentePorNombre(nombre); + + return listaContinentes; + } + +} diff --git a/src/main/java/org/lapaloma/mapamundi/dao/IContinenteDAO.java b/src/main/java/org/lapaloma/mapamundi/dao/IContinenteDAO.java new file mode 100644 index 0000000..0e9ddf7 --- /dev/null +++ b/src/main/java/org/lapaloma/mapamundi/dao/IContinenteDAO.java @@ -0,0 +1,14 @@ +package org.lapaloma.mapamundi.dao; + +import java.util.List; + +import org.lapaloma.mapamundi.vo.Continente; + +public interface IContinenteDAO { + public Continente obtenerContinentePorClave(String codigo) ; + public Continente actualizarContinente(Continente coche) ; + public Continente crearContinente(Continente coche); + public void borrarContinente(Continente coche); + public List obtenerListaContinentes(); + public List obtenerContinentePorNombre(String nombre); +} diff --git a/src/main/java/org/lapaloma/mapamundi/dao/impl/ContinenteDaoJDBC.java b/src/main/java/org/lapaloma/mapamundi/dao/impl/ContinenteDaoJDBC.java new file mode 100644 index 0000000..abbc96e --- /dev/null +++ b/src/main/java/org/lapaloma/mapamundi/dao/impl/ContinenteDaoJDBC.java @@ -0,0 +1,181 @@ +package org.lapaloma.mapamundi.dao.impl; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import org.lapaloma.mapamundi.dao.IContinenteDAO; +import org.lapaloma.mapamundi.gestores.GestorConexionJDBC; +import org.lapaloma.mapamundi.vo.Continente; + +public class ContinenteDaoJDBC implements IContinenteDAO { + + @Override + public Continente obtenerContinentePorClave(String codigo) { + Continente continente = null; + + String sentenciaSQL = """ + SELECT * FROM T_CONTINENTE + WHERE codigo=? + """; + + try (Connection conexion = GestorConexionJDBC.getConexionSGDB(); + PreparedStatement sentenciaJDBCPreparada = conexion.prepareStatement(sentenciaSQL);) { + + sentenciaJDBCPreparada.setString(1, codigo); + System.out.println(sentenciaJDBCPreparada); + + ResultSet resultadoSentencia = sentenciaJDBCPreparada.executeQuery(); + + if (resultadoSentencia.next()) { + continente = getLineaFromResultSet(resultadoSentencia); + } + + } catch (Exception e) { + e.printStackTrace(); + } + + return continente; + } + + @Override + public Continente actualizarContinente(Continente continente) { + + String sentenciaSQL = """ + UPDATE T_CONTINENTE + SET nombre_continente=? + WHERE codigo=? + """; + + try (Connection conexion = GestorConexionJDBC.getConexionSGDB(); + PreparedStatement sentenciaJDBCPreparada = conexion.prepareStatement(sentenciaSQL);) { + + sentenciaJDBCPreparada.setString(1, continente.getNombre()); + sentenciaJDBCPreparada.setString(2, continente.getCodigo()); + + System.out.println(sentenciaJDBCPreparada); + + sentenciaJDBCPreparada.executeUpdate(); + + } catch (Exception e) { + e.printStackTrace(); + } + + return continente; + } + + @Override + public Continente crearContinente(Continente continente) { + + String sentenciaSQL = """ + INSERT INTO T_CONTINENTE (codigo, nombre_continente) + VALUES (?, ?) + """; + + try (Connection conexion = GestorConexionJDBC.getConexionSGDB(); + PreparedStatement sentenciaJDBCPreparada = conexion.prepareStatement(sentenciaSQL);) { + + sentenciaJDBCPreparada.setString(1, continente.getCodigo()); + sentenciaJDBCPreparada.setString(2, continente.getNombre()); + + System.out.println(sentenciaJDBCPreparada); + + sentenciaJDBCPreparada.executeUpdate(); + + } catch (Exception e) { + e.printStackTrace(); + } + + return continente; + } + + @Override + public void borrarContinente(Continente continente) { + + String sentenciaSQL = """ + DELETE FROM T_CONTINENTE + WHERE codigo=? + """; + + try (Connection conexion = GestorConexionJDBC.getConexionSGDB(); + PreparedStatement sentenciaJDBCPreparada = conexion.prepareStatement(sentenciaSQL);) { + + sentenciaJDBCPreparada.setString(1, continente.getCodigo()); + + sentenciaJDBCPreparada.executeUpdate(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public List obtenerListaContinentes() { + + List lista = new ArrayList<>(); + + String sentenciaSQL = """ + SELECT * FROM T_CONTINENTE + """; + + try (Connection conexion = GestorConexionJDBC.getConexionSGDB(); + PreparedStatement sentenciaJDBCPreparada = conexion.prepareStatement(sentenciaSQL);) { + + System.out.println(sentenciaJDBCPreparada); + + ResultSet resultadoSentencia = sentenciaJDBCPreparada.executeQuery(); + + while (resultadoSentencia.next()) { + lista.add(getLineaFromResultSet(resultadoSentencia)); + } + + } catch (Exception e) { + e.printStackTrace(); + } + + return lista; + } + + @Override + public List obtenerContinentePorNombre(String nombre) { + + List lista = new ArrayList<>(); + + String sentenciaSQL = """ + SELECT * FROM T_CONTINENTE + WHERE nombre_continente LIKE ? + """; + + try (Connection conexion = GestorConexionJDBC.getConexionSGDB(); + PreparedStatement sentenciaJDBCPreparada = conexion.prepareStatement(sentenciaSQL);) { + + sentenciaJDBCPreparada.setString(1, "%" + nombre + "%"); + + System.out.println(sentenciaJDBCPreparada); + + ResultSet resultadoSentencia = sentenciaJDBCPreparada.executeQuery(); + + while (resultadoSentencia.next()) { + lista.add(getLineaFromResultSet(resultadoSentencia)); + } + + } catch (Exception e) { + e.printStackTrace(); + } + + return lista; + } + + private Continente getLineaFromResultSet(ResultSet resultadoSentencia) throws SQLException { + + Continente continente = new Continente(); + + continente.setCodigo(resultadoSentencia.getString("codigo")); + continente.setNombre(resultadoSentencia.getString("nombre_continente")); + + return continente; + } +} \ No newline at end of file diff --git a/src/main/java/org/lapaloma/mapamundi/gestores/GestorConexionJDBC.java b/src/main/java/org/lapaloma/mapamundi/gestores/GestorConexionJDBC.java new file mode 100644 index 0000000..6d3b856 --- /dev/null +++ b/src/main/java/org/lapaloma/mapamundi/gestores/GestorConexionJDBC.java @@ -0,0 +1,29 @@ +package org.lapaloma.mapamundi.gestores; + +import java.sql.Connection; +import java.sql.DriverManager; + +public class GestorConexionJDBC { + + // Evita que pueda construirse un objeto de la clase. + private GestorConexionJDBC() { + } + + public static Connection getConexionSGDB() throws Exception { + Connection conexionSGDB = null; + + // Datos URL + String urlBBDD = GestorFicheroConfiguracion.obtenerValor("jdbc.url"); + + String usuario = GestorFicheroConfiguracion.obtenerValor("jdbc.usuario"); + String contrasenya = GestorFicheroConfiguracion.obtenerValor("jdbc.password"); + + String claseDriver = GestorFicheroConfiguracion.obtenerValor("jdbc.driver"); + Class.forName(claseDriver); + + conexionSGDB = DriverManager.getConnection(urlBBDD, usuario, contrasenya); + + return conexionSGDB; + } + +} diff --git a/src/main/java/org/lapaloma/mapamundi/gestores/GestorFicheroConfiguracion.java b/src/main/java/org/lapaloma/mapamundi/gestores/GestorFicheroConfiguracion.java new file mode 100644 index 0000000..ba16f14 --- /dev/null +++ b/src/main/java/org/lapaloma/mapamundi/gestores/GestorFicheroConfiguracion.java @@ -0,0 +1,40 @@ +/** + * + */ +package org.lapaloma.mapamundi.gestores; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +/** +* @author Isidoro Nevares Martín - IES Virgen de la Paloma +* @date 20 feb 2026 +* +*/ +public class GestorFicheroConfiguracion { + private static final Properties PROPIEDADES = new Properties(); + + static { + try (InputStream is = GestorFicheroConfiguracion.class.getClassLoader() + .getResourceAsStream("config.properties")) { + if (is != null) { + PROPIEDADES.load(is); + } else { + throw new IllegalStateException("No se encontró application.properties en el classpath"); + } + } catch (IOException e) { + throw new IllegalStateException("Error al cargar application.properties", e); + } + } + + /** + * Obtiene el valor asociado a la clave especificada. + * + * @param clave la clave a buscar + * @return el valor o {@code null} si no existe + */ + public static String obtenerValor(String clave) { + return PROPIEDADES.getProperty(clave); + } +} diff --git a/src/main/java/org/lapaloma/mapamundi/service/ContinenteService.java b/src/main/java/org/lapaloma/mapamundi/service/ContinenteService.java new file mode 100644 index 0000000..19f9961 --- /dev/null +++ b/src/main/java/org/lapaloma/mapamundi/service/ContinenteService.java @@ -0,0 +1,42 @@ +/** + * + */ +package org.lapaloma.mapamundi.service; + +import java.util.List; + +import org.lapaloma.mapamundi.dao.IContinenteDAO; +import org.lapaloma.mapamundi.dao.impl.ContinenteDaoJDBC; +import org.lapaloma.mapamundi.vo.Continente; + +/** + * Isidoro Nevares Martín - Virgen de la Paloma Fecha creación: 13 mar 2026 + */ +public class ContinenteService { + IContinenteDAO continenteDAO = new ContinenteDaoJDBC(); + + public Continente obtenerContinentePorClave(String codigo) { + Continente continente = null; + + continente = continenteDAO.obtenerContinentePorClave(codigo); + + return continente; + } + + public List obtenerListaContinentes() { + List listaContinentes = null; + + listaContinentes = continenteDAO.obtenerListaContinentes(); + + return listaContinentes; + } + + public List obtenerContinentePorNombre(String nombre) { + List listaContinentes = null; + + listaContinentes = continenteDAO.obtenerContinentePorNombre(nombre); + + return listaContinentes; + } + +} diff --git a/src/main/java/org/lapaloma/mapamundi/vo/Continente.java b/src/main/java/org/lapaloma/mapamundi/vo/Continente.java new file mode 100644 index 0000000..8bfd4e8 --- /dev/null +++ b/src/main/java/org/lapaloma/mapamundi/vo/Continente.java @@ -0,0 +1,44 @@ +package org.lapaloma.mapamundi.vo; + +/** + * + * Coche: Clase de persistencia que representa un coche de un concesionario. + * + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 03 marzo 2026 + * + * + */ +public class Continente { + private String codigo; + private String nombre; + + public Continente(String codigo, String nombre) { + super(); + this.codigo = codigo; + this.nombre = nombre; + } + + public Continente() { + super(); + } + + 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 "Coche [codigo=" + codigo + ", nombre=" + nombre + "]"; + } + + +} diff --git a/src/main/resources/config.properties b/src/main/resources/config.properties new file mode 100644 index 0000000..b84feba --- /dev/null +++ b/src/main/resources/config.properties @@ -0,0 +1,6 @@ +# Parámetros de conexión a la base de datos MapaMundi en SGDB MySQL +jdbc.driver = com.mysql.cj.jdbc.Driver +jdbc.url = jdbc:mysql://23.21.171.246:3306/mapa_mundi +jdbc.usuario = isidoronm +jdbc.password = 1234 +