Nettoyer des données en Java
Dennis Lee
Software Engineer
| Commercial | Pays | Produit | Date | Montant | Boîtes expédiées |
|---|---|---|---|---|---|
| James Rudeforth | UK | Mint Chip Choco | 4-Jan-22 | $5320 | 100 |
| Van Tuxwell | India | 85% Dark Bars | 1-Aug-22 | $7896 | 94 |
| Gigi Bohling | US | Peanut Butter Cubes | 7-Jul-22 | $4501 | 91 |
import jakarta.validation.constraints.NotNull; // Règles pour champs vides import jakarta.validation.constraints.Size; // Règles pour la longueur des chaînes public class ChocolateSale { @NotNull(message = "Salesperson cannot be empty") private String salesperson;@NotNull(message = "Country cannot be empty") // Plusieurs règles peuvent être empilées @Size(min = 2, max = 50) // Impose la longueur du nom de pays private String country;@NotNull(message = "Product cannot be empty") private String product; }
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
// Nous afficherons les messages plus tard public class ChocolateSale { @Min(value = 0, message = "Sales amount must be positive") private Double amount;@Min(value = 1, message = "Must ship at least 1 box") @Max(value = 1000, message = "Cannot ship more than 1000 boxes") private Integer boxesShipped; }
// Stocke les erreurs de validation uniques (pas de doublons)
import java.util.Set;
// Détails d’une erreur (champ, message, etc.)
import jakarta.validation.ConstraintViolation;
// Point d’entrée pour créer des validateurs
import jakarta.validation.Validation;
// Vérifie les données par rapport aux règles
import jakarta.validation.Validator;
// Crée des validateurs configurés
import jakarta.validation.ValidatorFactory;
// Levée quand la validation échoue
import jakarta.validation.ConstraintViolationException;
class SalesValidator { // Outils pour contrôler nos données private static final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();// Obtenir un validateur pour contrôler les ventes private static final Validator validator = factory.getValidator();public static Set<ConstraintViolation<ChocolateSale>> validateSale(ChocolateSale sale) { // Vérifier l’enregistrement et renvoyer les problèmes trouvés return validator.validate(sale); } }
public class Main { public static void main(String[] args) { // Créer une vente avec des données invalides (pays nul, montant négatif) ChocolateSale sale = new ChocolateSale("James Rudeforth", null, "Mint Chip Choco", LocalDate.parse("2022-01-04"), -5320.0, 1500);// Vérifier les violations de validation Set<ConstraintViolation<ChocolateSale>> violations = SalesValidator.validateSale(sale); // Afficher chaque message d’erreur de validation violations.forEach(violation -> System.out.println(violation.getMessage()));// En cas de violations, lever une exception if (!violations.isEmpty()) throw new ConstraintViolationException(violations); } }
Le pays ne peut pas être vide Le montant des ventes doit être positif Impossible d’expédier plus de 1000 boîtesException in thread "main" jakarta.validation.ConstraintViolationException
@NotNull, @Size, @Min et @Max interceptent tôt les erreurs
Nettoyer des données en Java