diff --git a/clearing-parent/scheduler-service/pom.xml b/clearing-parent/scheduler-service/pom.xml
index 04774fd14..cb13c4eef 100644
--- a/clearing-parent/scheduler-service/pom.xml
+++ b/clearing-parent/scheduler-service/pom.xml
@@ -28,6 +28,10 @@
ru.spcex.platform
platform-imdg-api-hazelcast-impl
+
+ ru.spcex.clearing
+ dictionary
+
ru.spcex.clearing
classes
diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/IRequestValidator.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/IRequestValidator.java
index 47e0e83db..78285922a 100644
--- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/IRequestValidator.java
+++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/IRequestValidator.java
@@ -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 {
- List validate(T req);
+ List validate(T req, ImdgProvider imdgProvider);
/**
* Общий запрос на удаление
*/
- IRequestValidator COMMON_DELETE_REQUEST = req -> {
+ IRequestValidator COMMON_DELETE_REQUEST = (req, imdgProvider) -> {
var errors = new LinkedList();
validateLong(req.id, "id", true, errors);
return errors;
@@ -30,36 +35,56 @@ public interface IRequestValidator {
/**
* Запрос на добавление ClearingCalendar
*/
- IRequestValidator CLEARING_CALENDAR_NEW_REQUEST = req -> {
+ IRequestValidator CLEARING_CALENDAR_NEW_REQUEST = (req, imdgProvider) -> {
var errors = new LinkedList();
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 CLEARING_CALENDAR_UPDATE_REQUEST = req -> {
+ IRequestValidator CLEARING_CALENDAR_UPDATE_REQUEST = (req, imdgProvider) -> {
var errors = new LinkedList();
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 PLANNER_NEW_REQUEST = req -> {
+ IRequestValidator PLANNER_NEW_REQUEST = (req, imdgProvider) -> {
var errors = new LinkedList();
- 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 {
/**
* Запрос на обновление Planner
*/
- IRequestValidator PLANNER_UPDATE_REQUEST = req -> {
+ IRequestValidator PLANNER_UPDATE_REQUEST = (req, imdgProvider) -> {
var errors = new LinkedList();
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 {
/**
* Запрос на добавление PlannerTemplate
*/
- IRequestValidator PLANNER_TEMPLATE_NEW_REQUEST = req -> {
+ IRequestValidator PLANNER_TEMPLATE_NEW_REQUEST = (req, imdgProvider) -> {
var errors = new LinkedList();
- 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 {
/**
* Запрос на обновление PlannerTemplate
*/
- IRequestValidator PLANNER_TEMPLATE_UPDATE_REQUEST = req -> {
+ IRequestValidator PLANNER_TEMPLATE_UPDATE_REQUEST = (req, imdgProvider) -> {
var errors = new LinkedList();
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 {
+ static void validateDictionary(String src,
+ String fieldName,
+ boolean required,
+ Imdg dictionary,
+ List errors) {
+ if (src != null) {
+ boolean correctTask = false;
+ Collection 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 & IEnumKey> void validateEnum(String enumStr,
String fieldName,