Сделал проверку на уникальность security.securitysymbol регистронезависимой.
This commit is contained in:
psemenkov 2023-08-23 11:50:01 +03:00
parent 0ad02d573b
commit 7164442752
6 changed files with 20 additions and 13 deletions

View file

@ -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());

View file

@ -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());

View file

@ -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());

View file

@ -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<T extends SpcexObjectBase & WithSecuritySymbol> implements IValidationRule<ImdgValidationContext<WithSecuritySymbol>> {
@ -23,15 +23,16 @@ public class NotPresentBySecuritySymbol<T extends SpcexObjectBase & WithSecurity
this.errorEnum = errorEnum;
this.clazz = clazz;
}
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<WithSecuritySymbol> context) {
WithSecuritySymbol action = context.getValidatedObject();
Imdg<T> 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 {

View file

@ -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;

View file

@ -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);