validate from dictionaries
This commit is contained in:
parent
5b82cf4d22
commit
f91e15f2a4
2 changed files with 93 additions and 21 deletions
|
|
@ -28,6 +28,10 @@
|
|||
<groupId>ru.spcex.platform</groupId>
|
||||
<artifactId>platform-imdg-api-hazelcast-impl</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.spcex.clearing</groupId>
|
||||
<artifactId>dictionary</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.spcex.clearing</groupId>
|
||||
<artifactId>classes</artifactId>
|
||||
|
|
|
|||
|
|
@ -1,27 +1,32 @@
|
|||
package ru.spcex.clearing.scheduler;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import ru.clearing.platform.dictionary.AbstractDictionary;
|
||||
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.platform.messaging.domain.cud.schedule.*;
|
||||
import ru.spcex.platform.enumeration.DayStatus;
|
||||
import ru.spcex.platform.enumeration.Market;
|
||||
import ru.spcex.platform.enumeration.Status;
|
||||
import ru.spcex.platform.enumeration.Task;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public interface IRequestValidator<T> {
|
||||
List<ValidationError> validate(T req);
|
||||
List<ValidationError> validate(T req, ImdgProvider imdgProvider);
|
||||
|
||||
/**
|
||||
* Общий запрос на удаление
|
||||
*/
|
||||
IRequestValidator<CommonDeleteRequest> COMMON_DELETE_REQUEST = req -> {
|
||||
IRequestValidator<CommonDeleteRequest> COMMON_DELETE_REQUEST = (req, imdgProvider) -> {
|
||||
var errors = new LinkedList<ValidationError>();
|
||||
validateLong(req.id, "id", true, errors);
|
||||
return errors;
|
||||
|
|
@ -30,36 +35,56 @@ public interface IRequestValidator<T> {
|
|||
/**
|
||||
* Запрос на добавление ClearingCalendar
|
||||
*/
|
||||
IRequestValidator<ClearingCalendarNewRequest> CLEARING_CALENDAR_NEW_REQUEST = req -> {
|
||||
IRequestValidator<ClearingCalendarNewRequest> CLEARING_CALENDAR_NEW_REQUEST = (req, imdgProvider) -> {
|
||||
var errors = new LinkedList<ValidationError>();
|
||||
validateDate(req.clearingDate, "clearingDate", true, true, errors);
|
||||
validateLong(req.companyId, "companyId", false, errors);
|
||||
validateEnum(req.dayStatus, "dayStatus", true, errors, DayStatus.values());
|
||||
// validateEnum(req.dayStatus, "dayStatus", true, errors, DayStatus.values());
|
||||
validateDictionary(req.dayStatus,
|
||||
"dayStatus",
|
||||
true,
|
||||
imdgProvider.getImdg(IMDGDistributedNames.Map_DayStatusDictionary, DayStatusDictionary.class),
|
||||
errors);
|
||||
return errors;
|
||||
};
|
||||
|
||||
/**
|
||||
* Запрос на обновление ClearingCalendar
|
||||
*/
|
||||
IRequestValidator<ClearingCalendarUpdateRequest> CLEARING_CALENDAR_UPDATE_REQUEST = req -> {
|
||||
IRequestValidator<ClearingCalendarUpdateRequest> CLEARING_CALENDAR_UPDATE_REQUEST = (req, imdgProvider) -> {
|
||||
var errors = new LinkedList<ValidationError>();
|
||||
validateLong(req.id, "id", true, errors);
|
||||
validateLong(req.companyId, "companyId", false, errors);
|
||||
validateDate(req.clearingDate, "clearingDate", false, true, errors);
|
||||
validateEnum(req.dayStatus, "dayStatus", false, errors, DayStatus.values());
|
||||
// validateEnum(req.dayStatus, "dayStatus", false, errors, DayStatus.values());
|
||||
validateDictionary(req.dayStatus,
|
||||
"dayStatus",
|
||||
false,
|
||||
imdgProvider.getImdg(IMDGDistributedNames.Map_DayStatusDictionary, DayStatusDictionary.class),
|
||||
errors);
|
||||
return errors;
|
||||
};
|
||||
|
||||
/**
|
||||
* Запрос на добавление Planner
|
||||
*/
|
||||
IRequestValidator<PlannerNewRequest> PLANNER_NEW_REQUEST = req -> {
|
||||
IRequestValidator<PlannerNewRequest> PLANNER_NEW_REQUEST = (req, imdgProvider) -> {
|
||||
var errors = new LinkedList<ValidationError>();
|
||||
validateEnum(req.task, "task", true, errors, Task.values());
|
||||
// validateEnum(req.task, "task", true, errors, Task.values());
|
||||
validateDictionary(req.task,
|
||||
"task",
|
||||
true,
|
||||
imdgProvider.getImdg(IMDGDistributedNames.Map_TaskDictionary, TaskDictionary.class),
|
||||
errors);
|
||||
validateDate(req.clearingDate, "clearingDate", true, true, errors);
|
||||
validateTime(req.taskTime, "taskTime", true, true, errors);
|
||||
validateEnum(req.market, "market", false, errors, Market.values());
|
||||
validateEnum(req.taskStatus, "taskStatus", true, errors, Status.values());
|
||||
// validateEnum(req.taskStatus, "taskStatus", true, errors, Status.values());
|
||||
validateDictionary(req.taskStatus,
|
||||
"taskStatus",
|
||||
true,
|
||||
imdgProvider.getImdg(IMDGDistributedNames.Map_TaskStatusDictionary, TaskStatusDictionary.class),
|
||||
errors);
|
||||
validateLong(req.companyId, "companyId", false, errors);
|
||||
validateLong(req.securityId, "securityId", false, errors);
|
||||
return errors;
|
||||
|
|
@ -68,14 +93,24 @@ public interface IRequestValidator<T> {
|
|||
/**
|
||||
* Запрос на обновление Planner
|
||||
*/
|
||||
IRequestValidator<PlannerUpdateRequest> PLANNER_UPDATE_REQUEST = req -> {
|
||||
IRequestValidator<PlannerUpdateRequest> PLANNER_UPDATE_REQUEST = (req, imdgProvider) -> {
|
||||
var errors = new LinkedList<ValidationError>();
|
||||
validateLong(req.id, "id", true, errors);
|
||||
validateEnum(req.task, "task", false, errors, Task.values());
|
||||
// validateEnum(req.task, "task", false, errors, Task.values());
|
||||
validateDictionary(req.task,
|
||||
"task",
|
||||
false,
|
||||
imdgProvider.getImdg(IMDGDistributedNames.Map_TaskDictionary, TaskDictionary.class),
|
||||
errors);
|
||||
validateDate(req.clearingDate, "clearingDate", false, true, errors);
|
||||
validateTime(req.taskTime, "taskTime", false, true, errors);
|
||||
validateEnum(req.market, "market", false, errors, Market.values());
|
||||
validateEnum(req.taskStatus, "taskStatus", false, errors, Status.values());
|
||||
// validateEnum(req.taskStatus, "taskStatus", false, errors, Status.values());
|
||||
validateDictionary(req.taskStatus,
|
||||
"taskStatus",
|
||||
false,
|
||||
imdgProvider.getImdg(IMDGDistributedNames.Map_TaskStatusDictionary, TaskStatusDictionary.class),
|
||||
errors);
|
||||
validateLong(req.companyId, "companyId", false, errors);
|
||||
validateLong(req.securityId, "securityId", false, errors);
|
||||
return errors;
|
||||
|
|
@ -84,11 +119,21 @@ public interface IRequestValidator<T> {
|
|||
/**
|
||||
* Запрос на добавление PlannerTemplate
|
||||
*/
|
||||
IRequestValidator<PlannerTemplateNewRequest> PLANNER_TEMPLATE_NEW_REQUEST = req -> {
|
||||
IRequestValidator<PlannerTemplateNewRequest> PLANNER_TEMPLATE_NEW_REQUEST = (req, imdgProvider) -> {
|
||||
var errors = new LinkedList<ValidationError>();
|
||||
validateEnum(req.task, "task", true, errors, Task.values());
|
||||
// validateEnum(req.task, "task", true, errors, Task.values());
|
||||
validateDictionary(req.task,
|
||||
"task",
|
||||
true,
|
||||
imdgProvider.getImdg(IMDGDistributedNames.Map_TaskDictionary, TaskDictionary.class),
|
||||
errors);
|
||||
validateTime(req.taskTime, "taskTime", true, true, errors);
|
||||
validateEnum(req.taskStatus, "taskStatus", true, errors, Status.values());
|
||||
// validateEnum(req.taskStatus, "taskStatus", true, errors, Status.values());
|
||||
validateDictionary(req.taskStatus,
|
||||
"taskStatus",
|
||||
true,
|
||||
imdgProvider.getImdg(IMDGDistributedNames.Map_TaskStatusDictionary, TaskStatusDictionary.class),
|
||||
errors);
|
||||
validateLong(req.companyId, "companyId", false, errors);
|
||||
validateLong(req.securityId, "securityId", false, errors);
|
||||
return errors;
|
||||
|
|
@ -97,12 +142,22 @@ public interface IRequestValidator<T> {
|
|||
/**
|
||||
* Запрос на обновление PlannerTemplate
|
||||
*/
|
||||
IRequestValidator<PlannerTemplateUpdateRequest> PLANNER_TEMPLATE_UPDATE_REQUEST = req -> {
|
||||
IRequestValidator<PlannerTemplateUpdateRequest> PLANNER_TEMPLATE_UPDATE_REQUEST = (req, imdgProvider) -> {
|
||||
var errors = new LinkedList<ValidationError>();
|
||||
validateLong(req.id, "id", true, errors);
|
||||
validateEnum(req.task, "task", false, errors, Task.values());
|
||||
// validateEnum(req.task, "task", false, errors, Task.values());
|
||||
validateDictionary(req.task,
|
||||
"task",
|
||||
false,
|
||||
imdgProvider.getImdg(IMDGDistributedNames.Map_TaskDictionary, TaskDictionary.class),
|
||||
errors);
|
||||
validateTime(req.taskTime, "taskTime", false, true, errors);
|
||||
validateEnum(req.taskStatus, "taskStatus", false, errors, Status.values());
|
||||
// validateEnum(req.taskStatus, "taskStatus", false, errors, Status.values());
|
||||
validateDictionary(req.taskStatus,
|
||||
"taskStatus",
|
||||
false,
|
||||
imdgProvider.getImdg(IMDGDistributedNames.Map_TaskStatusDictionary, TaskStatusDictionary.class),
|
||||
errors);
|
||||
validateLong(req.companyId, "companyId", false, errors);
|
||||
validateLong(req.securityId, "securityId", false, errors);
|
||||
return errors;
|
||||
|
|
@ -110,6 +165,19 @@ public interface IRequestValidator<T> {
|
|||
|
||||
|
||||
|
||||
static <T extends AbstractDictionary> void validateDictionary(String src,
|
||||
String fieldName,
|
||||
boolean required,
|
||||
Imdg<T> dictionary,
|
||||
List<ValidationError> errors) {
|
||||
if (src != null) {
|
||||
boolean correctTask = false;
|
||||
Collection<T> values = dictionary.getAllValues();
|
||||
for (T value : values) correctTask |= src.equalsIgnoreCase(value.getCode());
|
||||
if (!correctTask)
|
||||
errors.add(new ValidationError(fieldName, ErrorType.UNKNOWN_VALUE));
|
||||
} else if (required) errors.add(new ValidationError(fieldName, ErrorType.MISSING_REQUIRED));
|
||||
}
|
||||
|
||||
static <T extends Enum<T> & IEnumKey> void validateEnum(String enumStr,
|
||||
String fieldName,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue