PlannerTemplateServiceValidation
This commit is contained in:
parent
299cbb1abe
commit
45e5c588b5
10 changed files with 420 additions and 148 deletions
|
|
@ -2,29 +2,11 @@ package ru.spcex.clearing.scheduler;
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.scheduler.service.PlannerService;
|
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
public class SchedulerServiceApplication {
|
public class SchedulerServiceApplication {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SpringApplication springApplication = new SpringApplication(SchedulerServiceApplication.class);
|
SpringApplication springApplication = new SpringApplication(SchedulerServiceApplication.class);
|
||||||
ConfigurableApplicationContext context = springApplication.run(args);
|
springApplication.run(args);
|
||||||
PlannerService plannerService = context.getBean(PlannerService.class);
|
|
||||||
try {
|
|
||||||
Thread.sleep(100000);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
var baseRequest = new BaseRequest<PlannerNewRequest>();
|
|
||||||
var plannerNewRequest = new PlannerNewRequest();
|
|
||||||
plannerNewRequest.task = "GBAL";
|
|
||||||
baseRequest.setId(777L);
|
|
||||||
baseRequest.setRequestPayload(plannerNewRequest);
|
|
||||||
RequestInfoUpdate requestInfoUpdate = plannerService.newScheduler(baseRequest);
|
|
||||||
System.out.println(requestInfoUpdate.toString());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,85 +0,0 @@
|
||||||
package ru.spcex.clearing.scheduler.config;
|
|
||||||
|
|
||||||
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.security.Security;
|
|
||||||
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.schedule.PlannerNewRequest;
|
|
||||||
import ru.spcex.clearing.scheduler.error.ValidationError;
|
|
||||||
import ru.spcex.clearing.scheduler.validation.rules.common.*;
|
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
|
||||||
import ru.spcex.platform.enumeration.Market;
|
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
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.Consumer;
|
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
public class ValidationConfig {
|
|
||||||
private final Map<String, Imdg<? extends SpcexObjectBase>> imdgs;
|
|
||||||
|
|
||||||
public ValidationConfig(ImdgProvider imdgProvider) {
|
|
||||||
this.imdgs = new HashMap<>();
|
|
||||||
BiConsumer<String, Class<? extends SpcexObjectBase>> addImdg = (s, aClass) -> imdgs.put(s, imdgProvider.getImdg(s, aClass));
|
|
||||||
addImdg.accept(IMDGDistributedNames.Map_TaskDictionary, TaskDictionary.class);
|
|
||||||
addImdg.accept(IMDGDistributedNames.Map_TaskStatusDictionary, TaskStatusDictionary.class);
|
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Security, Security.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Imdg<?> getImdg(String key) {
|
|
||||||
return imdgs.get(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean("plannerNewRequestValidator")
|
|
||||||
public Function<PlannerNewRequest, IValidator> plannerNewRequestValidator() {
|
|
||||||
return plannerNewRequest -> {
|
|
||||||
ImdgValidationContext<PlannerNewRequest> context = new ImdgValidationContext<>();
|
|
||||||
context.setValidatedObject(plannerNewRequest);
|
|
||||||
Consumer<String> addImdg = (s) -> context.addImdg(s, getImdg(s));
|
|
||||||
addImdg.accept(IMDGDistributedNames.Map_TaskDictionary);
|
|
||||||
return new ValidatorImpl<>(context,
|
|
||||||
DictionaryPresentRule.instance("task",
|
|
||||||
PlannerNewRequest::getTask,
|
|
||||||
IMDGDistributedNames.Map_TaskDictionary,
|
|
||||||
TaskDictionary.class),
|
|
||||||
TimeNotBeforeRule.instance("taskTime",
|
|
||||||
PlannerNewRequest::getTaskTime),
|
|
||||||
DateNotBeforeRule.instance("clearingDate",
|
|
||||||
PlannerNewRequest::getClearingDate),
|
|
||||||
EnumPresentRule.instance("market",
|
|
||||||
PlannerNewRequest::getMarket,
|
|
||||||
Market.values(),
|
|
||||||
false),
|
|
||||||
DictionaryPresentRule.instance("taskStatus",
|
|
||||||
PlannerNewRequest::getTaskStatus,
|
|
||||||
IMDGDistributedNames.Map_TaskStatusDictionary,
|
|
||||||
TaskStatusDictionary.class),
|
|
||||||
IdPresentRule.instance("companyId",
|
|
||||||
PlannerNewRequest::getCompanyId,
|
|
||||||
IMDGDistributedNames.Map_Company,
|
|
||||||
Company.class,
|
|
||||||
ValidationError.CompanyNotFound,
|
|
||||||
company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : ValidationError.CompanyNotActive),
|
|
||||||
IdPresentRule.instance("securityId",
|
|
||||||
PlannerNewRequest::getSecurityId,
|
|
||||||
IMDGDistributedNames.Map_Security,
|
|
||||||
Security.class,
|
|
||||||
ValidationError.SecurityNotFound,
|
|
||||||
security -> WorkflowStatus.Active.getKey().equals(security.getWorkflowStatus()) ? null : ValidationError.SecurityNotActive)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,115 @@
|
||||||
|
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.PlannerTemplate;
|
||||||
|
import ru.clearing.classes.statics.data.security.Security;
|
||||||
|
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.schedule.PlannerTemplateNewRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerTemplateUpdateRequest;
|
||||||
|
import ru.spcex.clearing.scheduler.error.ValidationError;
|
||||||
|
import ru.spcex.clearing.scheduler.validation.rules.common.DictionaryPresentRule;
|
||||||
|
import ru.spcex.clearing.scheduler.validation.rules.common.IdPresentRule;
|
||||||
|
import ru.spcex.clearing.scheduler.validation.rules.common.TimeNotBeforeRule;
|
||||||
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class PlannerTemplateValidationConfig {
|
||||||
|
|
||||||
|
@Bean("plannerTemplateNewRequestValidator")
|
||||||
|
public Function<PlannerTemplateNewRequest, IValidator> plannerNewRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
|
||||||
|
return plannerNewRequest -> {
|
||||||
|
ImdgValidationContext<PlannerTemplateNewRequest> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(plannerNewRequest);
|
||||||
|
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_TaskDictionary);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_TaskStatusDictionary);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_Security);
|
||||||
|
return new ValidatorImpl<>(context,
|
||||||
|
DictionaryPresentRule.instance("task",
|
||||||
|
PlannerTemplateNewRequest::getTask,
|
||||||
|
IMDGDistributedNames.Map_TaskDictionary,
|
||||||
|
TaskDictionary.class),
|
||||||
|
TimeNotBeforeRule.instance("taskTime",
|
||||||
|
PlannerTemplateNewRequest::getTaskTime),
|
||||||
|
DictionaryPresentRule.instance("taskStatus",
|
||||||
|
PlannerTemplateNewRequest::getTaskStatus,
|
||||||
|
IMDGDistributedNames.Map_TaskStatusDictionary,
|
||||||
|
TaskStatusDictionary.class),
|
||||||
|
IdPresentRule.instance("companyId",
|
||||||
|
PlannerTemplateNewRequest::getCompanyId,
|
||||||
|
IMDGDistributedNames.Map_Company,
|
||||||
|
Company.class,
|
||||||
|
ValidationError.CompanyNotFound,
|
||||||
|
company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : ValidationError.CompanyNotActive),
|
||||||
|
IdPresentRule.instance("securityId",
|
||||||
|
PlannerTemplateNewRequest::getSecurityId,
|
||||||
|
IMDGDistributedNames.Map_Security,
|
||||||
|
Security.class,
|
||||||
|
ValidationError.SecurityNotFound,
|
||||||
|
security -> WorkflowStatus.Active.getKey().equals(security.getWorkflowStatus()) ? null : ValidationError.SecurityNotActive)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean("plannerTemplateUpdateRequestValidator")
|
||||||
|
public Function<PlannerTemplateUpdateRequest, IValidator> plannerUpdateRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
|
||||||
|
return plannerUpdateRequest -> {
|
||||||
|
ImdgValidationContext<PlannerTemplateUpdateRequest> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(plannerUpdateRequest);
|
||||||
|
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_TaskDictionary);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_TaskStatusDictionary);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_Security);
|
||||||
|
return new ValidatorImpl<>(context,
|
||||||
|
IdPresentRule.instance("id",
|
||||||
|
PlannerTemplateUpdateRequest::getId,
|
||||||
|
IMDGDistributedNames.Map_PlannerTemplate,
|
||||||
|
PlannerTemplate.class,
|
||||||
|
ValidationError.WrongUpdate),
|
||||||
|
DictionaryPresentRule.instance("task",
|
||||||
|
PlannerTemplateNewRequest::getTask,
|
||||||
|
IMDGDistributedNames.Map_TaskDictionary,
|
||||||
|
TaskDictionary.class,
|
||||||
|
false),
|
||||||
|
TimeNotBeforeRule.instance("taskTime",
|
||||||
|
PlannerTemplateNewRequest::getTaskTime,
|
||||||
|
false),
|
||||||
|
DictionaryPresentRule.instance("taskStatus",
|
||||||
|
PlannerTemplateNewRequest::getTaskStatus,
|
||||||
|
IMDGDistributedNames.Map_TaskStatusDictionary,
|
||||||
|
TaskStatusDictionary.class,
|
||||||
|
false),
|
||||||
|
IdPresentRule.instance("companyId",
|
||||||
|
PlannerTemplateNewRequest::getCompanyId,
|
||||||
|
IMDGDistributedNames.Map_Company,
|
||||||
|
Company.class,
|
||||||
|
ValidationError.CompanyNotFound,
|
||||||
|
false,
|
||||||
|
company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : ValidationError.CompanyNotActive),
|
||||||
|
IdPresentRule.instance("securityId",
|
||||||
|
PlannerTemplateNewRequest::getSecurityId,
|
||||||
|
IMDGDistributedNames.Map_Security,
|
||||||
|
Security.class,
|
||||||
|
ValidationError.SecurityNotFound,
|
||||||
|
false,
|
||||||
|
security -> WorkflowStatus.Active.getKey().equals(security.getWorkflowStatus()) ? null : ValidationError.SecurityNotActive)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,127 @@
|
||||||
|
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.Planner;
|
||||||
|
import ru.clearing.classes.statics.data.security.Security;
|
||||||
|
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.schedule.PlannerNewRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerUpdateRequest;
|
||||||
|
import ru.spcex.clearing.scheduler.error.ValidationError;
|
||||||
|
import ru.spcex.clearing.scheduler.validation.rules.common.*;
|
||||||
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
import ru.spcex.platform.enumeration.Market;
|
||||||
|
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class PlannerValidationConfig {
|
||||||
|
|
||||||
|
@Bean("plannerNewRequestValidator")
|
||||||
|
public Function<PlannerNewRequest, IValidator> plannerNewRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
|
||||||
|
return plannerNewRequest -> {
|
||||||
|
ImdgValidationContext<PlannerNewRequest> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(plannerNewRequest);
|
||||||
|
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_TaskDictionary);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_TaskStatusDictionary);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_Security);
|
||||||
|
return new ValidatorImpl<>(context,
|
||||||
|
DictionaryPresentRule.instance("task",
|
||||||
|
PlannerNewRequest::getTask,
|
||||||
|
IMDGDistributedNames.Map_TaskDictionary,
|
||||||
|
TaskDictionary.class),
|
||||||
|
TimeNotBeforeRule.instance("taskTime",
|
||||||
|
PlannerNewRequest::getTaskTime),
|
||||||
|
DateNotBeforeRule.instance("clearingDate",
|
||||||
|
PlannerNewRequest::getClearingDate),
|
||||||
|
EnumPresentRule.instance("market",
|
||||||
|
PlannerNewRequest::getMarket,
|
||||||
|
Market.values(),
|
||||||
|
false),
|
||||||
|
DictionaryPresentRule.instance("taskStatus",
|
||||||
|
PlannerNewRequest::getTaskStatus,
|
||||||
|
IMDGDistributedNames.Map_TaskStatusDictionary,
|
||||||
|
TaskStatusDictionary.class),
|
||||||
|
IdPresentRule.instance("companyId",
|
||||||
|
PlannerNewRequest::getCompanyId,
|
||||||
|
IMDGDistributedNames.Map_Company,
|
||||||
|
Company.class,
|
||||||
|
ValidationError.CompanyNotFound,
|
||||||
|
company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : ValidationError.CompanyNotActive),
|
||||||
|
IdPresentRule.instance("securityId",
|
||||||
|
PlannerNewRequest::getSecurityId,
|
||||||
|
IMDGDistributedNames.Map_Security,
|
||||||
|
Security.class,
|
||||||
|
ValidationError.SecurityNotFound,
|
||||||
|
security -> WorkflowStatus.Active.getKey().equals(security.getWorkflowStatus()) ? null : ValidationError.SecurityNotActive)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean("plannerUpdateRequestValidator")
|
||||||
|
public Function<PlannerUpdateRequest, IValidator> plannerUpdateRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
|
||||||
|
return plannerUpdateRequest -> {
|
||||||
|
ImdgValidationContext<PlannerUpdateRequest> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(plannerUpdateRequest);
|
||||||
|
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_TaskDictionary);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_TaskStatusDictionary);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_Security);
|
||||||
|
return new ValidatorImpl<>(context,
|
||||||
|
IdPresentRule.instance("id",
|
||||||
|
PlannerUpdateRequest::getId,
|
||||||
|
IMDGDistributedNames.Map_Planner,
|
||||||
|
Planner.class,
|
||||||
|
ValidationError.WrongUpdate),
|
||||||
|
DictionaryPresentRule.instance("task",
|
||||||
|
PlannerUpdateRequest::getTask,
|
||||||
|
IMDGDistributedNames.Map_TaskDictionary,
|
||||||
|
TaskDictionary.class,
|
||||||
|
false),
|
||||||
|
TimeNotBeforeRule.instance("taskTime",
|
||||||
|
PlannerUpdateRequest::getTaskTime,
|
||||||
|
false),
|
||||||
|
DateNotBeforeRule.instance("clearingDate",
|
||||||
|
PlannerUpdateRequest::getClearingDate,
|
||||||
|
false),
|
||||||
|
EnumPresentRule.instance("market",
|
||||||
|
PlannerUpdateRequest::getMarket,
|
||||||
|
Market.values(),
|
||||||
|
false),
|
||||||
|
DictionaryPresentRule.instance("taskStatus",
|
||||||
|
PlannerUpdateRequest::getTaskStatus,
|
||||||
|
IMDGDistributedNames.Map_TaskStatusDictionary,
|
||||||
|
TaskStatusDictionary.class,
|
||||||
|
false),
|
||||||
|
IdPresentRule.instance("companyId",
|
||||||
|
PlannerUpdateRequest::getCompanyId,
|
||||||
|
IMDGDistributedNames.Map_Company,
|
||||||
|
Company.class,
|
||||||
|
ValidationError.CompanyNotFound,
|
||||||
|
false,
|
||||||
|
company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : ValidationError.CompanyNotActive),
|
||||||
|
IdPresentRule.instance("securityId",
|
||||||
|
PlannerUpdateRequest::getSecurityId,
|
||||||
|
IMDGDistributedNames.Map_Security,
|
||||||
|
Security.class,
|
||||||
|
ValidationError.SecurityNotFound,
|
||||||
|
false,
|
||||||
|
security -> WorkflowStatus.Active.getKey().equals(security.getWorkflowStatus()) ? null : ValidationError.SecurityNotActive)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
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.security.Security;
|
||||||
|
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.validation.rules.common.FieldRequiredRule;
|
||||||
|
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 {
|
||||||
|
|
||||||
|
@Bean("imdgForValidation")
|
||||||
|
public Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation(ImdgProvider imdgProvider) {
|
||||||
|
final Map<String, Imdg<? extends SpcexObjectBase>> imdg = new HashMap<>();
|
||||||
|
BiConsumer<String, Class<? extends SpcexObjectBase>> addImdg = (s, aClass) -> imdg.put(s, imdgProvider.getImdg(s, aClass));
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_TaskDictionary, TaskDictionary.class);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_TaskStatusDictionary, TaskStatusDictionary.class);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_Security, Security.class);
|
||||||
|
return imdg;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean("commonDeleteRequestValidator")
|
||||||
|
public Function<CommonDeleteRequest, IValidator> commonDeleteRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
|
||||||
|
return commonDeleteRequest -> {
|
||||||
|
ImdgValidationContext<CommonDeleteRequest> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(commonDeleteRequest);
|
||||||
|
return new ValidatorImpl<>(context,
|
||||||
|
FieldRequiredRule.instance("id", CommonDeleteRequest::getId)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -6,6 +6,7 @@ public enum ValidationError implements IEnumId {
|
||||||
WrongDictionaryValue(10003L),
|
WrongDictionaryValue(10003L),
|
||||||
EmptyRequiredValue(10002L),
|
EmptyRequiredValue(10002L),
|
||||||
WrongEnumValue(777L), //todo set code
|
WrongEnumValue(777L), //todo set code
|
||||||
|
WrongUpdate(666L), //todo set code
|
||||||
TaskForPastDate(7010L),
|
TaskForPastDate(7010L),
|
||||||
TaskForPastTime(7011L),
|
TaskForPastTime(7011L),
|
||||||
CompanyNotFound(7014L),
|
CompanyNotFound(7014L),
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerUpdateReq
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||||
import ru.spcex.clearing.platform.messaging.service.Status;
|
import ru.spcex.clearing.platform.messaging.service.Status;
|
||||||
import ru.spcex.clearing.scheduler.validation.IRequestValidator;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
|
@ -26,7 +25,6 @@ import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
|
@ -36,20 +34,24 @@ public class PlannerService extends QueueConsumer implements InitializingBean {
|
||||||
private final ImdgProvider imdgProvider;
|
private final ImdgProvider imdgProvider;
|
||||||
private final Imdg<Planner> plannerMap;
|
private final Imdg<Planner> plannerMap;
|
||||||
private final IMessageResolver messageResolver;
|
private final IMessageResolver messageResolver;
|
||||||
private final Function<PlannerNewRequest, IValidator> validationFactory;
|
private final Function<CommonDeleteRequest, IValidator> plannerDeleteRequestValidation;
|
||||||
private final IRequestValidator<PlannerUpdateRequest> plannerUpdateRequest = IRequestValidator.PLANNER_UPDATE_REQUEST;
|
private final Function<PlannerNewRequest, IValidator> plannerNewRequestValidation;
|
||||||
private final IRequestValidator<CommonDeleteRequest> deleteRequestValidator = IRequestValidator.COMMON_DELETE_REQUEST;
|
private final Function<PlannerUpdateRequest, IValidator> plannerUpdateRequestValidation;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public PlannerService(Consumer<String, Object> kafkaQueue,
|
public PlannerService(Consumer<String, Object> kafkaQueue,
|
||||||
Producer<String, Object> kafkaProducer,
|
Producer<String, Object> kafkaProducer,
|
||||||
ImdgProvider imdgProvider,
|
ImdgProvider imdgProvider,
|
||||||
IMessageResolver messageResolver,
|
IMessageResolver messageResolver,
|
||||||
@Qualifier("plannerNewRequestValidator") Function<PlannerNewRequest, IValidator> plannerNewRequestValidator) {
|
@Qualifier("commonDeleteRequestValidator") Function<CommonDeleteRequest, IValidator> plannerDeleteRequestValidator,
|
||||||
|
@Qualifier("plannerNewRequestValidator") Function<PlannerNewRequest, IValidator> plannerNewRequestValidator,
|
||||||
|
@Qualifier("plannerUpdateRequestValidator") Function<PlannerUpdateRequest, IValidator> plannerUpdateRequestValidator) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.plannerMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Planner, Planner.class);
|
this.plannerMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Planner, Planner.class);
|
||||||
this.messageResolver = messageResolver;
|
this.messageResolver = messageResolver;
|
||||||
this.validationFactory = plannerNewRequestValidator;
|
this.plannerDeleteRequestValidation = plannerDeleteRequestValidator;
|
||||||
|
this.plannerNewRequestValidation = plannerNewRequestValidator;
|
||||||
|
this.plannerUpdateRequestValidation = plannerUpdateRequestValidator;
|
||||||
this.imdgProvider = imdgProvider;
|
this.imdgProvider = imdgProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -59,26 +61,28 @@ public class PlannerService extends QueueConsumer implements InitializingBean {
|
||||||
.setFunction(this::newScheduler)
|
.setFunction(this::newScheduler)
|
||||||
.forDestination(Consts.DESTINATION_PLANNER_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_PLANNER_NEW, callbacks::put);
|
||||||
callback(PlannerUpdateRequest.class)
|
callback(PlannerUpdateRequest.class)
|
||||||
.setConsumer(this::updateScheduler)
|
.setFunction(this::updateScheduler)
|
||||||
.forDestination(Consts.DESTINATION_PLANNER_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_PLANNER_UPDATE, callbacks::put);
|
||||||
callback(CommonDeleteRequest.class)
|
callback(CommonDeleteRequest.class)
|
||||||
.setConsumer(this::deleteScheduler)
|
.setFunction(this::deleteScheduler)
|
||||||
.forDestination(Consts.DESTINATION_PLANNER_DELETE, callbacks::put);
|
.forDestination(Consts.DESTINATION_PLANNER_DELETE, callbacks::put);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
public RequestInfoUpdate newScheduler(BaseRequest<PlannerNewRequest> userRequest) {
|
private RequestInfoUpdate newScheduler(BaseRequest<PlannerNewRequest> userRequest) {
|
||||||
PlannerNewRequest req = userRequest.getRequestPayload();
|
PlannerNewRequest req = userRequest.getRequestPayload();
|
||||||
log.debug("PlannerNewRequest received");
|
log.debug("PlannerNewRequest received");
|
||||||
IValidator validator = validationFactory.apply(req);
|
if (plannerNewRequestValidation != null) {
|
||||||
Optional<EnumMessage> validationError = validator.tillFirstError();
|
IValidator validator = plannerNewRequestValidation.apply(req);
|
||||||
if (validationError.isPresent()) {
|
Optional<EnumMessage> validationError = validator.tillFirstError();
|
||||||
String errorMsg = messageResolver.resolve(validationError.get());
|
if (validationError.isPresent()) {
|
||||||
log.error("cannot process PlannerNewRequest id={}: {}", userRequest.getId(), errorMsg);
|
String errorMsg = messageResolver.resolve(validationError.get());
|
||||||
return new RequestInfoUpdate()
|
log.error("cannot process PlannerNewRequest id={}: {}", userRequest.getId(), errorMsg);
|
||||||
.setId(userRequest.getId())
|
return new RequestInfoUpdate()
|
||||||
.setStatus(Status.Error)
|
.setId(userRequest.getId())
|
||||||
.setMessage(errorMsg);
|
.setStatus(Status.Error)
|
||||||
|
.setMessage(errorMsg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Planner planner = new Planner();
|
Planner planner = new Planner();
|
||||||
planner.setCreated(Instant.now());
|
planner.setCreated(Instant.now());
|
||||||
|
|
@ -94,11 +98,21 @@ public class PlannerService extends QueueConsumer implements InitializingBean {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateScheduler(BaseRequest<PlannerUpdateRequest> userRequest) {
|
private RequestInfoUpdate updateScheduler(BaseRequest<PlannerUpdateRequest> userRequest) {
|
||||||
PlannerUpdateRequest req = userRequest.getRequestPayload();
|
PlannerUpdateRequest req = userRequest.getRequestPayload();
|
||||||
log.debug("PlannerUpdateRequest received id = {}", req.getId());
|
log.debug("PlannerUpdateRequest received id = {}", req.getId());
|
||||||
List<IRequestValidator.ValidationError> errors = plannerUpdateRequest.validate(req, imdgProvider);
|
if (plannerUpdateRequestValidation != null) {
|
||||||
if (IRequestValidator.checkErrorList(errors, log)) return;
|
IValidator validator = plannerUpdateRequestValidation.apply(req);
|
||||||
|
Optional<EnumMessage> validationError = validator.tillFirstError();
|
||||||
|
if (validationError.isPresent()) {
|
||||||
|
String errorMsg = messageResolver.resolve(validationError.get());
|
||||||
|
log.error("cannot process PlannerUpdateRequest id={}: {}", userRequest.getId(), errorMsg);
|
||||||
|
return new RequestInfoUpdate()
|
||||||
|
.setId(userRequest.getId())
|
||||||
|
.setStatus(Status.Error)
|
||||||
|
.setMessage(errorMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
Planner planner = plannerMap.getSingleObjectByID(req.getId());
|
Planner planner = plannerMap.getSingleObjectByID(req.getId());
|
||||||
planner.setUpdated(Instant.now());
|
planner.setUpdated(Instant.now());
|
||||||
planner.setTask(req.getTask());
|
planner.setTask(req.getTask());
|
||||||
|
|
@ -109,15 +123,27 @@ public class PlannerService extends QueueConsumer implements InitializingBean {
|
||||||
planner.setCompanyId(req.getCompanyId());
|
planner.setCompanyId(req.getCompanyId());
|
||||||
planner.setSecurityId(req.getSecurityId());
|
planner.setSecurityId(req.getSecurityId());
|
||||||
plannerMap.update(planner);
|
plannerMap.update(planner);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deleteScheduler(BaseRequest<CommonDeleteRequest> userRequest) {
|
private RequestInfoUpdate deleteScheduler(BaseRequest<CommonDeleteRequest> userRequest) {
|
||||||
CommonDeleteRequest req = userRequest.getRequestPayload();
|
CommonDeleteRequest req = userRequest.getRequestPayload();
|
||||||
log.debug("CommonDeleteRequest received id = {}", req.getId());
|
log.debug("CommonDeleteRequest received id = {}", req.getId());
|
||||||
List<IRequestValidator.ValidationError> errors = deleteRequestValidator.validate(req, imdgProvider);
|
if (plannerDeleteRequestValidation != null) {
|
||||||
if (IRequestValidator.checkErrorList(errors, log)) return;
|
IValidator validator = plannerDeleteRequestValidation.apply(req);
|
||||||
|
Optional<EnumMessage> validationError = validator.tillFirstError();
|
||||||
|
if (validationError.isPresent()) {
|
||||||
|
String errorMsg = messageResolver.resolve(validationError.get());
|
||||||
|
log.error("cannot process PlannerUpdateRequest id={}: {}", userRequest.getId(), errorMsg);
|
||||||
|
return new RequestInfoUpdate()
|
||||||
|
.setId(userRequest.getId())
|
||||||
|
.setStatus(Status.Error)
|
||||||
|
.setMessage(errorMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
Planner planner = plannerMap.getSingleObjectByID(req.getId());
|
Planner planner = plannerMap.getSingleObjectByID(req.getId());
|
||||||
plannerMap.delete(planner);
|
plannerMap.delete(planner);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.clearing.classes.statics.data.scheduler.PlannerTemplate;
|
import ru.clearing.classes.statics.data.scheduler.PlannerTemplate;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
|
@ -15,49 +16,73 @@ import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteReques
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerTemplateNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerTemplateNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerTemplateUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerTemplateUpdateRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||||
import ru.spcex.clearing.scheduler.validation.IRequestValidator;
|
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||||
|
import ru.spcex.clearing.platform.messaging.service.Status;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.List;
|
import java.util.Optional;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class PlannerTemplateService extends QueueConsumer implements InitializingBean {
|
public class PlannerTemplateService extends QueueConsumer implements InitializingBean {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
private final Imdg<PlannerTemplate> plannerTemplateMap;
|
private final Imdg<PlannerTemplate> plannerTemplateMap;
|
||||||
private final ImdgProvider imdgProvider;
|
private final ImdgProvider imdgProvider;
|
||||||
private final IRequestValidator<PlannerTemplateNewRequest> plannerTemplateNewRequest = IRequestValidator.PLANNER_TEMPLATE_NEW_REQUEST;
|
private final IMessageResolver messageResolver;
|
||||||
private final IRequestValidator<PlannerTemplateUpdateRequest> plannerTemplateUpdateRequest = IRequestValidator.PLANNER_TEMPLATE_UPDATE_REQUEST;
|
private final Function<CommonDeleteRequest, IValidator> plannerTemplateDeleteRequestValidation;
|
||||||
private final IRequestValidator<CommonDeleteRequest> deleteRequestValidator = IRequestValidator.COMMON_DELETE_REQUEST;
|
private final Function<PlannerTemplateNewRequest, IValidator> plannerTemplateNewRequestValidation;
|
||||||
|
private final Function<PlannerTemplateUpdateRequest, IValidator> plannerTemplateUpdateRequestValidation;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public PlannerTemplateService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
public PlannerTemplateService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||||
ImdgProvider imdgProvider) {
|
ImdgProvider imdgProvider,
|
||||||
|
IMessageResolver messageResolver,
|
||||||
|
@Qualifier("commonDeleteRequestValidator") Function<CommonDeleteRequest, IValidator> plannerTemplateDeleteRequestValidator,
|
||||||
|
@Qualifier("plannerTemplateNewRequestValidator") Function<PlannerTemplateNewRequest, IValidator> plannerTemplateNewRequestValidator,
|
||||||
|
@Qualifier("plannerTemplateUpdateRequestValidator") Function<PlannerTemplateUpdateRequest, IValidator> plannerTemplateUpdateRequestValidator) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.plannerTemplateMap = imdgProvider.getImdg(IMDGDistributedNames.Map_PlannerTemplate, PlannerTemplate.class);
|
this.plannerTemplateMap = imdgProvider.getImdg(IMDGDistributedNames.Map_PlannerTemplate, PlannerTemplate.class);
|
||||||
this.imdgProvider = imdgProvider;
|
this.imdgProvider = imdgProvider;
|
||||||
|
this.plannerTemplateDeleteRequestValidation = plannerTemplateDeleteRequestValidator;
|
||||||
|
this.plannerTemplateNewRequestValidation = plannerTemplateNewRequestValidator;
|
||||||
|
this.plannerTemplateUpdateRequestValidation = plannerTemplateUpdateRequestValidator;
|
||||||
|
this.messageResolver = messageResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
callback(PlannerTemplateNewRequest.class)
|
callback(PlannerTemplateNewRequest.class)
|
||||||
.setConsumer(this::newTimetable)
|
.setFunction(this::newTimetable)
|
||||||
.forDestination(Consts.DESTINATION_PLANNER_TEMPLATE_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_PLANNER_TEMPLATE_NEW, callbacks::put);
|
||||||
callback(PlannerTemplateUpdateRequest.class)
|
callback(PlannerTemplateUpdateRequest.class)
|
||||||
.setConsumer(this::updateTimetable)
|
.setFunction(this::updateTimetable)
|
||||||
.forDestination(Consts.DESTINATION_PLANNER_TEMPLATE_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_PLANNER_TEMPLATE_UPDATE, callbacks::put);
|
||||||
callback(CommonDeleteRequest.class)
|
callback(CommonDeleteRequest.class)
|
||||||
.setConsumer(this::deleteTimetable)
|
.setFunction(this::deleteTimetable)
|
||||||
.forDestination(Consts.DESTINATION_PLANNER_TEMPLATE_DELETE, callbacks::put);
|
.forDestination(Consts.DESTINATION_PLANNER_TEMPLATE_DELETE, callbacks::put);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void newTimetable(BaseRequest<PlannerTemplateNewRequest> userRequest) {
|
private RequestInfoUpdate newTimetable(BaseRequest<PlannerTemplateNewRequest> userRequest) {
|
||||||
PlannerTemplateNewRequest req = userRequest.getRequestPayload();
|
PlannerTemplateNewRequest req = userRequest.getRequestPayload();
|
||||||
log.debug("PlannerTemplateNewRequest received");
|
log.debug("PlannerTemplateNewRequest received");
|
||||||
List<IRequestValidator.ValidationError> errors = plannerTemplateNewRequest.validate(req, imdgProvider);
|
if (plannerTemplateNewRequestValidation != null) {
|
||||||
if (IRequestValidator.checkErrorList(errors, log)) return;
|
IValidator validator = plannerTemplateNewRequestValidation.apply(req);
|
||||||
|
Optional<EnumMessage> validationError = validator.tillFirstError();
|
||||||
|
if (validationError.isPresent()) {
|
||||||
|
String errorMsg = messageResolver.resolve(validationError.get());
|
||||||
|
log.error("cannot process PlannerTemplateNewRequest id={}: {}", userRequest.getId(), errorMsg);
|
||||||
|
return new RequestInfoUpdate()
|
||||||
|
.setId(userRequest.getId())
|
||||||
|
.setStatus(Status.Error)
|
||||||
|
.setMessage(errorMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
PlannerTemplate plannerTemplate = new PlannerTemplate();
|
PlannerTemplate plannerTemplate = new PlannerTemplate();
|
||||||
Instant created = Instant.now();
|
Instant created = Instant.now();
|
||||||
plannerTemplate.setCreated(created);
|
plannerTemplate.setCreated(created);
|
||||||
|
|
@ -68,14 +93,25 @@ public class PlannerTemplateService extends QueueConsumer implements Initializin
|
||||||
plannerTemplate.setSecurityId(req.getSecurityId());
|
plannerTemplate.setSecurityId(req.getSecurityId());
|
||||||
plannerTemplateMap.insert(plannerTemplate);
|
plannerTemplateMap.insert(plannerTemplate);
|
||||||
log.debug("successfully processed, new id {}", plannerTemplate.getId());
|
log.debug("successfully processed, new id {}", plannerTemplate.getId());
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateTimetable(BaseRequest<PlannerTemplateUpdateRequest> userRequest) {
|
private RequestInfoUpdate updateTimetable(BaseRequest<PlannerTemplateUpdateRequest> userRequest) {
|
||||||
PlannerTemplateUpdateRequest req = userRequest.getRequestPayload();
|
PlannerTemplateUpdateRequest req = userRequest.getRequestPayload();
|
||||||
log.debug("PlannerTemplateUpdateRequest received");
|
log.debug("PlannerTemplateUpdateRequest received");
|
||||||
|
if (plannerTemplateUpdateRequestValidation != null) {
|
||||||
|
IValidator validator = plannerTemplateUpdateRequestValidation.apply(req);
|
||||||
|
Optional<EnumMessage> validationError = validator.tillFirstError();
|
||||||
|
if (validationError.isPresent()) {
|
||||||
|
String errorMsg = messageResolver.resolve(validationError.get());
|
||||||
|
log.error("cannot process PlannerNewRequest id={}: {}", userRequest.getId(), errorMsg);
|
||||||
|
return new RequestInfoUpdate()
|
||||||
|
.setId(userRequest.getId())
|
||||||
|
.setStatus(Status.Error)
|
||||||
|
.setMessage(errorMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
PlannerTemplate plannerTemplate = plannerTemplateMap.getSingleObjectByID(req.getId());
|
PlannerTemplate plannerTemplate = plannerTemplateMap.getSingleObjectByID(req.getId());
|
||||||
List<IRequestValidator.ValidationError> errors = plannerTemplateUpdateRequest.validate(req, imdgProvider);
|
|
||||||
if (IRequestValidator.checkErrorList(errors, log)) return;
|
|
||||||
Instant updated = Instant.now();
|
Instant updated = Instant.now();
|
||||||
plannerTemplate.setUpdated(updated);
|
plannerTemplate.setUpdated(updated);
|
||||||
plannerTemplate.setTask(req.getTask());
|
plannerTemplate.setTask(req.getTask());
|
||||||
|
|
@ -85,14 +121,26 @@ public class PlannerTemplateService extends QueueConsumer implements Initializin
|
||||||
plannerTemplate.setSecurityId(req.getSecurityId());
|
plannerTemplate.setSecurityId(req.getSecurityId());
|
||||||
plannerTemplateMap.update(plannerTemplate);
|
plannerTemplateMap.update(plannerTemplate);
|
||||||
log.debug("successfully processed, new id {}", plannerTemplate.getId());
|
log.debug("successfully processed, new id {}", plannerTemplate.getId());
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deleteTimetable(BaseRequest<CommonDeleteRequest> userRequest) {
|
private RequestInfoUpdate deleteTimetable(BaseRequest<CommonDeleteRequest> userRequest) {
|
||||||
CommonDeleteRequest req = userRequest.getRequestPayload();
|
CommonDeleteRequest req = userRequest.getRequestPayload();
|
||||||
log.debug("CommonDeleteRequest received id = {}", req.getId());
|
log.debug("CommonDeleteRequest received id = {}", req.getId());
|
||||||
List<IRequestValidator.ValidationError> errors = deleteRequestValidator.validate(req, imdgProvider);
|
if (plannerTemplateDeleteRequestValidation != null) {
|
||||||
if (IRequestValidator.checkErrorList(errors, log)) return;
|
IValidator validator = plannerTemplateDeleteRequestValidation.apply(req);
|
||||||
|
Optional<EnumMessage> validationError = validator.tillFirstError();
|
||||||
|
if (validationError.isPresent()) {
|
||||||
|
String errorMsg = messageResolver.resolve(validationError.get());
|
||||||
|
log.error("cannot process PlannerUpdateRequest id={}: {}", userRequest.getId(), errorMsg);
|
||||||
|
return new RequestInfoUpdate()
|
||||||
|
.setId(userRequest.getId())
|
||||||
|
.setStatus(Status.Error)
|
||||||
|
.setMessage(errorMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
PlannerTemplate plannerTemplate = plannerTemplateMap.getSingleObjectByID(req.getId());
|
PlannerTemplate plannerTemplate = plannerTemplateMap.getSingleObjectByID(req.getId());
|
||||||
plannerTemplateMap.delete(plannerTemplate);
|
plannerTemplateMap.delete(plannerTemplate);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams;
|
import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams;
|
||||||
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
|
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
|
||||||
import ru.spcex.platform.imdg.iml.hazelcast.util.HazelcastHelper;
|
import ru.spcex.platform.imdg.iml.hazelcast.util.HazelcastHelper;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
|
import ru.spcex.platform.utils.enumeration.SimpleMessageResolver;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
@ -65,4 +67,9 @@ public class HazelcastServiceTestConfiguration {
|
||||||
params.setNearCacheConfig(new NearCacheConfig());
|
params.setNearCacheConfig(new NearCacheConfig());
|
||||||
return params;
|
return params;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public IMessageResolver messageResolver() {
|
||||||
|
return new SimpleMessageResolver();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerTemplateNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerTemplateNewRequest;
|
||||||
import ru.spcex.clearing.scheduler.service.PlannerTemplateService;
|
import ru.spcex.clearing.scheduler.service.PlannerTemplateService;
|
||||||
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
|
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
import ru.specx.clearing.scheduler.config.HazelcastServiceTestConfiguration;
|
import ru.specx.clearing.scheduler.config.HazelcastServiceTestConfiguration;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
@ -47,6 +48,7 @@ class PlannerTemplateServiceTest {
|
||||||
private HazelcastService hazelcastServiceTest;
|
private HazelcastService hazelcastServiceTest;
|
||||||
private MockConsumer<String, Object> mockConsumer;
|
private MockConsumer<String, Object> mockConsumer;
|
||||||
private MockProducer<String, Object> mockProducer;
|
private MockProducer<String, Object> mockProducer;
|
||||||
|
private IMessageResolver messageResolver;
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setUp() {
|
void setUp() {
|
||||||
|
|
@ -91,7 +93,7 @@ class PlannerTemplateServiceTest {
|
||||||
|
|
||||||
//ACT
|
//ACT
|
||||||
//service set up
|
//service set up
|
||||||
PlannerTemplateService plannerTemplateService = new PlannerTemplateService(mockConsumer, mockProducer, hazelcastServiceTest);
|
PlannerTemplateService plannerTemplateService = new PlannerTemplateService(mockConsumer, mockProducer, hazelcastServiceTest, messageResolver, null, null, null);
|
||||||
|
|
||||||
//callbacks set up
|
//callbacks set up
|
||||||
plannerTemplateService.afterPropertiesSet();
|
plannerTemplateService.afterPropertiesSet();
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue