FieldRequiredRule add additionalChecks

This commit is contained in:
akulikov 2023-04-06 10:27:41 +03:00
parent 0c4d747dde
commit a45445340a

View file

@ -18,7 +18,8 @@ import java.util.function.Function;
public record FieldRequiredRule<R, V>( public record FieldRequiredRule<R, V>(
String fieldName, String fieldName,
Function<R, V> getter, Function<R, V> getter,
IErrorEnumId errorEmptyRequiredValue IErrorEnumId errorEmptyRequiredValue,
Function<V, IErrorEnumId>[] additionalChecks
) implements IValidationRule<ImdgValidationContext<R>> { ) implements IValidationRule<ImdgValidationContext<R>> {
/** /**
@ -28,9 +29,12 @@ public record FieldRequiredRule<R, V>(
* @param <R> Класс проверяемого объекта * @param <R> Класс проверяемого объекта
* @param <V> Класс проверяемого значения * @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"); if (errorEmptyRequiredValue == null) throw new IllegalArgumentException("Empty errorEmptyRequiredValue");
return new FieldRequiredRule<>(fieldName, getter, errorEmptyRequiredValue); return new FieldRequiredRule<>(fieldName, getter, errorEmptyRequiredValue, additionalChecks);
} }
@Override @Override
@ -38,6 +42,11 @@ public record FieldRequiredRule<R, V>(
R validatedObject = context.getValidatedObject(); R validatedObject = context.getValidatedObject();
V value = getter.apply(validatedObject); V value = getter.apply(validatedObject);
if (value == null) return of(errorEmptyRequiredValue, fieldName); 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(); return empty();
} }