From 716444275231e5f28139a93fb4218c21b7b048d8 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Wed, 23 Aug 2023 11:50:01 +0300 Subject: [PATCH] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-453=20?= =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=BF=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=BA=D1=83=20=D0=BD=D0=B0=20=D1=83=D0=BD=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20securi?= =?UTF-8?q?ty.securitysymbol=20=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=BD=D0=B5=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC?= =?UTF-8?q?=D0=BE=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../securities/service/cud/EquitySecurityService.java | 6 +++--- .../service/cud/FixedIncomeSecurityService.java | 7 +++---- .../service/cud/MoneyMarketSecurityService.java | 5 +++-- .../validation/rule/NotPresentBySecuritySymbol.java | 9 +++++---- .../adapter/predicate/ImdgPredicateBuilderHazelcast.java | 5 +++++ .../imdg/api/predicate/ImdgPredicateBuilder.java | 1 + 6 files changed, 20 insertions(+), 13 deletions(-) diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/EquitySecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/EquitySecurityService.java index a122a6817..5346466eb 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/EquitySecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/EquitySecurityService.java @@ -7,8 +7,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity; -import ru.clearing.classes.statics.data.misc.Listing; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.Consts; @@ -93,7 +93,7 @@ public class EquitySecurityService extends QueueConsumer implements Initializing log.debug("EquitySecurityNewRequest received"); EquitySecurity equity = new EquitySecurity(); equity.setId(idGenerator.nextId()); - equity.setSecuritySymbol(req.getSecuritySymbol()); + equity.setSecuritySymbol(StringUtils.hasText(req.getSecuritySymbol()) ? req.getSecuritySymbol().trim() : null); equity.setShortName(req.getShortName()); equity.setFullName(req.getFullName()); equity.setIsin(req.getIsin()); @@ -141,7 +141,7 @@ public class EquitySecurityService extends QueueConsumer implements Initializing EquitySecurity equity = equitySecurityImdg.getSingleObjectByID(req.getId()); Instant updateTime = Instant.now(); equity.setUpdated(updateTime); - equity.setSecuritySymbol(req.getSecuritySymbol()); + equity.setSecuritySymbol(StringUtils.hasText(req.getSecuritySymbol()) ? req.getSecuritySymbol().trim() : null); equity.setShortName(req.getShortName()); equity.setFullName(req.getFullName()); equity.setIsin(req.getIsin()); diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/FixedIncomeSecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/FixedIncomeSecurityService.java index de019f039..16b98eafc 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/FixedIncomeSecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/FixedIncomeSecurityService.java @@ -7,8 +7,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity; -import ru.clearing.classes.statics.data.misc.Listing; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.Consts; @@ -17,7 +17,6 @@ import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSe import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSecurityUpdateRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; -import ru.spcex.clearing.securities.component.ListingBuilder; import ru.spcex.clearing.securities.validation.ValidationProvider; import ru.spcex.clearing.util.security.UserRoleVerification; import ru.spcex.clearing.util.services.RequestHelper; @@ -102,7 +101,7 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial FixedIncomeSecurity fixedIncome = new FixedIncomeSecurity(); fixedIncome.setId(idGenerator.nextId()); - fixedIncome.setSecuritySymbol(req.getSecuritySymbol()); + fixedIncome.setSecuritySymbol(StringUtils.hasText(req.getSecuritySymbol()) ? req.getSecuritySymbol().trim() : null); fixedIncome.setShortName(req.getShortName()); fixedIncome.setFullName(req.getFullName()); fixedIncome.setIsin(req.getIsin()); @@ -147,7 +146,7 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial FixedIncomeSecurity fixedIncome = fixedIncomeSecurityImdg.getSingleObjectByID(req.getId()); Instant updateTime = Instant.now(); fixedIncome.setUpdated(updateTime); - fixedIncome.setSecuritySymbol(req.getSecuritySymbol()); + fixedIncome.setSecuritySymbol(StringUtils.hasText(req.getSecuritySymbol()) ? req.getSecuritySymbol().trim() : null); fixedIncome.setShortName(req.getShortName()); fixedIncome.setFullName(req.getFullName()); fixedIncome.setIsin(req.getIsin()); diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java index 34036d8d1..7af5c686c 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java @@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import ru.clearing.classes.statics.data.misc.Listing; import ru.clearing.classes.statics.data.security.MoneyMarketSecurity; import ru.spcex.clearing.imdg.IMDGDistributedNames; @@ -134,7 +135,7 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial mms.setShortName(req.getShortName()); mms.setFullNameEng(req.getFullNameEng()); mms.setShortNameEng(req.getShortNameEng()); - mms.setSecuritySymbol(req.getSecuritySymbol()); + mms.setSecuritySymbol(StringUtils.hasText(req.getSecuritySymbol()) ? req.getSecuritySymbol().trim() : null); mms.setTermType(req.getTermType()); mms.setIsin(req.getIsin()); mms.setIssuerId(req.getIssuerId()); @@ -203,7 +204,7 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial mms.setShortName(req.getShortName()); mms.setFullNameEng(req.getFullNameEng()); mms.setShortNameEng(req.getShortNameEng()); - mms.setSecuritySymbol(req.getSecuritySymbol()); + mms.setSecuritySymbol(StringUtils.hasText(req.getSecuritySymbol()) ? req.getSecuritySymbol().trim() : null); mms.setTermType(req.getTermType()); mms.setIsin(req.getIsin()); mms.setIssuerId(req.getIssuerId()); diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/NotPresentBySecuritySymbol.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/NotPresentBySecuritySymbol.java index ad2a9370e..0afe91776 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/NotPresentBySecuritySymbol.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/NotPresentBySecuritySymbol.java @@ -5,12 +5,12 @@ import ru.spcex.clearing.securities.errors.SecuritiesError; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol; import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IErrorEnumId; import ru.spcex.platform.utils.validation.IValidationRule; -import java.util.Map; import java.util.Optional; public class NotPresentBySecuritySymbol implements IValidationRule> { @@ -23,15 +23,16 @@ public class NotPresentBySecuritySymbol validate(ImdgValidationContext context) { WithSecuritySymbol action = context.getValidatedObject(); Imdg imdg = context.obtainMap(mapName, clazz); - if(!StringUtils.hasText(action.getSecuritySymbol())) { + if (!StringUtils.hasText(action.getSecuritySymbol())) { return of(SecuritiesError.RequiredFieldIsEmpty, "securitySymbol"); } - T object = imdg.getFirstObjectByFieldValues(Map.of("securitySymbol", action.getSecuritySymbol())); + ImdgPredicateBuilder pb = imdg.predicateBuilder(); + T object = imdg.getSingleObjectByPredicate(pb.ilike("securitySymbol", action.getSecuritySymbol())); if (object != null) { return of(errorEnum, action.getSecuritySymbol()); } else { diff --git a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/predicate/ImdgPredicateBuilderHazelcast.java b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/predicate/ImdgPredicateBuilderHazelcast.java index efb410793..0569de496 100644 --- a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/predicate/ImdgPredicateBuilderHazelcast.java +++ b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/predicate/ImdgPredicateBuilderHazelcast.java @@ -50,6 +50,11 @@ public class ImdgPredicateBuilderHazelcast implements ImdgPredicateBuilder { return new ImdgPredicateHazelcast(Predicates.in(key, values)); } + @Override + public ImdgPredicate ilike(String key, String pattern) { + return new ImdgPredicateHazelcast(Predicates.ilike(key, pattern)); + } + @Override public ImdgPredicate not(ImdgPredicate param) { ImdgPredicateHazelcast paramMy = (ImdgPredicateHazelcast) param; diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/ImdgPredicateBuilder.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/ImdgPredicateBuilder.java index 187f43ae6..6cd12ad1c 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/ImdgPredicateBuilder.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/ImdgPredicateBuilder.java @@ -10,6 +10,7 @@ public interface ImdgPredicateBuilder { ImdgPredicate in(String key, Comparable... values); + ImdgPredicate ilike(String key, String pattern); ImdgPredicate not(ImdgPredicate param); ImdgPredicate and(ImdgPredicate paramA, ImdgPredicate paramB); ImdgPredicate and(ImdgPredicate... param);