From 398307b6b546f6d2baafeec36c217801d83655d1 Mon Sep 17 00:00:00 2001 From: akulikov Date: Thu, 6 Apr 2023 11:16:12 +0300 Subject: [PATCH] FieldRequiredRule fix --- .../common/rules/FieldRequiredRule.java | 8 ++-- .../FixedIncomeCashFlowValidationConfig.java | 43 ++++++++++++++++++- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java index 2cef88c89..b9f5bb89c 100644 --- a/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java +++ b/clearing-parent/clearing-utils/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java @@ -19,7 +19,7 @@ public record FieldRequiredRule( String fieldName, Function getter, IErrorEnumId errorEmptyRequiredValue, - Function[] additionalChecks + Function[] additionalChecks ) implements IValidationRule> { /** @@ -33,7 +33,7 @@ public record FieldRequiredRule( public static FieldRequiredRule instance(String fieldName, Function getter, IErrorEnumId errorEmptyRequiredValue, - Function ... additionalChecks) { + Function ... additionalChecks) { if (errorEmptyRequiredValue == null) throw new IllegalArgumentException("Empty errorEmptyRequiredValue"); return new FieldRequiredRule<>(fieldName, getter, errorEmptyRequiredValue, additionalChecks); } @@ -43,8 +43,8 @@ public record FieldRequiredRule( R validatedObject = context.getValidatedObject(); V value = getter.apply(validatedObject); if (value == null) return of(errorEmptyRequiredValue, fieldName); - for (Function additionalCheck : additionalChecks) { - IErrorEnumId validationError = additionalCheck.apply(validatedObject); + for (Function additionalCheck : additionalChecks) { + IErrorEnumId validationError = additionalCheck.apply(value); if (validationError != null) return of(validationError, fieldName); } diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/config/validation/FixedIncomeCashFlowValidationConfig.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/config/validation/FixedIncomeCashFlowValidationConfig.java index 04dcc1b6d..cded567f6 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/config/validation/FixedIncomeCashFlowValidationConfig.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/config/validation/FixedIncomeCashFlowValidationConfig.java @@ -39,11 +39,11 @@ public class FixedIncomeCashFlowValidationConfig { FieldRequiredRule.instance("securitySymbol", FixedIncomeCashFlowNewRequest::getSecuritySymbol, SecuritiesError.RequiredFieldIsEmpty, - request -> { + securitySymbol -> { Imdg fixedIncomeCashFlowImdg = context.obtainMap( IMDGDistributedNames.Map_FixedIncomeCashFlow, FixedIncomeCashFlow.class ); - Long securityId = Long.valueOf(request.getSecuritySymbol()); + Long securityId = Long.valueOf(securitySymbol); Collection fixedIncomeCashFlows = fixedIncomeCashFlowImdg.getCollectionObjectsByFieldValues(Map.of("securityId", securityId)); if (!fixedIncomeCashFlows.isEmpty()) return SecuritiesError.CouponPeriodAlreadyExists; return null; @@ -61,4 +61,43 @@ public class FixedIncomeCashFlowValidationConfig { }; } +// @Bean("fixedIncomeCashFlowUpdateRequestValidator") +// public Function fixedIncomeCashFlowUpdateRequestValidator( +// Map> imdgForValidation +// ) { +// return fixedIncomeCashFlowUpdateRequest -> { +// ImdgValidationContext context = new ImdgValidationContext<>(); +// context.setValidatedObject(fixedIncomeCashFlowUpdateRequest); +// Consumer addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); +// addImdg.accept(IMDGDistributedNames.Map_FixedIncomeCashFlow); +// return new ValidatorImpl<>(context, +// IsLongValueRule.instance("securitySymbol", +// FixedIncomeCashFlowNewRequest::getSecuritySymbol, +// SecuritiesError.RequiredFieldIsEmpty, +// SecuritiesError.WrongFieldValue), +// FieldRequiredRule.instance("securitySymbol", +// FixedIncomeCashFlowNewRequest::getSecuritySymbol, +// SecuritiesError.RequiredFieldIsEmpty, +// request -> { +// Imdg fixedIncomeCashFlowImdg = context.obtainMap( +// IMDGDistributedNames.Map_FixedIncomeCashFlow, FixedIncomeCashFlow.class +// ); +// Long securityId = Long.valueOf(request.getSecuritySymbol()); +// Collection fixedIncomeCashFlows = fixedIncomeCashFlowImdg.getCollectionObjectsByFieldValues(Map.of("securityId", securityId)); +// if (!fixedIncomeCashFlows.isEmpty()) return SecuritiesError.CouponPeriodAlreadyExists; +// return null; +// }), +// FieldRequiredRule.instance("accruedCoupon", +// FixedIncomeCashFlowNewRequest::getAccruedCoupon, +// SecuritiesError.RequiredFieldIsEmpty), +// FieldRequiredRule.instance("nominalValue", +// FixedIncomeCashFlowNewRequest::getNominalValue, +// SecuritiesError.RequiredFieldIsEmpty), +// FieldRequiredRule.instance("number", +// FixedIncomeCashFlowNewRequest::getNumber, +// SecuritiesError.RequiredFieldIsEmpty) +// ); +// }; +// } + }