Aplicação de restrições

Limpeza de Dados em Java

Dennis Lee

Software Engineer

Controle de qualidade dos dados

  • Anotações de validação: controle de qualidade dos dados
  • Erros: países ausentes, valores inválidos, caixas negativas enviadas
  • Erros de digitação: 1000 caixas em vez de 100

 

 

Vendedor(a) País Produto Data Valor Caixas enviadas
James Rudeforth UK Mint Chip Choco 4-Jan-22 $5320 100
Van Tuxwell Índia 85% Dark Bars 1-Aug-22 $7896 94
Gigi Bohling EUA Peanut Butter Cubes 7-Jul-22 $4501 91
Limpeza de Dados em Java

Anotações básicas de validação

import jakarta.validation.constraints.NotNull;     // Import rules for empty fields
import jakarta.validation.constraints.Size;        // Import rules for string length

public class ChocolateSale {
    @NotNull(message = "Salesperson cannot be empty")
    private String salesperson;


@NotNull(message = "Country cannot be empty") // Multiple rules can be stacked @Size(min = 2, max = 50) // Enforces country name length private String country;
@NotNull(message = "Product cannot be empty") private String product; }
Limpeza de Dados em Java

Restrições numéricas

import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
// We will show message outputs later
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; }
Limpeza de Dados em Java

Imports para aplicar restrições

// Stores unique validation errors (no duplicates)
import java.util.Set;
// Holds details about a single validation error (field, message, etc.)
import jakarta.validation.ConstraintViolation;
// Entry point for creating validators
import jakarta.validation.Validation;
// Checks data against rules
import jakarta.validation.Validator;
// Creates configured validators
import jakarta.validation.ValidatorFactory;
// Thrown when validation fails
import jakarta.validation.ConstraintViolationException;
Limpeza de Dados em Java

Implementando o validador

class SalesValidator {
    // Create tools for checking our data
    private static final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

// Get a validator to check sales records private static final Validator validator = factory.getValidator();
public static Set<ConstraintViolation<ChocolateSale>> validateSale(ChocolateSale sale) { // Check sale record and return any problems found return validator.validate(sale); } }
Limpeza de Dados em Java

Lidando com resultados da validação

public class Main {
    public static void main(String[] args) {
        // Create sale with some invalid data (null country, negative amount)
        ChocolateSale sale = new ChocolateSale("James Rudeforth", null, "Mint Chip Choco",
                LocalDate.parse("2022-01-04"), -5320.0, 1500);


// Check sale for validation violations Set<ConstraintViolation<ChocolateSale>> violations = SalesValidator.validateSale(sale); // Print each validation error message violations.forEach(violation -> System.out.println(violation.getMessage()));
// If any violations found, throw exception if (!violations.isEmpty()) throw new ConstraintViolationException(violations); } }
Limpeza de Dados em Java

Saída da validação

Country cannot be empty
Sales amount must be positive
Cannot ship more than 1000 boxes

Exception in thread "main" jakarta.validation.ConstraintViolationException
Limpeza de Dados em Java

Validação evita erros caros

  • @NotNull, @Size, @Min e @Max pegam erros cedo
  • Aplique validação a problemas de negócio gerais
  • Primeira linha de defesa contra erros caros

Grãos de cacau peneirados em uma fábrica

Limpeza de Dados em Java

Vamos praticar!

Limpeza de Dados em Java

Preparing Video For Download...