Validador de Data e Hora Futura - Felipe-builder/desafio-tecnico-backend-conexa GitHub Wiki

Validador de Data e Hora Futura

Introdução

Este documento descreve o processo de validação de datas e horas futuras em Java usando a anotação @FutureDateTime e a classe FutureDateTimeValidator.

O que é @FutureDateTime?

A anotação @FutureDateTime é utilizada para garantir que um campo de data e hora em um DTO seja uma data futura.

Como Usar

Adicione a anotação @FutureDateTime ao campo de data e hora no seu DTO:

@JsonProperty("dataHora")
@FutureDateTime(message = "A data e hora devem estar no futuro.")
private String dateTime;

A mensagem fornecida será exibida quando a validação falhar.

Exemplo de Implementação

Aqui está um exemplo básico de implementação da anotação e do validador:

@Documented
@Constraint(validatedBy = FutureDateTimeValidator.class)
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface FutureDateTime {
    String message() default "The date and time must be in the future";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

public class FutureDateTimeValidator implements ConstraintValidator<FutureDateTime, String> {
    // Lógica de validação aqui
}

Exemplos de Uso

Request JSON

{
  "dataHora": "2023-12-31T23:59:59"
}

Resposta de Erro

{
  "status": 400,
  "error": "Bad Request",
  "message": "The date and time must be in the future",
  "timestamp": "2023-07-01T12:34:56"
}

Conclusão

A validação de datas e horas futuras é essencial para garantir a integridade dos dados em seu sistema. Ao usar a anotação @FutureDateTime, você pode garantir que apenas datas futuras sejam aceitas nos seus DTOs.