ValidationConfig clearing-service fix

This commit is contained in:
ialbert 2023-05-27 18:35:27 +03:00
parent e68be9e8d3
commit 616df8d5e5

View file

@ -8,14 +8,15 @@ import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.relation.Relation; import ru.clearing.classes.statics.data.company.relation.Relation;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit; import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.misc.STrades; import ru.clearing.classes.statics.data.misc.STrades;
import ru.clearing.classes.statics.data.misc.Session;
import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.registry.Registry;
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
import ru.clearing.classes.statics.data.sdf.SDf01; import ru.clearing.classes.statics.data.sdf.SDf01;
import ru.clearing.classes.statics.data.sdf.SDf57; import ru.clearing.classes.statics.data.sdf.SDf57;
import ru.clearing.classes.statics.data.security.Security; import ru.clearing.classes.statics.data.security.Security;
import ru.clearing.platform.dictionary.SectionDictionary;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.service.validation.*; import ru.spcex.clearing.service.validation.*;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.enumeration.ClearingCategory; import ru.spcex.platform.enumeration.ClearingCategory;
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;
@ -23,48 +24,42 @@ import ru.spcex.platform.imdg.validation.ImdgValidationContext;
import ru.spcex.platform.utils.validation.IValidator; import ru.spcex.platform.utils.validation.IValidator;
import ru.spcex.platform.utils.validation.ValidatorImpl; import ru.spcex.platform.utils.validation.ValidatorImpl;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Function; import java.util.function.Function;
@Configuration @Configuration
public class ValidationConfig { public class ValidationConfig {
private final Map<String, Imdg<? extends SpcexObjectBase>> imdgs;
private final BiConsumer<ImdgValidationContext<?>, String> addImdg = (context, s) Imdg<Relation> imdgRelation;
-> context.addImdg(s, getImdg(s)); Imdg<Company> imdgCompany;
Imdg<Account> imdgAccount;
Imdg<AccountBalance> imdgAccountBalance;
Imdg<Security> imdgSecurity;
Imdg<TradingClearingRegistry> imdgTradingClearingRegistry;
Imdg<Session> imdgSession;
Imdg<SectionDictionary> imdgSectionDictionary;
public ValidationConfig(ImdgProvider imdgProvider) { public ValidationConfig(ImdgProvider imdgProvider) {
this.imdgs = new HashMap<>(); this.imdgRelation = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
BiConsumer<String, Class<? extends SpcexObjectBase>> addImdg = (s, aClass) -> imdgs.put(s, imdgProvider.getImdg(s, aClass)); this.imdgCompany = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
addImdg.accept(IMDGDistributedNames.Map_Relation, Relation.class); this.imdgAccount = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
addImdg.accept(IMDGDistributedNames.Map_Company, Company.class); this.imdgAccountBalance = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class);
addImdg.accept(IMDGDistributedNames.Map_Account, Account.class); this.imdgSecurity = imdgProvider.getImdg(IMDGDistributedNames.Map_Security, Security.class);
addImdg.accept(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class); this.imdgTradingClearingRegistry = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
addImdg.accept(IMDGDistributedNames.Map_Security, Security.class); this.imdgSession = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
addImdg.accept(IMDGDistributedNames.Map_Company, Company.class); this.imdgSectionDictionary = imdgProvider.getImdg(IMDGDistributedNames.Map_SectionDictionary, SectionDictionary.class);
addImdg.accept(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
}
/**
* чтобы во всех валидаторах был один экземпляр Imdg
*/
private Imdg<?> getImdg(String key) {
return imdgs.get(key);
} }
@Bean("executionDepositValidator") @Bean("executionDepositValidator")
public BiFunction<ClearingCategory, ExecutionDeposit, IValidator> executionDepositValidator() { public BiFunction<ClearingCategory, ExecutionDeposit, IValidator> executionDepositValidator(ImdgProvider imdgProvider) {
return (category, execDeposit) -> { return (category, execDeposit) -> {
ImdgValidationContext<ExecutionDeposit> context = new ImdgValidationContext<>(); ImdgValidationContext<ExecutionDeposit> context = new ImdgValidationContext<>();
context.setValidatedObject(execDeposit); context.setValidatedObject(execDeposit);
context.storeObject(ClrngValidationStored.categoryPredefined, category); context.storeObject(ClrngValidationStored.categoryPredefined, category);
addImdg.accept(context, IMDGDistributedNames.Map_Relation); context.addImdg(IMDGDistributedNames.Map_Relation, imdgRelation);
addImdg.accept(context, IMDGDistributedNames.Map_Company); context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
addImdg.accept(context, IMDGDistributedNames.Map_Account); context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
addImdg.accept(context, IMDGDistributedNames.Map_AccountBalance); context.addImdg(IMDGDistributedNames.Map_AccountBalance, imdgAccountBalance);
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
ExecutionDepositValidationRule.ClearingIsAllowed, ExecutionDepositValidationRule.ClearingIsAllowed,
ExecutionDepositValidationRule.AccountIsNotBlocked, ExecutionDepositValidationRule.AccountIsNotBlocked,
@ -78,9 +73,9 @@ public class ValidationConfig {
return sTrades -> { return sTrades -> {
ImdgValidationContext<STrades> context = new ImdgValidationContext<>(); ImdgValidationContext<STrades> context = new ImdgValidationContext<>();
context.setValidatedObject(sTrades); context.setValidatedObject(sTrades);
addImdg.accept(context, IMDGDistributedNames.Map_Security); context.addImdg(IMDGDistributedNames.Map_Security, imdgSecurity);
addImdg.accept(context, IMDGDistributedNames.Map_Company); context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
addImdg.accept(context, IMDGDistributedNames.Map_TradingClearingRegistry); context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
STradesValidationRule.SecurityPresent, STradesValidationRule.SecurityPresent,
STradesValidationRule.CompanyPresent, STradesValidationRule.CompanyPresent,
@ -94,12 +89,12 @@ public class ValidationConfig {
return rgs -> { return rgs -> {
ImdgValidationContext<Registry> context = new ImdgValidationContext<>(); ImdgValidationContext<Registry> context = new ImdgValidationContext<>();
context.setValidatedObject(rgs); context.setValidatedObject(rgs);
addImdg.accept(context, IMDGDistributedNames.Map_Relation); context.addImdg(IMDGDistributedNames.Map_Relation, imdgRelation);
addImdg.accept(context, IMDGDistributedNames.Map_Session); context.addImdg(IMDGDistributedNames.Map_Session, imdgSession);
addImdg.accept(context, IMDGDistributedNames.Map_SectionDictionary); context.addImdg(IMDGDistributedNames.Map_SectionDictionary, imdgSectionDictionary);
addImdg.accept(context, IMDGDistributedNames.Map_Account); context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
addImdg.accept(context, IMDGDistributedNames.Map_Company); context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
addImdg.accept(context, IMDGDistributedNames.Map_TradingClearingRegistry); context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
RegistryStep3ValidationRule.ClearingAvailable, RegistryStep3ValidationRule.ClearingAvailable,
RegistryStep3ValidationRule.AccountActive, RegistryStep3ValidationRule.AccountActive,
@ -112,9 +107,8 @@ public class ValidationConfig {
return sDf01 -> { return sDf01 -> {
ImdgValidationContext<SDf01> context = new ImdgValidationContext<>(); ImdgValidationContext<SDf01> context = new ImdgValidationContext<>();
context.setValidatedObject(sDf01); context.setValidatedObject(sDf01);
Consumer<String> addImdg = (s) -> context.addImdg(s, getImdg(s)); context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
addImdg.accept(IMDGDistributedNames.Map_Account); context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
addImdg.accept(IMDGDistributedNames.Map_Company);
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
Sdf01ValidationRule.CompanyPresent, Sdf01ValidationRule.CompanyPresent,
Sdf01ValidationRule.AccountPresent, Sdf01ValidationRule.AccountPresent,
@ -130,9 +124,8 @@ public class ValidationConfig {
return sDf57 -> { return sDf57 -> {
ImdgValidationContext<SDf57> context = new ImdgValidationContext<>(); ImdgValidationContext<SDf57> context = new ImdgValidationContext<>();
context.setValidatedObject(sDf57); context.setValidatedObject(sDf57);
Consumer<String> addImdg = (s) -> context.addImdg(s, getImdg(s)); context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
addImdg.accept(IMDGDistributedNames.Map_Account); context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
addImdg.accept(IMDGDistributedNames.Map_Company);
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
Sdf57ValidationRule.CompanyDebOrCredPresent, Sdf57ValidationRule.CompanyDebOrCredPresent,
Sdf57ValidationRule.AccountDebOrCredPresent, Sdf57ValidationRule.AccountDebOrCredPresent,
@ -146,9 +139,8 @@ public class ValidationConfig {
return sDf01 -> { return sDf01 -> {
ImdgValidationContext<SDf01> context = new ImdgValidationContext<>(); ImdgValidationContext<SDf01> context = new ImdgValidationContext<>();
context.setValidatedObject(sDf01); context.setValidatedObject(sDf01);
Consumer<String> addImdg = (s) -> context.addImdg(s, getImdg(s)); context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount);
addImdg.accept(IMDGDistributedNames.Map_Account); context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
addImdg.accept(IMDGDistributedNames.Map_Company);
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
Sdf01NewValidationRule.CompanyPresent, Sdf01NewValidationRule.CompanyPresent,
Sdf01NewValidationRule.AccountType, Sdf01NewValidationRule.AccountType,