Se maneja las excepciones en ServiceUzyTPerfilMenu

parent cd5ea98d
package ec.edu.espe.movilidad.MovilidadWS.Controller;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTPerfil;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTPerfilMenu;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTLineaOperativa;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTPerfil;
import ec.edu.espe.movilidad.MovilidadWS.Service.UzyTPerfilMenu.IServiceUzyTPerfilMenu;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
......@@ -29,33 +26,36 @@ public class UzyTPerfilMenuController {
@GetMapping("/exampleFindId/{id}")
public ResponseEntity<DtoUzyTPerfilMenu> ListarPorID(@PathVariable Long id) {
DtoUzyTPerfilMenu dto = serviceUzyTPerfilMenu.ListarPorID(id);
return ResponseEntity.ok(dto);
return ResponseEntity.ok(serviceUzyTPerfilMenu.ListarPorID(id));
}
@GetMapping("/getAll")
public ResponseEntity<List<DtoUzyTPerfilMenu>> ListarRegistros() {
List<DtoUzyTPerfilMenu> dtos = serviceUzyTPerfilMenu.ListarRegistros();
return ResponseEntity.ok(dtos);
return new ResponseEntity<>(serviceUzyTPerfilMenu.ListarRegistros(), HttpStatus.OK);
}
@PostMapping("/guardar")
public ResponseEntity<DtoUzyTPerfilMenu> guardar(@RequestBody DtoUzyTPerfilMenu dtoUzyTPerfilMenu) {
DtoUzyTPerfilMenu savedDto = serviceUzyTPerfilMenu.guardar(dtoUzyTPerfilMenu);
return ResponseEntity.ok(savedDto);
return new ResponseEntity<>(serviceUzyTPerfilMenu.guardar(dtoUzyTPerfilMenu), HttpStatus.OK);
}
@DeleteMapping("/eliminar/{id}")
public ResponseEntity<Void> eliminar(@PathVariable Long id) {
serviceUzyTPerfilMenu.eliminar(id);
return ResponseEntity.ok().build();
public ResponseEntity<String> eliminar(@PathVariable Long id) {
boolean eliminado = serviceUzyTPerfilMenu.eliminar(id);
if (eliminado) {
return ResponseEntity.ok("El registro se eliminó exitosamente.");
} else {
return ResponseEntity.notFound().build();
}
}
@PutMapping("/editar/{id}")
public ResponseEntity<DtoUzyTPerfilMenu> editar(@PathVariable Long id,
@RequestBody DtoUzyTPerfilMenu dtoUzyTPerfilMenu) {
DtoUzyTPerfilMenu editedDto = serviceUzyTPerfilMenu.editar(id, dtoUzyTPerfilMenu);
return ResponseEntity.ok(editedDto);
return new ResponseEntity<>(serviceUzyTPerfilMenu.editar(id, dtoUzyTPerfilMenu), HttpStatus.OK);
}
}
......@@ -31,7 +31,7 @@ public class UzyTUsuarioController {
@GetMapping("/exampleFindId/{id}")
public ResponseEntity<DtoUzyTUsuario> ListarPorID(@PathVariable Long id) {
return ResponseEntity.ok(serviceUzyTUsuario.ListarPorID(id));
return new ResponseEntity<>(serviceUzyTUsuario.ListarPorID(id), HttpStatus.OK);
}
@GetMapping("/getAll")
......@@ -63,7 +63,7 @@ public class UzyTUsuarioController {
}
@PostMapping("/guardar")
public ResponseEntity<DtoUzyTUsuario> guardar( @Valid @RequestBody DtoUzyTUsuario dtoUzyTUsuario) throws Exception {
public ResponseEntity<DtoUzyTUsuario> guardar( @Valid @RequestBody DtoUzyTUsuario dtoUzyTUsuario){
return new ResponseEntity<>(serviceUzyTUsuario.guardar(dtoUzyTUsuario), HttpStatus.OK);
}
......
package ec.edu.espe.movilidad.MovilidadWS.Exceptions.Configuration;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.InvalidArgumentException;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
......@@ -21,19 +22,19 @@ public class GlobalExceptionHandler {
public ResponseEntity<String> handleNoSuchElementException(NoSuchElementException ex) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
}
@ExceptionHandler(IllegalArgumentException.class)
public ResponseEntity<String> handleIllegalArgumentException(IllegalArgumentException ex) {
@ExceptionHandler(InvalidArgumentException.class)
public ResponseEntity<String> handleInvalidArgumentException(InvalidArgumentException ex) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage());
}
@ExceptionHandler(RuntimeException.class)
public ResponseEntity<String> handleRuntimeException(RuntimeException ex) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ex.getMessage());
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Ha ocurrido un error inesperado en el servidor: -> " + ex.getMessage());
}
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleGenericException(Exception ex) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Ha ocurrido un error inesperado -> "+ ex.getMessage());
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Ha ocurrido un error INTERNO en el servidor: -> "+ ex.getMessage());
}
}
......
package ec.edu.espe.movilidad.MovilidadWS.Exceptions;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public class InvalidArgumentException extends IllegalArgumentException {
public InvalidArgumentException(String message) {
super(message);
}
}
......@@ -15,6 +15,6 @@ public interface IServiceUzyTPerfilMenu {
DtoUzyTPerfilMenu editar(Long id, DtoUzyTPerfilMenu dtoUzyTPerfilMenu);
void eliminar(Long id);
boolean eliminar(Long id);
}
......@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
import java.util.Objects;
@Service
public class ServiceUzyTPerfilMenu implements IServiceUzyTPerfilMenu {
......@@ -23,43 +24,84 @@ public class ServiceUzyTPerfilMenu implements IServiceUzyTPerfilMenu {
@Override
public DtoUzyTPerfilMenu ListarPorID(@PathVariable Long id) {
ModelUzyTPerfilMenu entity = daoUzyTPerfilMenu.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("No se encontró el registro con ID: " + id));
return mapper.entityToDto(entity);
if (id <= 0) {
throw new IllegalArgumentException("El parámetro 'id' debe ser un valor positivo.");
}
try {
ModelUzyTPerfilMenu entity = daoUzyTPerfilMenu.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("No se encontró el registro con ID: " + id));
return mapper.entityToDto(entity);
} catch (ResourceNotFoundException ex) {
throw ex;
} catch (Exception ex) { // Manejo de cualquier error en el servidor
throw new RuntimeException("Error al buscar el registro con ID: " + id);
}
}
@Override
public List<DtoUzyTPerfilMenu> ListarRegistros() {
List<ModelUzyTPerfilMenu> entities = daoUzyTPerfilMenu.findAll();
return mapper.entitiesToDtos(entities);
try {
List<ModelUzyTPerfilMenu> entities = daoUzyTPerfilMenu.findAll();
return mapper.entitiesToDtos(entities);
} catch (Exception ex) {
throw new RuntimeException("Error al listar registros de usuarios: " + ex.getMessage());
}
}
@Override
public DtoUzyTPerfilMenu guardar(DtoUzyTPerfilMenu dtoUzyTPerfilMenu) {
ModelUzyTPerfilMenu entity = mapper.dtoToEntity(dtoUzyTPerfilMenu);
ModelUzyTPerfilMenu nuevoEntity = daoUzyTPerfilMenu.save(entity);
return mapper.entityToDto(nuevoEntity);
if (Objects.isNull(dtoUzyTPerfilMenu.getUzytmedu_id())) {
throw new IllegalArgumentException("El ID del menú no puede ser nulo.");
}
if (Objects.isNull(dtoUzyTPerfilMenu.getUzytperfil_id())) {
throw new IllegalArgumentException("El ID del perfil no puede ser nulo.");
}
if (Objects.isNull(dtoUzyTPerfilMenu.getUzytlinea_operativa_id())) {
throw new IllegalArgumentException("El ID de la línea operativa no puede ser nulo.");
}
try {
ModelUzyTPerfilMenu entity = mapper.dtoToEntity(dtoUzyTPerfilMenu);
ModelUzyTPerfilMenu nuevoEntity = daoUzyTPerfilMenu.save(entity);
return mapper.entityToDto(nuevoEntity);
} catch (Exception ex) {
throw new RuntimeException("Error al guardar el usuario: " + ex.getMessage());
}
}
@Override
public DtoUzyTPerfilMenu editar(Long id, DtoUzyTPerfilMenu dtoUzyTPerfilMenu) {
if (id <= 0) {
throw new IllegalArgumentException("El ID debe ser válido y mayor que cero.");
}
try {
ModelUzyTPerfilMenu entity = daoUzyTPerfilMenu.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("No se encontró el registro con ID: " + id));
ModelUzyTPerfilMenu updatedEntity = daoUzyTPerfilMenu.save(entity);
return mapper.entityToDto(updatedEntity);
} catch (Exception e) {
throw new ResourceNotFoundException("Error al editar el registro: " + e.getMessage());
}catch (ResourceNotFoundException ex) {
throw ex;
} catch (Exception ex) {
throw new RuntimeException("Error al editar el usuario -> " + ex.getMessage());
}
}
@Override
public void eliminar(Long id) {
ModelUzyTPerfilMenu dato = daoUzyTPerfilMenu.findById(id).get();
public boolean eliminar(Long id) {
if (id == null || id <= 0) {
throw new IllegalArgumentException("El ID debe ser válido y mayor que cero.");
}
try {
daoUzyTPerfilMenu.delete(dato);
ModelUzyTPerfilMenu entity = daoUzyTPerfilMenu.findById(id).orElseThrow(() -> new ResourceNotFoundException("Registro no encontrado con ID: " + id));
if (entity != null) {
daoUzyTPerfilMenu.delete(entity);
return true;
}
return false;
} catch (ResourceNotFoundException ex) {
throw ex;
} catch (Exception ex) {
throw new RuntimeException("Error al eliminar el usuario: " + ex.getMessage());
}
}
}
......@@ -65,7 +65,7 @@ public class ServiceUzyTPlanificacion implements IServiceUzyTPlanificacion {
@Override
public DtoUzyTPlanificacion editar(Long id, DtoUzyTPlanificacion dtoUzyTPlanificacion) {
if (id <= 0) {
throw new IllegalArgumentException("El ID del usuario debe ser válido y mayor que cero.");
throw new IllegalArgumentException("El ID del registro debe ser válido y mayor que cero.");
}
try {
ModelUzyTPlanificacion entity = daoUzyTPlanificacion.findById(id)
......@@ -77,14 +77,14 @@ public class ServiceUzyTPlanificacion implements IServiceUzyTPlanificacion {
}catch (ResourceNotFoundException ex) {
throw ex;
} catch (Exception ex) {
throw new RuntimeException("Error al editar el usuario -> " + ex.getMessage());
throw new RuntimeException("Error al editar el registro -> " + ex.getMessage());
}
}
@Override
public boolean eliminar(Long id) {
if (id == null || id <= 0) {
throw new IllegalArgumentException("El ID del usuario debe ser válido y mayor que cero.");
throw new IllegalArgumentException("El ID del registro debe ser válido y mayor que cero.");
}
try {
......
......@@ -14,7 +14,7 @@ public interface IServiceUzyTUsuario {
List<DtoUzyTUsuario> ListarRegistros() ;
List<DtoUzyTUsuario> findByUsuario(String usuario);
DtoUzyTUsuario guardar(DtoUzyTUsuario dtoUzyTUsuario) throws Exception;
DtoUzyTUsuario guardar(DtoUzyTUsuario dtoUzyTUsuario);
DtoUzyTUsuario editar( Long id, DtoUzyTUsuario dtoUzyTUsuario);
......
......@@ -5,6 +5,7 @@ import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTUsuario;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUsuarioConPerfiles;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTPerfil;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTUsuario;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.InvalidArgumentException;
import ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class.UzyTPerfilMapper;
import ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class.UzyTUsuarioMapper;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTPerfil;
......@@ -19,6 +20,7 @@ import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException;
@Service
public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
//Mejores prácticas de diseño y desarrollo, más fácil probar el servicio a través de pruebas unitarias.
private final DaoUzyTUsuario daoUzyTUsuario;
private final DaoUzyTPerfil daoUzyTPerfil;
......@@ -36,17 +38,11 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
@Override
public DtoUzyTUsuario ListarPorID(Long id) {
if (id <= 0) {
throw new IllegalArgumentException("El parámetro 'id' debe ser un valor positivo.");
}
try {
ModelUzyTUsuario entity = daoUzyTUsuario.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + id));
return mapper.entityToDto(entity);
} catch (ResourceNotFoundException ex) {
throw ex;
} catch (Exception ex) { // Manejo de cualquier error en el servidor
throw new RuntimeException("Error al buscar usuario con ID: " + id);
throw new InvalidArgumentException("El parámetro 'id' debe ser un valor positivo.");
}
ModelUzyTUsuario entity = daoUzyTUsuario.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + id));
return mapper.entityToDto(entity);
}
@Override
......@@ -76,28 +72,29 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
throw new RuntimeException("Error al buscar usuarios por nombre: " + ex.getMessage());
}
} else {
throw new IllegalArgumentException("Parámetro de búsqueda inválido: el usuario no puede ser nulo o vacío.");
throw new InvalidArgumentException("Parámetro de búsqueda inválido: el usuario no puede ser nulo o vacío.");
}
}
@Override
public DtoUzyTUsuario guardar(DtoUzyTUsuario dtoUzyTUsuario) throws Exception {
public DtoUzyTUsuario guardar(DtoUzyTUsuario dtoUzyTUsuario) {
if (dtoUzyTUsuario.getUzytusuario_apellidos() == null) {
throw new IllegalArgumentException("El apellido del usuario no puede ser nulo.");
throw new InvalidArgumentException("El apellido del usuario no puede ser nulo.");
}
try {
ModelUzyTUsuario entity = mapper.dtoToEntity(dtoUzyTUsuario);
ModelUzyTUsuario nuevoEntity = daoUzyTUsuario.save(entity);
return mapper.entityToDto(nuevoEntity);
} catch (Exception ex) {
throw new Exception("Error al guardar el usuario: " + ex.getMessage());
}
catch (Exception ex) {
throw new RuntimeException("Error al guardar el usuario: " + ex.getMessage());
}
}
@Override
public DtoUzyTUsuario editar(Long id, DtoUzyTUsuario dtoUzyTUsuario) {
if (id <= 0) {
throw new IllegalArgumentException("El ID del usuario debe ser válido y mayor que cero.");
throw new InvalidArgumentException("El ID del usuario debe ser válido y mayor que cero.");
}
try {
......@@ -183,7 +180,7 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
@Override
public boolean eliminar(Long id) {
if (id == null || id <= 0) {
throw new IllegalArgumentException("El ID del usuario debe ser válido y mayor que cero.");
throw new InvalidArgumentException("El ID del usuario debe ser válido y mayor que cero.");
}
try {
......@@ -204,7 +201,7 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
@Override
public DtoUsuarioConPerfiles asignarPerfilAUsuario(Long uzytusuario_id, Long uzytperfil_id) {
if (uzytusuario_id <= 0 || uzytperfil_id <= 0) {
throw new IllegalArgumentException("Se debe ingresar un ID válido y mayor que cero.");
throw new InvalidArgumentException("Se debe ingresar un ID válido y mayor que cero.");
}
try {
......@@ -212,7 +209,7 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
ModelUzyTUsuario usuario = daoUzyTUsuario.findById(uzytusuario_id).orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + uzytusuario_id));
ModelUzyTPerfil perfil = daoUzyTPerfil.findById(uzytperfil_id).orElseThrow(() -> new ResourceNotFoundException("Perfil no encontrado con ID: " + uzytperfil_id));
if (usuario.getUzytperfils().contains(perfil)) {
throw new IllegalArgumentException("El perfil ya está asignado al usuario.");
throw new InvalidArgumentException("El perfil ya está asignado al usuario.");
}
// Aquí asigno el perfil al usuario
......@@ -228,7 +225,7 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
return dtoUsuarioConPerfiles;
} catch (ResourceNotFoundException | IllegalArgumentException ex) {
} catch (ResourceNotFoundException | InvalidArgumentException ex) {
throw ex;
} catch (Exception ex) {
throw new RuntimeException("Error al asignar perfil al usuario: " + ex.getMessage());
......@@ -239,7 +236,7 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
@Override
public Set<DtoUzyTPerfil> findPerfilesByUsuarioId(Long uzytusuario_id) {
if (uzytusuario_id == null || uzytusuario_id <= 0) {
throw new IllegalArgumentException("El ID debe ser válido y mayor que cero.");
throw new InvalidArgumentException("El ID debe ser válido y mayor que cero.");
}
try {
Set<ModelUzyTPerfil> perfiles = daoUzyTUsuario.findPerfilesByUsuarioId(uzytusuario_id);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment