diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java index 370f0147d..475e16e77 100644 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java +++ b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java @@ -18,7 +18,8 @@ import java.util.function.Function; public record FieldRequiredRule( String fieldName, Function getter, - IErrorEnumId errorEmptyRequiredValue + IErrorEnumId errorEmptyRequiredValue, + Function[] additionalChecks ) implements IValidationRule> { /** @@ -28,9 +29,12 @@ public record FieldRequiredRule( * @param Класс проверяемого объекта * @param Класс проверяемого значения */ - public static FieldRequiredRule instance(String fieldName, Function getter, IErrorEnumId errorEmptyRequiredValue) { + public static FieldRequiredRule instance(String fieldName, + Function getter, + IErrorEnumId errorEmptyRequiredValue, + Function ... additionalChecks) { if (errorEmptyRequiredValue == null) throw new IllegalArgumentException("Empty errorEmptyRequiredValue"); - return new FieldRequiredRule<>(fieldName, getter, errorEmptyRequiredValue); + return new FieldRequiredRule<>(fieldName, getter, errorEmptyRequiredValue, additionalChecks); } @Override @@ -38,6 +42,11 @@ public record FieldRequiredRule( R validatedObject = context.getValidatedObject(); V value = getter.apply(validatedObject); if (value == null) return of(errorEmptyRequiredValue, fieldName); + for (Function additionalCheck : additionalChecks) { + IErrorEnumId validationError = additionalCheck.apply(value); + if (validationError != null) + return of(validationError, fieldName); + } return empty(); }