Class PaginationResponseUtils
java.lang.Object
com.aceelv.utilsmongodb.pagination.response.PaginationResponseUtils
Utilidades para crear respuestas estandarizadas en operaciones de paginación.
Esta clase proporciona métodos estáticos para generar respuestas consistentes
usando ResultResponse
para diferentes escenarios en operaciones de paginación.
CaracterÃsticas Principales:
- Respuestas estandarizadas para éxito, error y casos especiales
- Mensajes informativos automáticos basados en el contenido
- Códigos de estado HTTP apropiados
- Manejo especÃfico de errores de validación
- Detección automática de páginas vacÃas vs. con resultados
Ejemplo de Uso en Controladores:
@PostMapping("/filter")
public ResponseEntity<ResultResponse<Page<UserDto>, String>> filter(@RequestBody FilteredRequest request) {
try {
Page<UserDto> users = userService.getFilteredUsers(request);
// Respuesta automática basada en el contenido
ResultResponse<Page<UserDto>, String> response = PaginationResponseUtils.autoResponse(users);
return ResponseEntity.ok(response);
} catch (ValidationException e) {
ResultResponse<Page<UserDto>, String> response = PaginationResponseUtils.validationError(e);
return ResponseEntity.badRequest().body(response);
}
}
Ejemplo de Uso en Servicios:
@Service
public class UserService {
public ResultResponse<Page<UserDto>, String> searchUsers(FilteredRequest request) {
try {
Page<UserDto> users = paginationService.getFilteredPage(request);
if (users.isEmpty()) {
return PaginationResponseUtils.emptyPage(users);
} else {
return PaginationResponseUtils.successPage(users);
}
} catch (ValidationException e) {
return PaginationResponseUtils.validationError(e);
} catch (Exception e) {
return PaginationResponseUtils.serverError(e);
}
}
}
- Since:
- 1.0
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> ResultResponse<org.springframework.data.domain.Page<T>,
String> autoResponse
(org.springframework.data.domain.Page<T> page) Determina automáticamente el tipo de respuesta basado en el contenido de la página.static <T> ResultResponse<org.springframework.data.domain.Page<T>,
String> badRequest
(String message) Crea una respuesta de error por parámetros inválidos (Bad Request).static <T> ResultResponse<org.springframework.data.domain.Page<T>,
String> emptyPage
(org.springframework.data.domain.Page<T> page) Crea una respuesta exitosa cuando no hay resultados que coincidan con los criterios.static <T> ResultResponse<org.springframework.data.domain.Page<T>,
String> Crea una respuesta de error interno del servidor desde una excepción.static <T> ResultResponse<org.springframework.data.domain.Page<T>,
String> serverError
(String message) Crea una respuesta de error interno del servidor con mensaje personalizado.static <T> ResultResponse<org.springframework.data.domain.Page<T>,
String> successPage
(org.springframework.data.domain.Page<T> page) Crea una respuesta exitosa para operaciones de filtrado/paginación con resultados.static <T> ResultResponse<org.springframework.data.domain.Page<T>,
String> Crea una respuesta de error por validación usando una ValidationException.static <T> ResultResponse<org.springframework.data.domain.Page<T>,
String> validationError
(List<String> errors) Crea una respuesta de error por validación con lista de errores personalizada.
-
Constructor Details
-
PaginationResponseUtils
public PaginationResponseUtils()
-
-
Method Details
-
successPage
public static <T> ResultResponse<org.springframework.data.domain.Page<T>,String> successPage(org.springframework.data.domain.Page<T> page) Crea una respuesta exitosa para operaciones de filtrado/paginación con resultados.Genera un mensaje informativo que incluye el número de elementos encontrados y el total disponible en la colección.
- Type Parameters:
T
- Tipo de contenido de la página- Parameters:
page
- Página con resultados (no debe estar vacÃa)- Returns:
- ResultResponse con mensaje de éxito y metadatos
Ejemplo:
Page<User> users = // ... página con 10 usuarios de 150 totales ResultResponse<Page<User>, String> response = PaginationResponseUtils.successPage(users); // Mensaje: "Se encontraron 10 resultados de 150 totales"
-
emptyPage
public static <T> ResultResponse<org.springframework.data.domain.Page<T>,String> emptyPage(org.springframework.data.domain.Page<T> page) Crea una respuesta exitosa cuando no hay resultados que coincidan con los criterios.Útil para diferenciar entre una búsqueda exitosa sin resultados y un error en la búsqueda.
- Type Parameters:
T
- Tipo de contenido de la página- Parameters:
page
- Página vacÃa- Returns:
- ResultResponse indicando que no se encontraron resultados
Ejemplo:
Page<User> emptyPage = // ... página vacÃa ResultResponse<Page<User>, String> response = PaginationResponseUtils.emptyPage(emptyPage); // Mensaje: "No se encontraron resultados para los criterios especificados"
-
validationError
public static <T> ResultResponse<org.springframework.data.domain.Page<T>,String> validationError(ValidationException e) Crea una respuesta de error por validación usando una ValidationException.Extrae automáticamente la lista de errores de la excepción y genera una respuesta con código HTTP 400.
- Type Parameters:
T
- Tipo de contenido esperado (será null en error)- Parameters:
e
- Excepción de validación con lista de errores- Returns:
- ResultResponse con errores de validación
Ejemplo:
try { // ... operación que puede fallar por validación } catch (ValidationException e) { return PaginationResponseUtils.validationError(e); // Contiene: e.getValidationErrors() como lista de strings }
-
validationError
public static <T> ResultResponse<org.springframework.data.domain.Page<T>,String> validationError(List<String> errors) Crea una respuesta de error por validación con lista de errores personalizada.- Type Parameters:
T
- Tipo de contenido esperado (será null en error)- Parameters:
errors
- Lista de mensajes de error de validación- Returns:
- ResultResponse con errores de validación
Ejemplo:
List<String> errors = Arrays.asList( "El campo 'email' es requerido", "El formato de fecha es inválido" ); return PaginationResponseUtils.validationError(errors);
-
serverError
public static <T> ResultResponse<org.springframework.data.domain.Page<T>,String> serverError(String message) Crea una respuesta de error interno del servidor con mensaje personalizado.- Type Parameters:
T
- Tipo de contenido esperado (será null en error)- Parameters:
message
- Mensaje descriptivo del error- Returns:
- ResultResponse con error del servidor
Ejemplo:
return PaginationResponseUtils.serverError("Error al conectar con la base de datos");
-
serverError
public static <T> ResultResponse<org.springframework.data.domain.Page<T>,String> serverError(Exception e) Crea una respuesta de error interno del servidor desde una excepción.Extrae automáticamente el mensaje de la excepción.
- Type Parameters:
T
- Tipo de contenido esperado (será null en error)- Parameters:
e
- Excepción que causó el error- Returns:
- ResultResponse con error del servidor
Ejemplo:
try { // ... operación que puede fallar } catch (Exception e) { return PaginationResponseUtils.serverError(e); }
-
badRequest
public static <T> ResultResponse<org.springframework.data.domain.Page<T>,String> badRequest(String message) Crea una respuesta de error por parámetros inválidos (Bad Request).- Type Parameters:
T
- Tipo de contenido esperado (será null en error)- Parameters:
message
- Mensaje descriptivo del error- Returns:
- ResultResponse con error de petición inválida
Ejemplo:
return PaginationResponseUtils.badRequest("El ID proporcionado no es válido");
-
autoResponse
public static <T> ResultResponse<org.springframework.data.domain.Page<T>,String> autoResponse(org.springframework.data.domain.Page<T> page) Determina automáticamente el tipo de respuesta basado en el contenido de la página.Este método es muy útil cuando no sabes si la página tendrá contenido y quieres generar automáticamente el mensaje apropiado.
- Type Parameters:
T
- Tipo de contenido de la página- Parameters:
page
- Página de resultados- Returns:
- ResultResponse con mensaje apropiado según el contenido
Ejemplo:
Page<User> results = userService.search(criteria); // Automáticamente elige entre successPage() o emptyPage() ResultResponse<Page<User>, String> response = PaginationResponseUtils.autoResponse(results); if (results.hasContent()) { // Mensaje: "Se encontraron X resultados de Y totales" } else { // Mensaje: "No se encontraron resultados para los criterios especificados" }
-