Se modifica el control de excepciones en ServiceUzyTUsuario

parent 219cbf28
...@@ -3,7 +3,6 @@ package ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class; ...@@ -3,7 +3,6 @@ package ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTUsuario; import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTUsuario;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTUsuario; import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTUsuario;
import org.modelmapper.ModelMapper; import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
...@@ -11,9 +10,12 @@ import java.util.stream.Collectors; ...@@ -11,9 +10,12 @@ import java.util.stream.Collectors;
@Component @Component
public class UzyTUsuarioMapper { public class UzyTUsuarioMapper {
@Autowired
private ModelMapper mapper;
private final ModelMapper mapper;
public UzyTUsuarioMapper(ModelMapper mapper) {
this.mapper = mapper;
}
public DtoUzyTUsuario entityToDto(ModelUzyTUsuario entity) { public DtoUzyTUsuario entityToDto(ModelUzyTUsuario entity) {
......
...@@ -19,12 +19,10 @@ import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException; ...@@ -19,12 +19,10 @@ import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException;
@Service @Service
public class ServiceUzyTUsuario implements IServiceUzyTUsuario { 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 DaoUzyTUsuario daoUzyTUsuario;
private final DaoUzyTPerfil daoUzyTPerfil; private final DaoUzyTPerfil daoUzyTPerfil;
private final UzyTUsuarioMapper mapper; private final UzyTUsuarioMapper mapper;
private final UzyTPerfilMapper mapperPerfil; private final UzyTPerfilMapper mapperPerfil;
public ServiceUzyTUsuario(DaoUzyTUsuario daoUzyTUsuario, DaoUzyTPerfil daoUzyTPerfil, UzyTUsuarioMapper mapper, UzyTPerfilMapper mapperPerfil) { public ServiceUzyTUsuario(DaoUzyTUsuario daoUzyTUsuario, DaoUzyTPerfil daoUzyTPerfil, UzyTUsuarioMapper mapper, UzyTPerfilMapper mapperPerfil) {
...@@ -37,14 +35,14 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario { ...@@ -37,14 +35,14 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
@Override @Override
public DtoUzyTUsuario ListarPorID(Long id) { public DtoUzyTUsuario ListarPorID(Long id) {
if (id <= 0) {
throw new IllegalArgumentException("El parámetro 'id' debe ser un valor positivo.");
}
try { try {
if (id <= 0) {
throw new IllegalArgumentException("El parámetro 'id' debe ser un valor positivo.");
}
ModelUzyTUsuario entity = daoUzyTUsuario.findById(id) ModelUzyTUsuario entity = daoUzyTUsuario.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + id)); .orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + id));
return mapper.entityToDto(entity); return mapper.entityToDto(entity);
} catch (ResourceNotFoundException | IllegalArgumentException ex) { } catch (ResourceNotFoundException ex) {
throw ex; throw ex;
} catch (Exception ex) { // Manejo de cualquier error en el servidor } catch (Exception ex) { // Manejo de cualquier error en el servidor
throw new RuntimeException("Error al buscar usuario con ID: " + id); throw new RuntimeException("Error al buscar usuario con ID: " + id);
...@@ -84,15 +82,13 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario { ...@@ -84,15 +82,13 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
@Override @Override
public DtoUzyTUsuario guardar(DtoUzyTUsuario dtoUzyTUsuario) throws Exception { public DtoUzyTUsuario guardar(DtoUzyTUsuario dtoUzyTUsuario) throws Exception {
if (dtoUzyTUsuario.getUzytusuario_apellidos() == null) {
throw new IllegalArgumentException("El apellido del usuario no puede ser nulo.");
}
try { try {
if (dtoUzyTUsuario.getUzytusuario_apellidos() == null) {
throw new IllegalArgumentException("El apellido del usuario no puede ser nulo.");
}
ModelUzyTUsuario entity = mapper.dtoToEntity(dtoUzyTUsuario); ModelUzyTUsuario entity = mapper.dtoToEntity(dtoUzyTUsuario);
ModelUzyTUsuario nuevoEntity = daoUzyTUsuario.save(entity); ModelUzyTUsuario nuevoEntity = daoUzyTUsuario.save(entity);
return mapper.entityToDto(nuevoEntity); return mapper.entityToDto(nuevoEntity);
} catch (IllegalArgumentException ex) {
throw new IllegalArgumentException("Argumentos ilegales-> " + ex.getMessage());
} catch (Exception ex) { } catch (Exception ex) {
throw new Exception("Error al guardar el usuario: " + ex.getMessage()); throw new Exception("Error al guardar el usuario: " + ex.getMessage());
} }
...@@ -100,17 +96,13 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario { ...@@ -100,17 +96,13 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
@Override @Override
public DtoUzyTUsuario editar(Long id, DtoUzyTUsuario dtoUzyTUsuario) { 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.");
}
try { try {
if ( id <= 0) {
throw new IllegalArgumentException("El ID del usuario debe ser válido y mayor que cero.");
}
if (!daoUzyTUsuario.existsById(id)) {
throw new ResourceNotFoundException("El usuario con ID " + id + " no fue encontrado.");
}
ModelUzyTUsuario entity = daoUzyTUsuario.findById(id) ModelUzyTUsuario entity = daoUzyTUsuario.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + id)); .orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + id));
if (dtoUzyTUsuario.getUzytusuario_nombres() != null) { if (dtoUzyTUsuario.getUzytusuario_nombres() != null) {
entity.setUzytusuario_nombres(dtoUzyTUsuario.getUzytusuario_nombres()); entity.setUzytusuario_nombres(dtoUzyTUsuario.getUzytusuario_nombres());
} }
...@@ -180,7 +172,7 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario { ...@@ -180,7 +172,7 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
// Convertir el usuario actualizado a DtoUzyTUsuario y devolverlo // Convertir el usuario actualizado a DtoUzyTUsuario y devolverlo
return mapper.entityToDto(usuarioActualizado); return mapper.entityToDto(usuarioActualizado);
} catch (ResourceNotFoundException | IllegalArgumentException ex) { } catch (ResourceNotFoundException ex) {
throw ex; throw ex;
} catch (Exception ex) { } catch (Exception ex) {
throw new RuntimeException("Error al editar el usuario -> " + ex.getMessage()); throw new RuntimeException("Error al editar el usuario -> " + ex.getMessage());
...@@ -190,20 +182,20 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario { ...@@ -190,20 +182,20 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
@Override @Override
public boolean eliminar(Long id) { 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.");
}
try { try {
if (id == null || id <= 0) {
throw new IllegalArgumentException("El ID del usuario debe ser válido y mayor que cero.");
}
ModelUzyTUsuario entity = daoUzyTUsuario.findById(id).orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + id)); ModelUzyTUsuario entity = daoUzyTUsuario.findById(id).orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + id));
if (entity != null) { if (entity != null) {
daoUzyTUsuario.delete(entity); daoUzyTUsuario.delete(entity);
return true; return true;
} }
return false; return false;
}catch (ResourceNotFoundException | IllegalArgumentException ex) { } catch (ResourceNotFoundException ex) {
throw ex; throw ex;
} } catch (Exception ex) {
catch (Exception ex) {
throw new RuntimeException("Error al eliminar el usuario: " + ex.getMessage()); throw new RuntimeException("Error al eliminar el usuario: " + ex.getMessage());
} }
} }
...@@ -211,17 +203,18 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario { ...@@ -211,17 +203,18 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
@Override @Override
public DtoUsuarioConPerfiles asignarPerfilAUsuario(Long uzytusuario_id, Long uzytperfil_id) { 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.");
}
try { try {
if (uzytusuario_id <= 0 || uzytperfil_id <= 0) {
throw new IllegalArgumentException("Se debe ingresar un ID válido y mayor que cero.");
}
ModelUzyTUsuario usuario = daoUzyTUsuario.findById(uzytusuario_id).orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + uzytusuario_id)); 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)); ModelUzyTPerfil perfil = daoUzyTPerfil.findById(uzytperfil_id).orElseThrow(() -> new ResourceNotFoundException("Perfil no encontrado con ID: " + uzytperfil_id));
if (usuario.getUzytperfils().contains(perfil)) { if (usuario.getUzytperfils().contains(perfil)) {
throw new IllegalArgumentException("El perfil ya está asignado al usuario."); throw new IllegalArgumentException("El perfil ya está asignado al usuario.");
} }
// Aquí asigno el perfil al usuario // Aquí asigno el perfil al usuario
usuario.getUzytperfils().add(perfil); usuario.getUzytperfils().add(perfil);
daoUzyTUsuario.save(usuario); daoUzyTUsuario.save(usuario);
...@@ -245,16 +238,16 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario { ...@@ -245,16 +238,16 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
@Override @Override
public Set<DtoUzyTPerfil> findPerfilesByUsuarioId(Long uzytusuario_id) { 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.");
}
try { try {
if (uzytusuario_id == null || uzytusuario_id <= 0) {
throw new IllegalArgumentException("El ID debe ser válido y mayor que cero.");
}
Set<ModelUzyTPerfil> perfiles = daoUzyTUsuario.findPerfilesByUsuarioId(uzytusuario_id); Set<ModelUzyTPerfil> perfiles = daoUzyTUsuario.findPerfilesByUsuarioId(uzytusuario_id);
if (perfiles.isEmpty()) { // cuando la colección de perfiles es nula if (perfiles.isEmpty()) { // cuando la colección de perfiles es nula
throw new ResourceNotFoundException("No se encontraron perfiles de usuario para el ID: " + uzytusuario_id); throw new ResourceNotFoundException("No se encontraron perfiles de usuario para el ID: " + uzytusuario_id);
} }
return mapperPerfil.entitiesToDtosSet(perfiles); return mapperPerfil.entitiesToDtosSet(perfiles);
} catch (ResourceNotFoundException | IllegalArgumentException ex) { } catch (ResourceNotFoundException ex) {
throw ex; throw ex;
} catch (Exception ex) { } catch (Exception ex) {
throw new RuntimeException("Error al buscar perfiles de usuario: " + ex.getMessage()); throw new RuntimeException("Error al buscar perfiles de usuario: " + ex.getMessage());
......
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