@Override
    public Boolean isValid() {
        constraintViolations = new HashMap<String, String>();
        
        // nom
        if (this.nom.isEmpty()) {
            constraintViolations.put("NomIsValid", "Le nom est obligatoire.");
        } else {
            if (this.nom.length() > 50) {
                constraintViolations.put("NomIsValid", "Le nom doit comporter 50 caractères maximum.");
            }
        }
        
        // prénom
        if (this.prenom.isEmpty()) {
            constraintViolations.put("PrenomIsValid", "Le prénom est obligatoire.");
        } else {
            if (this.prenom.length() > 50) {
                constraintViolations.put("PrenomIsValid", "Le prénom doit comporter 50 caractères maximum.");
            }
        }
        
        // email
        if (!this.email.isEmpty()) {
            if (this.email.matches("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$")) {
                constraintViolations.put("EmailIsValid", "Le format de l'email n'est pas valide.");
            } else {
                if (this.email.length() > 50) {
                    constraintViolations.put("EmailIsValid", "L'email doit comporter 50 caractères maximum.");
                }
            }
        }
        
        // téléphone
        if (!this.telephone.isEmpty()) {
            if (this.telephone.matches("^[0-9].[0-9].[0-9].[0-9].[0-9]$")) {
                constraintViolations.put("TelephoneIsValid", "Le format de téléphone n'est pas valide.");
            }
        }
        
        return constraintViolations.isEmpty();
    }