FieldRequiredRule add additionalChecks
This commit is contained in:
parent
0c4d747dde
commit
a45445340a
1 changed files with 12 additions and 3 deletions
|
|
@ -18,7 +18,8 @@ import java.util.function.Function;
|
|||
public record FieldRequiredRule<R, V>(
|
||||
String fieldName,
|
||||
Function<R, V> getter,
|
||||
IErrorEnumId errorEmptyRequiredValue
|
||||
IErrorEnumId errorEmptyRequiredValue,
|
||||
Function<V, IErrorEnumId>[] additionalChecks
|
||||
) implements IValidationRule<ImdgValidationContext<R>> {
|
||||
|
||||
/**
|
||||
|
|
@ -28,9 +29,12 @@ public record FieldRequiredRule<R, V>(
|
|||
* @param <R> Класс проверяемого объекта
|
||||
* @param <V> Класс проверяемого значения
|
||||
*/
|
||||
public static <R, V> FieldRequiredRule<R, V> instance(String fieldName, Function<R, V> getter, IErrorEnumId errorEmptyRequiredValue) {
|
||||
public static <R, V> FieldRequiredRule<R, V> instance(String fieldName,
|
||||
Function<R, V> getter,
|
||||
IErrorEnumId errorEmptyRequiredValue,
|
||||
Function<V, IErrorEnumId> ... 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, V>(
|
|||
R validatedObject = context.getValidatedObject();
|
||||
V value = getter.apply(validatedObject);
|
||||
if (value == null) return of(errorEmptyRequiredValue, fieldName);
|
||||
for (Function<V, IErrorEnumId> additionalCheck : additionalChecks) {
|
||||
IErrorEnumId validationError = additionalCheck.apply(value);
|
||||
if (validationError != null)
|
||||
return of(validationError, fieldName);
|
||||
}
|
||||
return empty();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue