Class PaginationResponseUtils

java.lang.Object
com.aceelv.utilsmongodb.pagination.response.PaginationResponseUtils

public class PaginationResponseUtils extends Object
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 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"
       }