Files
erp-imprimelibros/src/main/java/com/imprimelibros/erp/shared/validation/NoRangeOverlap.java

36 lines
1.2 KiB
Java

package com.imprimelibros.erp.shared.validation;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.*;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;
@Documented
@Target(TYPE)
@Retention(RUNTIME)
@Constraint(validatedBy = NoRangeOverlapValidator.class)
public @interface NoRangeOverlap {
// Campos obligatorios
String min(); // nombre del campo min (Integer/Long/etc.)
String max(); // nombre del campo max
// Campos opcionales
String id() default "id"; // nombre del campo ID (para excluir self en update)
String[] partitionBy() default {}; // ej. {"tipoEncuadernacion","tipoCubierta"}
// Soft delete opcional
String deletedFlag() default ""; // ej. "deleted" (si vacío, no se aplica filtro)
boolean deletedActiveValue() default false; // qué valor significa "activo" (normalmente false)
// Mensajes
String message() default "{validation.range.overlaps}";
String invalidRangeMessage() default "{validation.range.invalid}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}