Files
gbcm-server-api/src/main/java/com/gbcm/server/api/exceptions/ValidationException.java
dahoud f77776820e Task 1.1 - DTOs et Interfaces API de base
- Création de tous les DTOs d'authentification (LoginRequestDTO, LoginResponseDTO, TokenDTO, PasswordResetDTO)
- Création des DTOs utilisateur (UserDTO, CreateUserDTO, UpdateUserDTO)
- Création des DTOs communs (PagedResultDTO, ErrorResponseDTO, SuccessResponseDTO)
- Création de toutes les classes d'exception (GBCMException, AuthenticationException, AuthorizationException, ValidationException, ResourceNotFoundException, BusinessRuleException)
- Création des enums métier (ServiceType, WorkshopPackage, PaymentStatus, SessionStatus, InvoiceStatus)
- Amélioration de l'interface AuthService avec documentation complète
- Création de l'interface UserService avec tous les endpoints CRUD
- Documentation Javadoc complète en français sur toutes les classes
- Annotations OpenAPI/Swagger sur toutes les interfaces
- Validation Jakarta sur tous les DTOs
- Compilation réussie du module API
2025-10-06 19:53:31 +00:00

96 lines
2.7 KiB
Java

package com.gbcm.server.api.exceptions;
import java.util.List;
import java.util.Map;
/**
* Exception levée lors d'erreurs de validation des données.
* Contient des détails sur les champs en erreur et leurs messages.
*
* @author GBCM Development Team
* @version 1.0
* @since 1.0
*/
public class ValidationException extends GBCMException {
/**
* Map des erreurs de validation par champ.
*/
private final Map<String, List<String>> fieldErrors;
/**
* Constructeur avec message.
*
* @param message le message d'erreur de validation
*/
public ValidationException(String message) {
super(message, "VALIDATION_ERROR");
this.fieldErrors = Map.of();
}
/**
* Constructeur avec message et erreurs de champs.
*
* @param message le message d'erreur de validation
* @param fieldErrors les erreurs par champ
*/
public ValidationException(String message, Map<String, List<String>> fieldErrors) {
super(message, "VALIDATION_ERROR");
this.fieldErrors = fieldErrors != null ? fieldErrors : Map.of();
}
/**
* Constructeur avec message, erreurs de champs et cause.
*
* @param message le message d'erreur de validation
* @param fieldErrors les erreurs par champ
* @param cause la cause de l'exception
*/
public ValidationException(String message, Map<String, List<String>> fieldErrors, Throwable cause) {
super(message, "VALIDATION_ERROR", cause);
this.fieldErrors = fieldErrors != null ? fieldErrors : Map.of();
}
/**
* Retourne les erreurs de validation par champ.
*
* @return une map des erreurs par champ
*/
public Map<String, List<String>> getFieldErrors() {
return fieldErrors;
}
/**
* Vérifie si l'exception contient des erreurs de champs.
*
* @return true si des erreurs de champs sont présentes, false sinon
*/
public boolean hasFieldErrors() {
return !fieldErrors.isEmpty();
}
/**
* Retourne les erreurs pour un champ spécifique.
*
* @param fieldName le nom du champ
* @return la liste des erreurs pour ce champ, ou une liste vide
*/
public List<String> getFieldErrors(String fieldName) {
return fieldErrors.getOrDefault(fieldName, List.of());
}
/**
* Représentation textuelle de l'exception.
*
* @return une chaîne représentant l'exception
*/
@Override
public String toString() {
return "ValidationException{" +
"errorCode='" + getErrorCode() + '\'' +
", message='" + getMessage() + '\'' +
", fieldErrorsCount=" + fieldErrors.size() +
'}';
}
}