refactor and docs
This commit is contained in:
parent
ff8dd10f52
commit
84083be396
7 changed files with 99 additions and 23 deletions
|
|
@ -3,26 +3,18 @@ package ru.spcex.clearing.scheduler.config.validation;
|
|||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.scheduler.ClearingCalendar;
|
||||
import ru.clearing.classes.statics.data.security.Security;
|
||||
import ru.clearing.platform.dictionary.DayStatusDictionary;
|
||||
import ru.clearing.platform.dictionary.TaskDictionary;
|
||||
import ru.clearing.platform.dictionary.TaskStatusDictionary;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.scheduler.error.ValidationError;
|
||||
import ru.spcex.clearing.scheduler.validation.rules.common.IdPresentRule;
|
||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Configuration
|
||||
public class ValidationConfig {
|
||||
|
|
@ -39,19 +31,4 @@ public class ValidationConfig {
|
|||
return imdg;
|
||||
}
|
||||
|
||||
@Bean("commonDeleteRequestValidator")
|
||||
public Function<CommonDeleteRequest, IValidator> commonDeleteRequestValidator() {
|
||||
return commonDeleteRequest -> {
|
||||
ImdgValidationContext<CommonDeleteRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(commonDeleteRequest);
|
||||
return new ValidatorImpl<>(context,
|
||||
IdPresentRule.instance("id",
|
||||
CommonDeleteRequest::getId,
|
||||
IMDGDistributedNames.Map_ClearingCalendar,
|
||||
ClearingCalendar.class,
|
||||
ValidationError.RecordNotFound)
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,12 +9,27 @@ import java.time.LocalDate;
|
|||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* Проверка поля с LocalDate. Условие проверки: поверяемая дата >= текущая дата
|
||||
* @param <R> Класс проверяемого объекта
|
||||
*/
|
||||
public record DateNotBeforeRule<R>(String fieldName, Function<R, LocalDate> getter, boolean required) implements IValidationRule<ImdgValidationContext<R>> {
|
||||
|
||||
/**
|
||||
* @param fieldName Название поля класса, используется для передачи ошибки
|
||||
* @param getter Метод получения проверяемой даты
|
||||
* @param required Флаг обязательности поля
|
||||
* @param <R> Класс проверяемого объекта
|
||||
*/
|
||||
public static <R> DateNotBeforeRule<R> instance(String fieldName, Function<R, LocalDate> getter, boolean required) {
|
||||
return new DateNotBeforeRule<>(fieldName, getter, required);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param fieldName Название поля класса, используется для передачи ошибки
|
||||
* @param getter Метод получения проверяемой даты
|
||||
* @param <R> Класс проверяемого объекта
|
||||
*/
|
||||
public static <R> DateNotBeforeRule<R> instance(String fieldName, Function<R, LocalDate> getter) {
|
||||
return new DateNotBeforeRule<>(fieldName, getter, true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,12 +11,26 @@ import java.util.Map;
|
|||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* Проверка поля с кодом из словаря (таблицы *_dictionary)
|
||||
* @param <R> Класс проверяемого объекта
|
||||
* @param <D> Класс словаря
|
||||
*/
|
||||
public record DictionaryPresentRule<R, D extends AbstractDictionary>(String fieldName,
|
||||
Function<R, String> getter,
|
||||
String dictionaryName,
|
||||
Class<D> dictionaryClass,
|
||||
boolean required) implements IValidationRule<ImdgValidationContext<R>> {
|
||||
|
||||
/**
|
||||
* @param fieldName Название поля
|
||||
* @param getter Метод получения проверяемого значения
|
||||
* @param dictionaryName Название словаря (см. IMDGDistributedNames)
|
||||
* @param dictionaryClass Класс словаря (классы *Dictionary.class)
|
||||
* @param required Флаг обязательности
|
||||
* @param <R> Класс проверяемого объекта
|
||||
* @param <D> Класс словаря
|
||||
*/
|
||||
public static <R, D extends AbstractDictionary> DictionaryPresentRule<R, D> instance(String fieldName,
|
||||
Function<R, String> getter,
|
||||
String dictionaryName,
|
||||
|
|
@ -25,6 +39,14 @@ public record DictionaryPresentRule<R, D extends AbstractDictionary>(String fiel
|
|||
return new DictionaryPresentRule<>(fieldName, getter, dictionaryName, dictionaryClass, required);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param fieldName Название поля
|
||||
* @param getter Метод получения проверяемого значения
|
||||
* @param dictionaryName Название словаря (см. IMDGDistributedNames)
|
||||
* @param dictionaryClass Класс словаря (классы *Dictionary.class)
|
||||
* @param <R> Класс проверяемого объекта
|
||||
* @param <D> Класс словаря
|
||||
*/
|
||||
public static <R, D extends AbstractDictionary> DictionaryPresentRule<R, D> instance(String fieldName,
|
||||
Function<R, String> getter,
|
||||
String dictionaryName,
|
||||
|
|
|
|||
|
|
@ -9,11 +9,24 @@ import ru.spcex.platform.utils.validation.IValidationRule;
|
|||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* Проверка поля со значением из множества (enum)
|
||||
* @param <R> Класс проверяемого объекта
|
||||
* @param <E> Enum
|
||||
*/
|
||||
public record EnumPresentRule<R, E extends IEnumKey>(String fieldName,
|
||||
Function<R, String> getter,
|
||||
E[] enumValues,
|
||||
boolean required) implements IValidationRule<ImdgValidationContext<R>> {
|
||||
|
||||
/**
|
||||
* @param fieldName Название поля
|
||||
* @param getter Метод получения проверяемого значения
|
||||
* @param enumValues Значения из проверяемого множества (Enum.values())
|
||||
* @param required Флаг обязательности
|
||||
* @param <R> Класс проверяемого объекта
|
||||
* @param <E> Enum
|
||||
*/
|
||||
public static <R, E extends IEnumKey> EnumPresentRule<R, E> instance(String fieldName,
|
||||
Function<R, String> getter,
|
||||
E[] enumValues,
|
||||
|
|
@ -21,6 +34,13 @@ public record EnumPresentRule<R, E extends IEnumKey>(String fieldName,
|
|||
return new EnumPresentRule<>(fieldName, getter, enumValues, required);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param fieldName Название поля
|
||||
* @param getter Метод получения проверяемого значения
|
||||
* @param enumValues Значения из проверяемого множества (Enum.values())
|
||||
* @param <R> Класс проверяемого объекта
|
||||
* @param <E> Enum
|
||||
*/
|
||||
public static <R, E extends IEnumKey> EnumPresentRule<R, E> instance(String fieldName,
|
||||
Function<R, String> getter,
|
||||
E[] enumValues) {
|
||||
|
|
|
|||
|
|
@ -8,8 +8,19 @@ import ru.spcex.platform.utils.validation.IValidationRule;
|
|||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* Проверка обязательности поля (not null)
|
||||
* @param <R> Класс проверяемого объекта
|
||||
* @param <V> Класс проверяемого значения
|
||||
*/
|
||||
public record FieldRequiredRule<R, V>(String fieldName, Function<R, V> getter) implements IValidationRule<ImdgValidationContext<R>> {
|
||||
|
||||
/**
|
||||
* @param fieldName Название поля
|
||||
* @param getter Метод получения значения
|
||||
* @param <R> Класс проверяемого объекта
|
||||
* @param <V> Класс проверяемого значения
|
||||
*/
|
||||
public static <R, V> FieldRequiredRule<R, V> instance(String fieldName, Function<R, V> getter) {
|
||||
return new FieldRequiredRule<>(fieldName, getter);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,11 @@ import java.util.Map;
|
|||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* Проверка наличия связанного по Id объекта в базе
|
||||
* @param <R> Класс проверяемого объекта
|
||||
* @param <V> Класс связанного объекта
|
||||
*/
|
||||
public record IdPresentRule<R, V extends SpcexObjectBase>(
|
||||
String fieldName,
|
||||
Function<R, Long> idGetter,
|
||||
|
|
@ -21,6 +26,17 @@ public record IdPresentRule<R, V extends SpcexObjectBase>(
|
|||
boolean required
|
||||
) implements IValidationRule<ImdgValidationContext<R>> {
|
||||
|
||||
/**
|
||||
* @param fieldName Название поля, содержащего Id
|
||||
* @param idGetter Метод получения Id
|
||||
* @param mapName Название мапы связанного объекта (см. IMDGDistributedNames)
|
||||
* @param mapClass Класс связанного объекта
|
||||
* @param idNotPresentError Ошибка, которая будет возвращена, если Id не найден
|
||||
* @param required Флаг обязательности
|
||||
* @param additionalChecks Дополнительные проверки, которые можно провести со связанным объектом
|
||||
* @param <R> Класс проверяемого объекта
|
||||
* @param <V> Класс связанного объекта
|
||||
*/
|
||||
@SafeVarargs
|
||||
public static <R, V extends SpcexObjectBase> IdPresentRule<R, V> instance(String fieldName,
|
||||
Function<R, Long> idGetter,
|
||||
|
|
|
|||
|
|
@ -9,12 +9,27 @@ import java.time.LocalTime;
|
|||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* Проверка поля с LocalTime. Условие проверки: проверяемое время >= текущее время
|
||||
* @param <R> Класс проверяемого объекта
|
||||
*/
|
||||
public record TimeNotBeforeRule<R>(String fieldName, Function<R, LocalTime> getter, boolean required) implements IValidationRule<ImdgValidationContext<R>> {
|
||||
|
||||
/**
|
||||
* @param fieldName Название поля класса, используется для передачи ошибки
|
||||
* @param getter Метод получения проверяемого времени
|
||||
* @param required Флаг обязательности поля
|
||||
* @param <R> Класс проверяемого объекта
|
||||
*/
|
||||
public static <R> TimeNotBeforeRule<R> instance(String fieldName, Function<R, LocalTime> getter, boolean required) {
|
||||
return new TimeNotBeforeRule<>(fieldName, getter, required);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param fieldName Название поля класса, используется для передачи ошибки
|
||||
* @param getter Метод получения проверяемого времени
|
||||
* @param <R> Класс проверяемого объекта
|
||||
*/
|
||||
public static <R> TimeNotBeforeRule<R> instance(String fieldName, Function<R, LocalTime> getter) {
|
||||
return new TimeNotBeforeRule<>(fieldName, getter, true);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue