Merge remote-tracking branch 'origin/CLS_258_259' into CLS_258_259
This commit is contained in:
commit
cd2c49b9d9
2 changed files with 48 additions and 27 deletions
|
|
@ -15,6 +15,7 @@ import java.util.function.Function;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Проверка поля с кодом из словаря (таблицы *_dictionary)
|
* Проверка поля с кодом из словаря (таблицы *_dictionary)
|
||||||
|
*
|
||||||
* @param <R> Класс проверяемого объекта
|
* @param <R> Класс проверяемого объекта
|
||||||
* @param <D> Класс словаря
|
* @param <D> Класс словаря
|
||||||
*/
|
*/
|
||||||
|
|
@ -24,58 +25,68 @@ public record DictionaryPresentRule<R, D extends AbstractDictionary>(String fiel
|
||||||
Class<D> dictionaryClass,
|
Class<D> dictionaryClass,
|
||||||
IErrorEnumId errorEmptyRequiredValue,
|
IErrorEnumId errorEmptyRequiredValue,
|
||||||
IErrorEnumId errorWrongDictionaryValue,
|
IErrorEnumId errorWrongDictionaryValue,
|
||||||
boolean required) implements IValidationRule<ImdgValidationContext<R>> {
|
boolean required,
|
||||||
|
Function<D, IErrorEnumId>[] additionalChecks) implements IValidationRule<ImdgValidationContext<R>> {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param fieldName Название поля
|
* @param fieldName Название поля
|
||||||
* @param getter Метод получения проверяемого значения
|
* @param getter Метод получения проверяемого значения
|
||||||
* @param dictionaryName Название словаря (см. IMDGDistributedNames)
|
* @param dictionaryName Название словаря (см. IMDGDistributedNames)
|
||||||
* @param dictionaryClass Класс словаря (классы *Dictionary.class)
|
* @param dictionaryClass Класс словаря (классы *Dictionary.class)
|
||||||
* @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое
|
* @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое
|
||||||
* @param errorWrongDictionaryValue Ошибка, которая будет возвращена, если поле не найдено в словаре
|
* @param errorWrongDictionaryValue Ошибка, которая будет возвращена, если поле не найдено в словаре
|
||||||
* @param required Флаг обязательности
|
* @param required Флаг обязательности
|
||||||
* @param <R> Класс проверяемого объекта
|
* @param additionalChecks Дополнительные проверки, связанные с этим полем
|
||||||
* @param <D> Класс словаря
|
* @param <R> Класс проверяемого объекта
|
||||||
|
* @param <D> Класс словаря
|
||||||
*/
|
*/
|
||||||
|
@SafeVarargs
|
||||||
public static <R, D extends AbstractDictionary> DictionaryPresentRule<R, D> instance(String fieldName,
|
public static <R, D extends AbstractDictionary> DictionaryPresentRule<R, D> instance(String fieldName,
|
||||||
Function<R, String> getter,
|
Function<R, String> getter,
|
||||||
String dictionaryName,
|
String dictionaryName,
|
||||||
Class<D> dictionaryClass,
|
Class<D> dictionaryClass,
|
||||||
IErrorEnumId errorEmptyRequiredValue,
|
IErrorEnumId errorEmptyRequiredValue,
|
||||||
IErrorEnumId errorWrongDictionaryValue,
|
IErrorEnumId errorWrongDictionaryValue,
|
||||||
boolean required) {
|
boolean required,
|
||||||
|
Function<D, IErrorEnumId>... additionalChecks) {
|
||||||
return new DictionaryPresentRule<>(fieldName,
|
return new DictionaryPresentRule<>(fieldName,
|
||||||
getter,
|
getter,
|
||||||
dictionaryName,
|
dictionaryName,
|
||||||
dictionaryClass,
|
dictionaryClass,
|
||||||
errorEmptyRequiredValue,
|
errorEmptyRequiredValue,
|
||||||
errorWrongDictionaryValue,
|
errorWrongDictionaryValue,
|
||||||
required);
|
required,
|
||||||
|
additionalChecks);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param fieldName Название поля
|
* @param fieldName Название поля
|
||||||
* @param getter Метод получения проверяемого значения
|
* @param getter Метод получения проверяемого значения
|
||||||
* @param dictionaryName Название словаря (см. IMDGDistributedNames)
|
* @param dictionaryName Название словаря (см. IMDGDistributedNames)
|
||||||
* @param dictionaryClass Класс словаря (классы *Dictionary.class)
|
* @param dictionaryClass Класс словаря (классы *Dictionary.class)
|
||||||
* @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое
|
* @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое
|
||||||
* @param errorWrongDictionaryValue Ошибка, которая будет возвращена, если поле не найдено в словаре
|
* @param errorWrongDictionaryValue Ошибка, которая будет возвращена, если поле не найдено в словаре
|
||||||
* @param <R> Класс проверяемого объекта
|
* @param additionalChecks Дополнительные проверки, связанные с этим полем
|
||||||
* @param <D> Класс словаря
|
* @param <R> Класс проверяемого объекта
|
||||||
|
* @param <D> Класс словаря
|
||||||
*/
|
*/
|
||||||
|
@SafeVarargs
|
||||||
public static <R, D extends AbstractDictionary> DictionaryPresentRule<R, D> instance(String fieldName,
|
public static <R, D extends AbstractDictionary> DictionaryPresentRule<R, D> instance(String fieldName,
|
||||||
Function<R, String> getter,
|
Function<R, String> getter,
|
||||||
String dictionaryName,
|
String dictionaryName,
|
||||||
Class<D> dictionaryClass,
|
Class<D> dictionaryClass,
|
||||||
IErrorEnumId errorEmptyRequiredValue,
|
IErrorEnumId errorEmptyRequiredValue,
|
||||||
IErrorEnumId errorWrongDictionaryValue) {
|
IErrorEnumId errorWrongDictionaryValue,
|
||||||
|
Function<D, IErrorEnumId>... additionalChecks) {
|
||||||
return new DictionaryPresentRule<>(fieldName,
|
return new DictionaryPresentRule<>(fieldName,
|
||||||
getter,
|
getter,
|
||||||
dictionaryName,
|
dictionaryName,
|
||||||
dictionaryClass,
|
dictionaryClass,
|
||||||
errorEmptyRequiredValue,
|
errorEmptyRequiredValue,
|
||||||
errorWrongDictionaryValue,
|
errorWrongDictionaryValue,
|
||||||
true);
|
true,
|
||||||
|
additionalChecks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -97,6 +108,11 @@ public record DictionaryPresentRule<R, D extends AbstractDictionary>(String fiel
|
||||||
if (dictionaryFromMap == null) {
|
if (dictionaryFromMap == null) {
|
||||||
return of(errorWrongDictionaryValue, fieldName);
|
return of(errorWrongDictionaryValue, fieldName);
|
||||||
}
|
}
|
||||||
|
for (Function<D, IErrorEnumId> additionalCheck : additionalChecks) {
|
||||||
|
IErrorEnumId validationError = additionalCheck.apply(dictionaryFromMap);
|
||||||
|
if (validationError != null)
|
||||||
|
return of(validationError, fieldName);
|
||||||
|
}
|
||||||
return empty();
|
return empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,13 @@ import java.util.function.Function;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Проверка обязательности поля (not null)
|
* Проверка обязательности поля (not null)
|
||||||
|
*
|
||||||
|
* @param fieldName Название поля
|
||||||
|
* @param getter Метод получения значения
|
||||||
* @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое
|
* @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое
|
||||||
* @param <R> Класс проверяемого объекта
|
* @param additionalChecks Дополнительные проверки, связанные с этим полем
|
||||||
* @param <V> Класс проверяемого значения
|
* @param <R> Класс проверяемого объекта
|
||||||
|
* @param <V> Класс проверяемого значения
|
||||||
*/
|
*/
|
||||||
public record FieldRequiredRule<R, V>(
|
public record FieldRequiredRule<R, V>(
|
||||||
String fieldName,
|
String fieldName,
|
||||||
|
|
@ -23,17 +27,18 @@ public record FieldRequiredRule<R, V>(
|
||||||
) implements IValidationRule<ImdgValidationContext<R>> {
|
) implements IValidationRule<ImdgValidationContext<R>> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param fieldName Название поля
|
* @param fieldName Название поля
|
||||||
* @param getter Метод получения значения
|
* @param getter Метод получения значения
|
||||||
* @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое
|
* @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое
|
||||||
* @param <R> Класс проверяемого объекта
|
* @param additionalChecks Дополнительные проверки, связанные с этим полем
|
||||||
* @param <V> Класс проверяемого значения
|
* @param <R> Класс проверяемого объекта
|
||||||
|
* @param <V> Класс проверяемого значения
|
||||||
*/
|
*/
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
public static <R, V> FieldRequiredRule<R, V> instance(String fieldName,
|
public static <R, V> FieldRequiredRule<R, V> instance(String fieldName,
|
||||||
Function<R, V> getter,
|
Function<R, V> getter,
|
||||||
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, additionalChecks);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue