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> 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> 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> 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> 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 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() + '}'; } }