commit a70c16f69dc49fc4f47b3de1b621136a68870a03 Author: Isidoro Nevares Martín Date: Mon Nov 10 09:57:05 2025 +0100 primer commit diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..51a6fca --- /dev/null +++ b/.classpath @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/.project b/.project new file mode 100644 index 0000000..66b73aa --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + proyectos_lapaloma_sb + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..afad906 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 +encoding/=UTF-8 +encoding/src=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..5e4ec05 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.methodParameters=generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +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.release=enabled +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/pom.xml b/pom.xml new file mode 100644 index 0000000..c779479 --- /dev/null +++ b/pom.xml @@ -0,0 +1,94 @@ + + + 4.0.0 + ies.lapaloma.proyectos.sb + ies_lapaloma_proyectos_sb + 1.0.1 + Demo project for Spring Boot + + + + org.springframework.boot + spring-boot-starter-parent + 3.4.0 + + + + + + local-repo + file://${user.home}/.m2/repository + + + + + + + ies.lapaloma.proyectos + ies_lapaloma_proyectos + 1.0.1 + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-web + + + + org.projectlombok + lombok + true + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.8.4 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + org.projectlombok + lombok + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + + 23 + + + \ No newline at end of file diff --git a/src/main/java/org/lapaloma/aadd/api/proyectos/AppPrincipalSpringBoot.java b/src/main/java/org/lapaloma/aadd/api/proyectos/AppPrincipalSpringBoot.java new file mode 100644 index 0000000..11c413c --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/api/proyectos/AppPrincipalSpringBoot.java @@ -0,0 +1,13 @@ +package org.lapaloma.aadd.api.proyectos; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class AppPrincipalSpringBoot { + + public static void main(String[] args) { + SpringApplication.run(AppPrincipalSpringBoot.class, args); + } + +} diff --git a/src/main/java/org/lapaloma/aadd/api/proyectos/config/WebConfig.java b/src/main/java/org/lapaloma/aadd/api/proyectos/config/WebConfig.java new file mode 100644 index 0000000..14b2058 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/api/proyectos/config/WebConfig.java @@ -0,0 +1,27 @@ +/** + * + */ +package org.lapaloma.aadd.api.proyectos.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/* +Organización: Virgen de la Paloma +Programador: Isidoro Nevares Martín +Fecha: 18 feb 2025 +*/ + +@Configuration +public class WebConfig implements WebMvcConfigurer { + @Override + public void addCorsMappings(CorsRegistry registry) { + // Permitir acceso desde cualquier dominio + registry.addMapping("/**") // Aplica a todos los endpoints + .allowedOrigins("*") // Permite solicitudes desde cualquier origen + .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // Métodos HTTP permitidos + .allowedHeaders("*") // Permite cualquier encabezado + .allowCredentials(false); // Permite enviar credenciales como cookies, etc. + } +} diff --git a/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/ConceptoControlador.java b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/ConceptoControlador.java new file mode 100644 index 0000000..f1e2c08 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/ConceptoControlador.java @@ -0,0 +1,147 @@ +package org.lapaloma.aadd.api.proyectos.controlador; + +import java.util.List; + +import org.palomafp.dam2.aadd.proyectos.dao.IOperacionesCRUDMasConsultasEntidad; +import org.palomafp.dam2.aadd.proyectos.dao.impl.ConceptoDaoJPA; +import org.palomafp.dam2.aadd.proyectos.exceptions.ProyectosIESException; +import org.palomafp.dam2.aadd.proyectos.vo.Concepto; +import org.palomafp.dam2.aadd.proyectos.vo.CursoAcademico; +import org.palomafp.dam2.aadd.proyectos.vo.Proyecto; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api") // La ruta base de tu API +public class ConceptoControlador { + + // Se podría haber preparado para que la implementación fuera inyectada por SpringBoot + private final IOperacionesCRUDMasConsultasEntidad implDaoConcepto = new ConceptoDaoJPA(); + + + @GetMapping(value = "/conceptos") + public ResponseEntity> obtenerListaConceptos() { + List listaConceptos = null; + + try { + listaConceptos = implDaoConcepto.obtenerListaEntidades(); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaConceptos); // Devuelve 200 OK con la lista de coches + } + + @GetMapping("/concepto/{id}") + public ResponseEntity obtenerConcepto( @PathVariable("id") Integer identificador) { + Concepto coche= null; + try { + coche = implDaoConcepto.obtenerEntidadPorID(identificador); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(coche); // Devuelve 200 OK con la lista de coches + } + + @GetMapping("/conceptos/curso/{codCursoAcademico}") + public ResponseEntity> obtenerConceptosPorCurso(@PathVariable("codCursoAcademico") String codCursoAcademico) { + List listaConceptos = null; + + CursoAcademico curso = new CursoAcademico(); + curso.setCodigo(codCursoAcademico); + + try { + listaConceptos = implDaoConcepto.obtenerListaEntidadesPorCursoAcademico(curso); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaConceptos); // Devuelve 200 OK con la lista de Concepto + } + + @GetMapping("/conceptos/proyecto/{idProyecto}") + public ResponseEntity> obtenerConceptosPorProyecto(@PathVariable("idProyecto") Integer idProyecto) { + List listaConceptos = null; + + Proyecto proyecto = new Proyecto(); + proyecto.setIdentificador(idProyecto); + + try { + listaConceptos = implDaoConcepto.obtenerListaEntidadesPorProyecto(proyecto); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaConceptos); // Devuelve 200 OK con la lista de Concepto + } + + @GetMapping("/conceptos/proyecto/{idProyecto}/curso/{codCursoAcademico}") + public ResponseEntity> obtenerConceptosPorProyectoYCurso( + @PathVariable("codCursoAcademico") String codCursoAcademico, + @PathVariable("idProyecto") Integer idProyecto) { + List listaConceptos = null; + + CursoAcademico curso = new CursoAcademico(); + curso.setCodigo(codCursoAcademico); + + Proyecto proyecto = new Proyecto(); + proyecto.setIdentificador(idProyecto); + + + try { + listaConceptos = implDaoConcepto.obtenerListaEntidadesPorProyectoCurso(proyecto, curso); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaConceptos); // Devuelve 200 OK con la lista de Concepto + } + + @DeleteMapping("/concepto/{id}") + public ResponseEntity eliminarConcepto(@PathVariable("id") int id) { + Concepto concepto=new Concepto(); + concepto.setIdentificador(id); + + try { + implDaoConcepto.eliminarEntidad(concepto); + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body("Error interno en el servidor"); // Devuelve 500 Internal Server Error si hay un fallo inesperado + } + return ResponseEntity.status(200).build(); + } + + @PostMapping("/concepto") + public ResponseEntity crearConcepto(@RequestBody Concepto concepto) { + try { + implDaoConcepto.insertarEntidad(concepto); + return ResponseEntity.status(201).body(concepto); // Devuelve un 201 Created con el Concepto creado + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body(null); // Devuelve 500 si ocurre un error + } + } + + @PutMapping("/concepto/{id}") + public ResponseEntity actualizarProyecto(@PathVariable("id") int id, @RequestBody Concepto concepto) { + try { + concepto.setIdentificador(id); // Asegúrate de que el ID del coche se actualice en el DTO + implDaoConcepto.actualizarEntidad(concepto); // Llama al servicio para actualizar el Concepto + return ResponseEntity.status(200).body(concepto); // Devuelve el Concepto actualizado con un 200 OK + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body(null); // Devuelve 500 si ocurre un error + } + } + + +} diff --git a/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/ControladorInicio.java b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/ControladorInicio.java new file mode 100644 index 0000000..e8d7587 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/ControladorInicio.java @@ -0,0 +1,18 @@ +package org.lapaloma.aadd.api.proyectos.controlador; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.view.RedirectView; + +import io.swagger.v3.oas.annotations.Hidden; + +@Hidden +@RestController +public class ControladorInicio { + + @RequestMapping("/") + public RedirectView redirigirASwagger() { + // Redirige a Swagger UI + return new RedirectView("/swagger-ui/index.html"); + } +} diff --git a/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/CursoAcademicoControlador.java b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/CursoAcademicoControlador.java new file mode 100644 index 0000000..c9acaa6 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/CursoAcademicoControlador.java @@ -0,0 +1,90 @@ +package org.lapaloma.aadd.api.proyectos.controlador; + +import java.util.List; + +import org.palomafp.dam2.aadd.proyectos.dao.IOperacionesCRUDEntidad; +import org.palomafp.dam2.aadd.proyectos.dao.impl.CursoAcademicoDaoJPA; +import org.palomafp.dam2.aadd.proyectos.exceptions.ProyectosIESException; +import org.palomafp.dam2.aadd.proyectos.vo.CursoAcademico; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api") // La ruta base de tu API +public class CursoAcademicoControlador { + + // Se podría haber preparado para que la implementación fuera inyectada por SpringBoot + private final IOperacionesCRUDEntidad implDaoCursosAcademicos = new CursoAcademicoDaoJPA(); + + + @GetMapping(value = "/cursos") + public ResponseEntity> obtenerListaCursosAcademicos() { + List listaCursoAcademicos = null; + + try { + listaCursoAcademicos = implDaoCursosAcademicos.obtenerListaEntidades(); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaCursoAcademicos); // Devuelve 200 OK con la lista de CursoAcademico + } + + @GetMapping("/curso/{codigo}") + public ResponseEntity obtenerCursoAcademico( @PathVariable("codigo") String codigo) { + CursoAcademico cursoAcademico= null; + try { + cursoAcademico = implDaoCursosAcademicos.obtenerEntidadPorID(codigo); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(cursoAcademico); // Devuelve 200 OK con la lista de CursoAcademico + } + + @DeleteMapping("/curso/{codigo}") + public ResponseEntity eliminarCursoAcademico(@PathVariable("codigo") String codigoCurso) { + CursoAcademico cursoAcademico=new CursoAcademico(); + cursoAcademico.setCodigo(codigoCurso); + + try { + implDaoCursosAcademicos.eliminarEntidad(cursoAcademico); + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body("Error interno en el servidor"); // Devuelve 500 Internal Server Error si hay un fallo inesperado + } + return ResponseEntity.status(200).build(); + } + + @PostMapping("/curso") + public ResponseEntity crearCursoAcademico(@RequestBody CursoAcademico cursoAcademico) { + try { + implDaoCursosAcademicos.insertarEntidad(cursoAcademico); + return ResponseEntity.status(201).body(cursoAcademico); // Devuelve un 201 Created con el CursoAcademico creado + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body(null); // Devuelve 500 si ocurre un error + } + } + + @PutMapping("/curso/{id}") + public ResponseEntity actualizarCursoAcademico(@PathVariable("codigo") String codigoCurso, @RequestBody CursoAcademico cursoAcademico) { + try { + cursoAcademico.setCodigo(codigoCurso); // Asegúrate de que el codigoCurso + implDaoCursosAcademicos.actualizarEntidad(cursoAcademico); // Llama al servicio para actualizar el cursoAcademico + return ResponseEntity.status(200).body(cursoAcademico); // Devuelve el cursoAcademico actualizado con un 200 OK + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body(null); // Devuelve 500 si ocurre un error + } + } + +} diff --git a/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/GastoControlador.java b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/GastoControlador.java new file mode 100644 index 0000000..cb7f7df --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/GastoControlador.java @@ -0,0 +1,146 @@ +package org.lapaloma.aadd.api.proyectos.controlador; + +import java.util.List; + +import org.palomafp.dam2.aadd.proyectos.dao.IOperacionesCRUDMasConsultasEntidad; +import org.palomafp.dam2.aadd.proyectos.dao.impl.GastoDaoJPA; +import org.palomafp.dam2.aadd.proyectos.exceptions.ProyectosIESException; +import org.palomafp.dam2.aadd.proyectos.vo.CursoAcademico; +import org.palomafp.dam2.aadd.proyectos.vo.Gasto; +import org.palomafp.dam2.aadd.proyectos.vo.Proyecto; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api") // La ruta base de tu API +public class GastoControlador { + + // Se podría haber preparado para que la implementación fuera inyectada por SpringBoot + private final IOperacionesCRUDMasConsultasEntidad implDaoGasto = new GastoDaoJPA(); + + + @GetMapping(value = "/gastos") + public ResponseEntity> obtenerListaGastos() { + List listaGastos = null; + + try { + listaGastos = implDaoGasto.obtenerListaEntidades(); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaGastos); // Devuelve 200 OK con la lista de coches + } + + @GetMapping("/gasto/{id}") + public ResponseEntity obtenerGasto( @PathVariable("id") Integer identificador) { + Gasto gasto= null; + try { + gasto = implDaoGasto.obtenerEntidadPorID(identificador); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(gasto); // Devuelve 200 OK con la lista de coches + } + + @GetMapping("/gastos/curso/{codCursoAcademico}") + public ResponseEntity> obtenerGastosPorCurso(@PathVariable("codCursoAcademico") String codCursoAcademico) { + List listaGastos = null; + + CursoAcademico curso = new CursoAcademico(); + curso.setCodigo(codCursoAcademico); + + try { + listaGastos = implDaoGasto.obtenerListaEntidadesPorCursoAcademico(curso); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaGastos); // Devuelve 200 OK con la lista de coches + } + + @GetMapping("/gastos/proyecto/{idProyecto}") + public ResponseEntity> obtenerGastosPorProyecto(@PathVariable("idProyecto") Integer idProyecto) { + List listaGastos = null; + + Proyecto proyecto = new Proyecto(); + proyecto.setIdentificador(idProyecto); + + try { + listaGastos = implDaoGasto.obtenerListaEntidadesPorProyecto(proyecto); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaGastos); // Devuelve 200 OK con la lista de gasto + } + + @GetMapping("/gastos/proyecto/{idProyecto}/curso/{codCursoAcademico}") + public ResponseEntity> obtenerGastosPorProyectoYCurso( + @PathVariable("codCursoAcademico") String codCursoAcademico, + @PathVariable("idProyecto") Integer idProyecto) { + List listaGastos = null; + + CursoAcademico curso = new CursoAcademico(); + curso.setCodigo(codCursoAcademico); + + Proyecto proyecto = new Proyecto(); + proyecto.setIdentificador(idProyecto); + + + try { + listaGastos = implDaoGasto.obtenerListaEntidadesPorProyectoCurso(proyecto, curso); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaGastos); // Devuelve 200 OK con la lista de gasto + } + + @DeleteMapping("/gasto/{id}") + public ResponseEntity eliminarGasto(@PathVariable("id") Integer idGasto) { + Gasto gasto=new Gasto(); + gasto.setIdentificador(idGasto); + + try { + implDaoGasto.eliminarEntidad(gasto); + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body("Error interno en el servidor"); // Devuelve 500 Internal Server Error si hay un fallo inesperado + } + return ResponseEntity.status(200).build(); + } + + @PostMapping("/gasto") + public ResponseEntity crearGasto(@RequestBody Gasto gasto) { + try { + implDaoGasto.insertarEntidad(gasto); + return ResponseEntity.status(201).body(gasto); // Devuelve un 201 Created con el gasto creado + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body(null); // Devuelve 500 si ocurre un error + } + } + + @PutMapping("/gasto/{id}") + public ResponseEntity actualizarGasto(@PathVariable("id") Integer idGasto, @RequestBody Gasto gasto) { + try { + gasto.setIdentificador(idGasto); // Asegúrate de que el codigoCurso + implDaoGasto.actualizarEntidad(gasto); // Llama al servicio para actualizar el gasto + return ResponseEntity.status(200).body(gasto); // Devuelve el gasto actualizado con un 200 OK + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body(null); // Devuelve 500 si ocurre un error + } + } + +} diff --git a/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/IngresoControlador.java b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/IngresoControlador.java new file mode 100644 index 0000000..a163f69 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/IngresoControlador.java @@ -0,0 +1,147 @@ +package org.lapaloma.aadd.api.proyectos.controlador; + +import java.util.List; + +import org.palomafp.dam2.aadd.proyectos.dao.IOperacionesCRUDMasConsultasEntidad; +import org.palomafp.dam2.aadd.proyectos.dao.impl.IngresoDaoJPA; +import org.palomafp.dam2.aadd.proyectos.exceptions.ProyectosIESException; +import org.palomafp.dam2.aadd.proyectos.vo.CursoAcademico; +import org.palomafp.dam2.aadd.proyectos.vo.Ingreso; +import org.palomafp.dam2.aadd.proyectos.vo.Proyecto; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api") // La ruta base de tu API +public class IngresoControlador { + + // Se podría haber preparado para que la implementación fuera inyectada por SpringBoot + private final IOperacionesCRUDMasConsultasEntidad implDaoIngreso = new IngresoDaoJPA(); + + + @GetMapping(value = "/ingresos") + public ResponseEntity> obtenerListaIngresos() { + List listaIngresos = null; + + try { + listaIngresos = implDaoIngreso.obtenerListaEntidades(); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaIngresos); // Devuelve 200 OK con la lista de Ingreso + } + + @GetMapping("/ingreso/{id}") + public ResponseEntity obtenerIngreso( @PathVariable("id") Integer identificador) { + Ingreso ingreso= null; + try { + ingreso = implDaoIngreso.obtenerEntidadPorID(identificador); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(ingreso); // Devuelve 200 OK con la lista de Ingreso + } + + + @GetMapping("/ingresos/curso/{codCursoAcademico}") + public ResponseEntity> obtenerIngresosPorCurso(@PathVariable("codCursoAcademico") String codCursoAcademico) { + List listaIngresos = null; + + CursoAcademico curso = new CursoAcademico(); + curso.setCodigo(codCursoAcademico); + + try { + listaIngresos = implDaoIngreso.obtenerListaEntidadesPorCursoAcademico(curso); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaIngresos); // Devuelve 200 OK con la lista de Ingreso + } + + @GetMapping("/ingresos/proyecto/{idProyecto}") + public ResponseEntity> obtenerIngresosPorProyecto(@PathVariable("idProyecto") Integer idProyecto) { + List listaIngresos = null; + + Proyecto proyecto = new Proyecto(); + proyecto.setIdentificador(idProyecto); + + try { + listaIngresos = implDaoIngreso.obtenerListaEntidadesPorProyecto(proyecto); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaIngresos); // Devuelve 200 OK con la lista de Ingreso + } + + @GetMapping("/ingresos/proyecto/{idProyecto}/curso/{codCursoAcademico}") + public ResponseEntity> obtenerIngresosPorProyectoYCurso( + @PathVariable("codCursoAcademico") String codCursoAcademico, + @PathVariable("idProyecto") Integer idProyecto) { + List listaIngresos = null; + + CursoAcademico curso = new CursoAcademico(); + curso.setCodigo(codCursoAcademico); + + Proyecto proyecto = new Proyecto(); + proyecto.setIdentificador(idProyecto); + + + try { + listaIngresos = implDaoIngreso.obtenerListaEntidadesPorProyectoCurso(proyecto, curso); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaIngresos); // Devuelve 200 OK con la lista de Ingreso + } + + @DeleteMapping("/ingreso/{id}") + public ResponseEntity eliminarIngreso(@PathVariable("id") Integer idIngreso) { + Ingreso ingreso=new Ingreso(); + ingreso.setIdentificador(idIngreso); + + try { + implDaoIngreso.eliminarEntidad(ingreso); + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body("Error interno en el servidor"); // Devuelve 500 Internal Server Error si hay un fallo inesperado + } + return ResponseEntity.status(200).build(); + } + + @PostMapping("/ingreso") + public ResponseEntity crearIngreso(@RequestBody Ingreso ingreso) { + try { + implDaoIngreso.insertarEntidad(ingreso); + return ResponseEntity.status(201).body(ingreso); // Devuelve un 201 Created con el gasto creado + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body(null); // Devuelve 500 si ocurre un error + } + } + + @PutMapping("/ingreso/{id}") + public ResponseEntity actualizarIngreso(@PathVariable("id") Integer idIngreso, @RequestBody Ingreso ingreso) { + try { + ingreso.setIdentificador(idIngreso); // Asegúrate de que el codigoCurso + implDaoIngreso.actualizarEntidad(ingreso); // Llama al servicio para actualizar el Ingreso + return ResponseEntity.status(200).body(ingreso); // Devuelve el Ingreso actualizado con un 200 OK + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body(null); // Devuelve 500 si ocurre un error + } + } + +} diff --git a/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/PatrocinadorControlador.java b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/PatrocinadorControlador.java new file mode 100644 index 0000000..1036f5e --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/PatrocinadorControlador.java @@ -0,0 +1,149 @@ +package org.lapaloma.aadd.api.proyectos.controlador; + +import java.util.List; + +import org.palomafp.dam2.aadd.proyectos.dao.IOperacionesCRUDMasConsultasEntidad; +import org.palomafp.dam2.aadd.proyectos.dao.impl.PatrocinadorDaoJPA; +import org.palomafp.dam2.aadd.proyectos.exceptions.ProyectosIESException; +import org.palomafp.dam2.aadd.proyectos.vo.CursoAcademico; +import org.palomafp.dam2.aadd.proyectos.vo.Patrocinador; +import org.palomafp.dam2.aadd.proyectos.vo.Proyecto; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api") // La ruta base de tu API +public class PatrocinadorControlador { + + // Se podría haber preparado para que la implementación fuera inyectada por SpringBoot + private final IOperacionesCRUDMasConsultasEntidad implDaoPatrocinador = new PatrocinadorDaoJPA(); + + + @GetMapping("/patrocinador/{id}") + public ResponseEntity obtenerPatrocinador(@PathVariable("id") Integer idPatrocinador) { + Patrocinador patrocinador = null; + + try { + patrocinador = implDaoPatrocinador.obtenerEntidadPorID(idPatrocinador); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(patrocinador); // Devuelve 200 OK con la lista de patrocinadores + } + + + @GetMapping(value = "/patrocinadores") + public ResponseEntity> obtenerListaPatrocinadores() { + List listaPatrocinadores = null; + + try { + listaPatrocinadores = implDaoPatrocinador.obtenerListaEntidades(); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaPatrocinadores); // Devuelve 200 OK con la lista de patrocinadores + } + + @GetMapping("/patrocinadores/curso/{codCursoAcademico}") + public ResponseEntity> obtenerPatrocinadoresPorCurso(@PathVariable("codCursoAcademico") String codCursoAcademico) { + List listaPatrocinadores = null; + + CursoAcademico curso = new CursoAcademico(); + curso.setCodigo(codCursoAcademico); + + try { + listaPatrocinadores = implDaoPatrocinador.obtenerListaEntidadesPorCursoAcademico(curso); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaPatrocinadores); // Devuelve 200 OK con la lista de patrocinadores + } + + @GetMapping("/patrocinadores/proyecto/{idProyecto}") + public ResponseEntity> obtenerPatrocinadoresPorProyecto(@PathVariable("idProyecto") Integer idProyecto) { + List listaPatrocinadores = null; + + Proyecto proyecto = new Proyecto(); + proyecto.setIdentificador(idProyecto); + + try { + listaPatrocinadores = implDaoPatrocinador.obtenerListaEntidadesPorProyecto(proyecto); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaPatrocinadores); // Devuelve 200 OK con la lista de patrocinadores + } + + @GetMapping("/patrocinadores/proyecto/{idProyecto}/curso/{codCursoAcademico}") + public ResponseEntity> obtenerPatrocinadoresPorProyectoYCurso( + @PathVariable("codCursoAcademico") String codCursoAcademico, + @PathVariable("idProyecto") Integer idProyecto) { + List listaPatrocinadores = null; + + CursoAcademico curso = new CursoAcademico(); + curso.setCodigo(codCursoAcademico); + + Proyecto proyecto = new Proyecto(); + proyecto.setIdentificador(idProyecto); + + + try { + listaPatrocinadores = implDaoPatrocinador.obtenerListaEntidadesPorProyectoCurso(proyecto, curso); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaPatrocinadores); // Devuelve 200 OK con la lista de patrocinadors + } + + + @DeleteMapping("/patrocinador/{id}") + public ResponseEntity eliminarPatrocinador(@PathVariable("id") int id) { + Patrocinador patrocinador=new Patrocinador(); + patrocinador.setIdentificador(id); + + try { + implDaoPatrocinador.eliminarEntidad(patrocinador); + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body("Error interno en el servidor"); // Devuelve 500 Internal Server Error si hay un fallo inesperado + } + return ResponseEntity.status(200).build(); + } + + @PostMapping("/patrocinador") + public ResponseEntity crearPatrocinador(@RequestBody Patrocinador patrocinador) { + try { + implDaoPatrocinador.insertarEntidad(patrocinador); + return ResponseEntity.status(201).body(patrocinador); // Devuelve un 201 Created con el patrocinador creado + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body(null); // Devuelve 500 si ocurre un error + } + } + + @PutMapping("/patrocinador/{id}") + public ResponseEntity actualizarPatrocinador(@PathVariable("id") int id, @RequestBody Patrocinador patrocinador) { + try { + patrocinador.setIdentificador(id); // Asegúrate de que el ID del coche se actualice en el DTO + implDaoPatrocinador.actualizarEntidad(patrocinador); // Llama al servicio para actualizar el patrocinador + return ResponseEntity.status(200).body(patrocinador); // Devuelve el patrocinador actualizado con un 200 OK + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body(null); // Devuelve 500 si ocurre un error + } + } + +} diff --git a/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/ProyectoControlador.java b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/ProyectoControlador.java new file mode 100644 index 0000000..aa638b7 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/api/proyectos/controlador/ProyectoControlador.java @@ -0,0 +1,107 @@ +package org.lapaloma.aadd.api.proyectos.controlador; + +import java.util.List; + +import org.palomafp.dam2.aadd.proyectos.dao.IOperacionesCRUDMasConsultasCursoAcademico; +import org.palomafp.dam2.aadd.proyectos.dao.impl.ProyectoDaoJPA; +import org.palomafp.dam2.aadd.proyectos.exceptions.ProyectosIESException; +import org.palomafp.dam2.aadd.proyectos.vo.CursoAcademico; +import org.palomafp.dam2.aadd.proyectos.vo.Proyecto; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api") // La ruta base de tu API +public class ProyectoControlador { + + // Se podría haber preparado para que la implementación fuera inyectada por SpringBoot + private final IOperacionesCRUDMasConsultasCursoAcademico implDaoProyecto = new ProyectoDaoJPA(); + + + @GetMapping(value = "/proyectos") + public ResponseEntity> obtenerListaProyectos() { + List listaProyectos = null; + + try { + listaProyectos = implDaoProyecto.obtenerListaEntidades(); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaProyectos); // Devuelve 200 OK con la lista de Proyecto + } + + @GetMapping("/proyecto/{id}") + public ResponseEntity obtenerProyecto( @PathVariable("id") Integer identificador) { + Proyecto proyecto= null; + try { + proyecto = implDaoProyecto.obtenerEntidadPorID(identificador); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(proyecto); // Devuelve 200 OK con la lista de Proyecto + } + + @GetMapping("/proyectos/curso/{codCursoAcademico}") + public ResponseEntity> obtenerProyectosPorCurso(@PathVariable("codCursoAcademico") String codCursoAcademico) { + List listaProyectos = null; + + CursoAcademico curso = new CursoAcademico(); + curso.setCodigo(codCursoAcademico); + + try { + listaProyectos = implDaoProyecto.obtenerListaEntidadesPorCursoAcademico(curso); + } catch (ProyectosIESException e) { + e.printStackTrace(); + return ResponseEntity.status(500).build(); // Devuelve 500 Internal Server Error en caso de excepción + } + return ResponseEntity.ok(listaProyectos); // Devuelve 200 OK con la lista de Proyecto + } + + @DeleteMapping("/proyecto/{id}") + public ResponseEntity eliminarProyecto(@PathVariable("id") int id) { + Proyecto proyecto=new Proyecto(); + proyecto.setIdentificador(id); + + try { + implDaoProyecto.eliminarEntidad(proyecto); + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body("Error interno en el servidor"); // Devuelve 500 Internal Server Error si hay un fallo inesperado + } + return ResponseEntity.status(200).build(); + } + + @PostMapping("/proyecto") + public ResponseEntity crearProyecto(@RequestBody Proyecto proyecto) { + try { + implDaoProyecto.insertarEntidad(proyecto); + return ResponseEntity.status(201).body(proyecto); // Devuelve un 201 Created con el Proyecto creado + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body(null); // Devuelve 500 si ocurre un error + } + } + + @PutMapping("/proyecto/{id}") + public ResponseEntity actualizarProyecto(@PathVariable("id") int id, @RequestBody Proyecto proyecto) { + try { + proyecto.setIdentificador(id); // Asegúrate de que el ID del coche se actualice en el DTO + implDaoProyecto.actualizarEntidad(proyecto); // Llama al servicio para actualizar el Proyecto + return ResponseEntity.status(200).body(proyecto); // Devuelve el Proyecto actualizado con un 200 OK + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(500).body(null); // Devuelve 500 si ocurre un error + } + } + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..106f0a6 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,10 @@ +# Este es el nombre de la aplicación +spring.application.name=ies_lapaloma_proyectos + +# Puerto sobre el que correrá Tomcat. +server.port=4455 + +# Configuración de logs +logging.file.name=/var/log/ies_lapaloma_proyectos.log +logging.level.org.springframework=INFO +logging.level.org.lapaloma=DEBUG