From 0b89f03b57d7dd141d9b3bab27d76b8485e17cea Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 1 Nov 2022 12:13:09 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-74 fixed validation --- .../balance/config/ValidationConfig.java | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java index b0ab92f3b..f4410767d 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java @@ -11,17 +11,35 @@ import ru.spcex.clearing.balance.validation.AccountBalanceValidationRule; import ru.spcex.clearing.balance.validation.Sdf01ValidationRule; import ru.spcex.clearing.imdg.IMDGDistributedNames; 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.Consumer; import java.util.function.Function; -//fixme вынести Imdg за пределы лямбды @Configuration public class ValidationConfig { + private final Map> imdgs; + + public ValidationConfig(ImdgProvider imdgProvider) { + this.imdgs = new HashMap<>(); + BiConsumer> addImdg = (s, aClass) -> imdgs.put(s, imdgProvider.getImdg(s, aClass)); + addImdg.accept(IMDGDistributedNames.Map_Account, Account.class); + addImdg.accept(IMDGDistributedNames.Map_Company, Company.class); + } + + /** + * чтобы во всех валидаторах был один экземпляр Imdg + */ + private Imdg getImdg(String key) { + return imdgs.get(key); + } @Autowired @Bean("sdf01Validator") @@ -29,9 +47,9 @@ public class ValidationConfig { return sDf01 -> { ImdgValidationContext context = new ImdgValidationContext<>(); context.setValidatedObject(sDf01); - BiConsumer> addImdg = (s, aClass) -> context.addImdg(s, imdgProvider.getImdg(s, aClass)); - addImdg.accept(IMDGDistributedNames.Map_Account, Account.class); - addImdg.accept(IMDGDistributedNames.Map_Company, Company.class); + Consumer addImdg = (s) -> context.addImdg(s, getImdg(s)); + addImdg.accept(IMDGDistributedNames.Map_Account); + addImdg.accept(IMDGDistributedNames.Map_Company); return new ValidatorImpl<>(context, Sdf01ValidationRule.CompanyPresent, Sdf01ValidationRule.AccountPresent, @@ -48,9 +66,9 @@ public class ValidationConfig { return fieldsToValidateWrapper -> { ImdgValidationContext context = new ImdgValidationContext<>(); context.setValidatedObject(fieldsToValidateWrapper); - BiConsumer> addImdg = (s, aClass) -> context.addImdg(s, imdgProvider.getImdg(s, aClass)); - addImdg.accept(IMDGDistributedNames.Map_Account, Account.class); - addImdg.accept(IMDGDistributedNames.Map_Company, Company.class); + Consumer addImdg = (s) -> context.addImdg(s, getImdg(s)); + addImdg.accept(IMDGDistributedNames.Map_Account); + addImdg.accept(IMDGDistributedNames.Map_Company); return new ValidatorImpl<>(context, AccountBalanceValidationRule.CompanyPresent, AccountBalanceValidationRule.AccountOk);