FieldRequiredRule, add additional checks
This commit is contained in:
parent
ce9ea6b1b2
commit
6707e361d9
1 changed files with 30 additions and 7 deletions
|
|
@ -15,7 +15,8 @@ import java.util.function.Function;
|
||||||
* @param fieldName Название поля
|
* @param fieldName Название поля
|
||||||
* @param getter Метод получения значения
|
* @param getter Метод получения значения
|
||||||
* @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое
|
* @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое
|
||||||
* @param additionalChecks Дополнительные проверки, связанные с этим полем
|
* @param additionalChecks Дополнительные проверки, связанные с этим полем. Выполняются при required == true
|
||||||
|
* @param required Флаг обязательности поля
|
||||||
* @param <R> Класс проверяемого объекта
|
* @param <R> Класс проверяемого объекта
|
||||||
* @param <V> Класс проверяемого значения
|
* @param <V> Класс проверяемого значения
|
||||||
*/
|
*/
|
||||||
|
|
@ -23,9 +24,29 @@ public record FieldRequiredRule<R, V>(
|
||||||
String fieldName,
|
String fieldName,
|
||||||
Function<R, V> getter,
|
Function<R, V> getter,
|
||||||
IErrorEnumId errorEmptyRequiredValue,
|
IErrorEnumId errorEmptyRequiredValue,
|
||||||
|
boolean required,
|
||||||
Function<V, IErrorEnumId>[] additionalChecks
|
Function<V, IErrorEnumId>[] additionalChecks
|
||||||
) implements IValidationRule<ImdgValidationContext<R>> {
|
) implements IValidationRule<ImdgValidationContext<R>> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param fieldName Название поля
|
||||||
|
* @param getter Метод получения значения
|
||||||
|
* @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое
|
||||||
|
* @param additionalChecks Дополнительные проверки, связанные с этим полем. Выполняются при required == true
|
||||||
|
* @param required Флаг обязательности поля
|
||||||
|
* @param <R> Класс проверяемого объекта
|
||||||
|
* @param <V> Класс проверяемого значения
|
||||||
|
*/
|
||||||
|
@SafeVarargs
|
||||||
|
public static <R, V> FieldRequiredRule<R, V> instance(String fieldName,
|
||||||
|
Function<R, V> getter,
|
||||||
|
IErrorEnumId errorEmptyRequiredValue,
|
||||||
|
boolean required,
|
||||||
|
Function<V, IErrorEnumId>... additionalChecks) {
|
||||||
|
if (errorEmptyRequiredValue == null) throw new IllegalArgumentException("Empty errorEmptyRequiredValue");
|
||||||
|
return new FieldRequiredRule<>(fieldName, getter, errorEmptyRequiredValue, required, additionalChecks);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param fieldName Название поля
|
* @param fieldName Название поля
|
||||||
* @param getter Метод получения значения
|
* @param getter Метод получения значения
|
||||||
|
|
@ -40,18 +61,20 @@ public record FieldRequiredRule<R, V>(
|
||||||
IErrorEnumId errorEmptyRequiredValue,
|
IErrorEnumId errorEmptyRequiredValue,
|
||||||
Function<V, IErrorEnumId>... additionalChecks) {
|
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, additionalChecks);
|
return new FieldRequiredRule<>(fieldName, getter, errorEmptyRequiredValue, true, additionalChecks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<EnumMessage> validate(ImdgValidationContext<R> context) {
|
public Optional<EnumMessage> validate(ImdgValidationContext<R> context) {
|
||||||
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 (required) {
|
||||||
for (Function<V, IErrorEnumId> additionalCheck : additionalChecks) {
|
if (value == null) return of(errorEmptyRequiredValue, fieldName);
|
||||||
IErrorEnumId validationError = additionalCheck.apply(value);
|
for (Function<V, IErrorEnumId> additionalCheck : additionalChecks) {
|
||||||
if (validationError != null)
|
IErrorEnumId validationError = additionalCheck.apply(value);
|
||||||
return of(validationError, fieldName);
|
if (validationError != null)
|
||||||
|
return of(validationError, fieldName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return empty();
|
return empty();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue