diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/component/ListingBuilder.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/component/ListingBuilder.java index e8a65395c..a0cf43bea 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/component/ListingBuilder.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/component/ListingBuilder.java @@ -10,78 +10,75 @@ import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSe import ru.spcex.platform.enumeration.Market; import ru.spcex.platform.enumeration.Status; +import java.math.BigDecimal; +import java.time.Instant; + public class ListingBuilder { + private Instant created; + private Long securityId; + private BigDecimal lotSize; private final String market = Market.mkrs.getKey(); + private String symbolCode; + private String symbolName; + private String tradingCurrency; + private final String workflowStatus = Status.Active.getKey(); - public Listing byNewMms(MoneyMarketSecurity mms, MoneyMarketSecurityNewRequest mmsReq) { + public static ListingBuilder builder() { + return new ListingBuilder(); + } + private ListingBuilder(){} + + public ListingBuilder append(MoneyMarketSecurity mms){ + this.created = mms.getCreated(); + this.securityId = mms.getId(); + this.symbolCode = mms.getSecuritySymbol(); + this.symbolName = mms.getFullName(); + this.tradingCurrency = mms.getNominalCurrency(); + return this; + } + + public ListingBuilder append(MoneyMarketSecurityNewRequest mmsReq){ + this.lotSize = mmsReq.getLotSize(); + return this; + } + + public ListingBuilder append(EquitySecurity equitySecurity){ + this.created = equitySecurity.getCreated(); + this.securityId = equitySecurity.getId(); + this.symbolCode = equitySecurity.getSecuritySymbol(); + this.symbolName = equitySecurity.getFullName(); + return this; + } + + public ListingBuilder append(EquitySecurityNewRequest request){ + this.lotSize = request.getLotSize(); + return this; + } + + public ListingBuilder append(FixedIncomeSecurity fixedIncomeSecurity){ + this.created = fixedIncomeSecurity.getCreated(); + this.securityId = fixedIncomeSecurity.getId(); + this.symbolCode = fixedIncomeSecurity.getSecuritySymbol(); + this.symbolName = fixedIncomeSecurity.getFullName(); + this.tradingCurrency = fixedIncomeSecurity.getNominalCurrency(); + return this; + } + + public ListingBuilder append(FixedIncomeSecurityNewRequest request){ + this.lotSize = request.getLotSize(); + return this; + } + + public Listing build(){ Listing listing = new Listing(); - listing.setCreated(mms.getCreated()); - listing.setSecurityId(mms.getId()); - listing.setLotSize(mmsReq.getLotSize()); - listing.setMarket(market); - listing.setSymbolCode(mms.getSecuritySymbol()); - listing.setSymbolName(mms.getFullName()); - listing.setTradingCurrency(mms.getNominalCurrency()); - listing.setWorkflowStatus(Status.Active.getKey()); - return listing; - } - - public Listing byUpdateMms(MoneyMarketSecurity mms, Listing listing) { - listing.setSecurityId(mms.getId()); - listing.setSymbolCode(mms.getSecuritySymbol()); - listing.setSymbolName(mms.getFullName()); - listing.setTradingCurrency(mms.getNominalCurrency()); - listing.setWorkflowStatus(mms.getWorkflowStatus()); - listing.setLotSize(mms.getLotSize()); - listing.setUpdated(mms.getUpdated()); - return listing; - } - - public Listing byNewEquity(EquitySecurity equitySecurity, EquitySecurityNewRequest request) { - Listing listing = new Listing(); - listing.setCreated(equitySecurity.getCreated()); - listing.setSecurityId(equitySecurity.getId()); - listing.setLotSize(request.getLotSize()); - listing.setMarket(market); - listing.setSymbolCode(equitySecurity.getSecuritySymbol()); - listing.setSymbolName(equitySecurity.getFullName()); -// listing.setTradingCurrency(equitySecurity.getNominalCurrency()); - listing.setWorkflowStatus(Status.Active.getKey()); - return listing; - } - - public Listing byUpdateEquity(EquitySecurity equitySecurity, Listing listing) { - listing.setSecurityId(equitySecurity.getId()); - listing.setSymbolCode(equitySecurity.getSecuritySymbol()); - listing.setSymbolName(equitySecurity.getFullName()); - listing.setWorkflowStatus(equitySecurity.getWorkflowStatus()); - listing.setMarket(market); - listing.setLotSize(equitySecurity.getLotSize()); - listing.setUpdated(equitySecurity.getUpdated()); - return listing; - } - - public Listing byNewFixedIncome(FixedIncomeSecurity instant, FixedIncomeSecurityNewRequest request) { - Listing listing = new Listing(); - listing.setCreated(instant.getCreated()); - listing.setSecurityId(instant.getId()); - listing.setLotSize(request.getLotSize()); - listing.setMarket(market); - listing.setSymbolCode(instant.getSecuritySymbol()); - listing.setSymbolName(instant.getFullName()); - listing.setTradingCurrency(instant.getNominalCurrency()); - listing.setWorkflowStatus(Status.Active.getKey()); - return listing; - } - - public Listing byFixedIncomeEquity(FixedIncomeSecurity fixedIncomeSecurity, Listing listing) { - listing.setSecurityId(fixedIncomeSecurity.getId()); - listing.setSymbolCode(fixedIncomeSecurity.getSecuritySymbol()); - listing.setSymbolName(fixedIncomeSecurity.getFullName()); - listing.setTradingCurrency(fixedIncomeSecurity.getNominalCurrency()); - listing.setWorkflowStatus(fixedIncomeSecurity.getWorkflowStatus()); - listing.setLotSize(fixedIncomeSecurity.getLotSize()); - listing.setUpdated(fixedIncomeSecurity.getUpdated()); + listing.setCreated(this.created); + listing.setSecurityId(this.securityId); + listing.setLotSize(this.lotSize); + listing.setMarket(this.market); + listing.setSymbolCode(this.symbolCode); + listing.setSymbolName(this.symbolName); + listing.setTradingCurrency(this.tradingCurrency); + listing.setWorkflowStatus(this.workflowStatus); return listing; } } 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 c19885ee4..e5ead4784 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 @@ -21,6 +21,7 @@ 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.validation.common.ValidationHelper; +import ru.spcex.platform.enumeration.Market; import ru.spcex.platform.enumeration.UserRole; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgId; @@ -40,7 +41,6 @@ public class EquitySecurityService extends QueueConsumer implements Initializing private final ValidationProvider validation; private final UserRoleVerification userRoleVerification; private final ValidationHelper validationHelper; - private final ListingBuilder listingBuilder = new ListingBuilder(); @Autowired public EquitySecurityService(Consumer kafkaQueue, @@ -103,7 +103,8 @@ public class EquitySecurityService extends QueueConsumer implements Initializing Imdg listingMap = transaction.getImdg(IMDGDistributedNames.Map_Listing, Listing.class); //одним скопом выполняем реквест equityImdg.insert(equity); - Listing listing = listingBuilder.byNewEquity(equity, req); + Listing listing = ListingBuilder.builder() + .append(equity).append(req).build(); listingMap.insert(listing); //и сохраняем обновленный // reqInfoMap.insert(reqInfo); @@ -148,7 +149,7 @@ public class EquitySecurityService extends QueueConsumer implements Initializing log.error("MoneyMarketSecurityUpdateRequest id {} couldn't find listing with securityId {}", req.getId(), equity.getId()); return null; } - listing = listingBuilder.byUpdateEquity(equity, listing); + listing = updateListingByEquity(equity, listing); listingImdg.update(listing); return null; } @@ -179,4 +180,15 @@ public class EquitySecurityService extends QueueConsumer implements Initializing listingImdg.update(listing); return null; } + + public Listing updateListingByEquity(EquitySecurity equitySecurity, Listing listing) { + listing.setSecurityId(equitySecurity.getId()); + listing.setSymbolCode(equitySecurity.getSecuritySymbol()); + listing.setSymbolName(equitySecurity.getFullName()); + listing.setWorkflowStatus(equitySecurity.getWorkflowStatus()); + listing.setMarket(Market.mkrs.getKey()); + listing.setLotSize(equitySecurity.getLotSize()); + listing.setUpdated(equitySecurity.getUpdated()); + return listing; + } } 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 d571ed199..5b58b4d97 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 @@ -40,7 +40,6 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial private final ValidationProvider validation; private final UserRoleVerification userRoleVerification; private final ValidationHelper validationHelper; - private final ListingBuilder listingBuilder = new ListingBuilder(); @Autowired public FixedIncomeSecurityService(Consumer kafkaQueue, @@ -108,7 +107,8 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial Imdg listingMap = transaction.getImdg(IMDGDistributedNames.Map_Listing, Listing.class); //одним скопом выполняем реквест fixedIncomeImdg.insert(fixedIncome); - Listing listing = listingBuilder.byNewFixedIncome(fixedIncome, req); + Listing listing = ListingBuilder.builder() + .append(fixedIncome).append(req).build(); listingMap.insert(listing); //и сохраняем обновленный // reqInfoMap.insert(reqInfo); @@ -159,7 +159,7 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial log.error("updateFixedIncome id {} couldn't find listing with securityId {}", req.getId(), fixedIncome.getId()); return null; } - listing = listingBuilder.byFixedIncomeEquity(fixedIncome, listing); + listing = updateListingByFixedIncome(fixedIncome, listing); listingImdg.update(listing); return null; } @@ -190,4 +190,15 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial listingImdg.update(listing); return null; } + + public Listing updateListingByFixedIncome(FixedIncomeSecurity fixedIncomeSecurity, Listing listing) { + listing.setSecurityId(fixedIncomeSecurity.getId()); + listing.setSymbolCode(fixedIncomeSecurity.getSecuritySymbol()); + listing.setSymbolName(fixedIncomeSecurity.getFullName()); + listing.setTradingCurrency(fixedIncomeSecurity.getNominalCurrency()); + listing.setWorkflowStatus(fixedIncomeSecurity.getWorkflowStatus()); + listing.setLotSize(fixedIncomeSecurity.getLotSize()); + listing.setUpdated(fixedIncomeSecurity.getUpdated()); + return listing; + } } 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 55c1c14b5..285e0d3d4 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 @@ -48,7 +48,6 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial private final UserRoleVerification userRoleVerification; private final ValidationHelper validationHelper; private final IMessageResolver messageResolver; - private final ListingBuilder listingBuilder = new ListingBuilder(); @Autowired public MoneyMarketSecurityService(Consumer kafkaQueue, @@ -133,7 +132,8 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial Imdg listingMap = transaction.getImdg(IMDGDistributedNames.Map_Listing, Listing.class); //одним скопом выполняем реквест moneyMarketSecurityMap.insert(mms); - Listing listing = listingBuilder.byNewMms(mms, req); + Listing listing = ListingBuilder.builder() + .append(mms).append(req).build(); listingMap.insert(listing); //и сохраняем обновленный // reqInfoMap.insert(reqInfo); @@ -191,7 +191,7 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial log.error("MoneyMarketSecurityUpdateRequest id {} couldn't find listing with securityId {}", req.getId(), mms.getId()); return null; } - listing = listingBuilder.byUpdateMms(mms, listing); + listing = updateListingByMms(mms, listing); listingImdg.update(listing); return null; } @@ -229,4 +229,15 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial listingImdg.update(listing); return null; } + + public Listing updateListingByMms(MoneyMarketSecurity mms, Listing listing) { + listing.setSecurityId(mms.getId()); + listing.setSymbolCode(mms.getSecuritySymbol()); + listing.setSymbolName(mms.getFullName()); + listing.setTradingCurrency(mms.getNominalCurrency()); + listing.setWorkflowStatus(mms.getWorkflowStatus()); + listing.setLotSize(mms.getLotSize()); + listing.setUpdated(mms.getUpdated()); + return listing; + } } diff --git a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/AbstractServiceTest.java b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/AbstractServiceTest.java index a7231f52d..e74231321 100644 --- a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/AbstractServiceTest.java +++ b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/AbstractServiceTest.java @@ -19,7 +19,6 @@ import ru.clearing.classes.statics.data.misc.Listing; import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity; import ru.clearing.platform.dictionary.*; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.securities.component.ListingBuilder; import ru.spcex.clearing.securities.config.ErrorResolverConfig; import ru.spcex.clearing.securities.config.ValidationConfig; import ru.spcex.clearing.securities.service.cud.*; @@ -74,7 +73,7 @@ public abstract class AbstractServiceTest { public static Long issuerId = 13243L; public static String termType = "TermType"; public static String currencyCode = "RUB"; - protected final ListingBuilder listingBuilder = new ListingBuilder(); + @Captor protected ArgumentCaptor producerRecord; @MockBean diff --git a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/EquitySecurityServiceTest.java b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/EquitySecurityServiceTest.java index cb3a86448..f6654b2a4 100644 --- a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/EquitySecurityServiceTest.java +++ b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/EquitySecurityServiceTest.java @@ -10,6 +10,7 @@ import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityUpdateRequest; +import ru.spcex.clearing.securities.component.ListingBuilder; import ru.spcex.clearing.securities.service.cud.EquitySecurityService; import ru.spcex.clearing.test.MatcherFactory; @@ -44,7 +45,8 @@ public class EquitySecurityServiceTest extends AbstractServiceTest { final EquitySecurity equityPrediction = getEquitySecurity(); final EquitySecurityNewRequest request = getEquitySecurityNewRequest(equityPrediction); - Listing listingPrediction = listingBuilder.byNewEquity(equityPrediction, request); + Listing listingPrediction = ListingBuilder.builder() + .append(equityPrediction).append(request).build(); //ACT String jsonString = getJsonStringForNew(request, ID); @@ -83,7 +85,7 @@ public class EquitySecurityServiceTest extends AbstractServiceTest { equityPrediction.setLotSize(BigDecimal.valueOf(updateLotSize)); final EquitySecurityUpdateRequest request = getEquitySecurityUpdateRequest(equityPrediction); Listing listingPrediction = new Listing(); - listingPrediction = listingBuilder.byUpdateEquity(equityPrediction, listingPrediction); + listingPrediction = equitySecurityService.updateListingByEquity(equityPrediction, listingPrediction); listingImdg.insert(listingPrediction); //ACT @@ -121,7 +123,7 @@ public class EquitySecurityServiceTest extends AbstractServiceTest { equityPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); Listing listingPrediction = new Listing(); - listingPrediction = listingBuilder.byUpdateEquity(equityPrediction, listingPrediction); + listingPrediction = equitySecurityService.updateListingByEquity(equityPrediction, listingPrediction); listingImdg.insert(listingPrediction); listingPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); diff --git a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/FixedIncomeSecurityServiceTest.java b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/FixedIncomeSecurityServiceTest.java index aff540631..5d756a402 100644 --- a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/FixedIncomeSecurityServiceTest.java +++ b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/FixedIncomeSecurityServiceTest.java @@ -10,6 +10,7 @@ import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSecurityNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSecurityUpdateRequest; +import ru.spcex.clearing.securities.component.ListingBuilder; import ru.spcex.clearing.securities.service.cud.FixedIncomeSecurityService; import ru.spcex.clearing.test.MatcherFactory; @@ -45,7 +46,8 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest { final FixedIncomeSecurity fixedIncomePrediction = getFixedIncomeSecurity(); final FixedIncomeSecurityNewRequest request = getFixedIncomeSecurityNewRequest(fixedIncomePrediction); - Listing listingPrediction = listingBuilder.byNewFixedIncome(fixedIncomePrediction, request); + Listing listingPrediction = ListingBuilder.builder() + .append(fixedIncomePrediction).append(request).build(); //ACT String jsonString = getJsonStringForNew(request, ID); @@ -85,7 +87,7 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest { fixedIncomePrediction.setLotSize(BigDecimal.valueOf(updateLotSize)); final FixedIncomeSecurityUpdateRequest request = getFixedIncomeSecurityUpdateRequest(fixedIncomePrediction); Listing listingPrediction = new Listing(); - listingPrediction = listingBuilder.byFixedIncomeEquity(fixedIncomePrediction, listingPrediction); + listingPrediction = fixedIncomeSecurityService.updateListingByFixedIncome(fixedIncomePrediction, listingPrediction); listingImdg.insert(listingPrediction); //ACT @@ -123,7 +125,7 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest { fixedIncomePrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); Listing listingPrediction = new Listing(); - listingPrediction = listingBuilder.byFixedIncomeEquity(fixedIncomePrediction, listingPrediction); + listingPrediction = fixedIncomeSecurityService.updateListingByFixedIncome(fixedIncomePrediction, listingPrediction); listingImdg.insert(listingPrediction); listingPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); diff --git a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityServiceTest.java b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityServiceTest.java index 61d5854be..73ca5c1e0 100644 --- a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityServiceTest.java +++ b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityServiceTest.java @@ -13,6 +13,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSe import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityUpdateRequest; import ru.spcex.clearing.platform.messaging.service.RequestInfo; import ru.spcex.clearing.platform.messaging.service.Status; +import ru.spcex.clearing.securities.component.ListingBuilder; import ru.spcex.clearing.securities.service.cud.MoneyMarketSecurityService; import ru.spcex.clearing.test.MatcherFactory; import ru.spcex.platform.imdg.api.Imdg; @@ -64,7 +65,8 @@ public class MoneyMarketSecurityServiceTest extends AbstractServiceTest{ .getMoneyMarketSecurity(); final MoneyMarketSecurityNewRequest keyRequest = moneyMarketSecurityFactory .getMoneyMarketSecurityNewRequest(); - Listing listingPrediction = listingBuilder.byNewMms(moneyMarketSecurityPrediction, keyRequest); + Listing listingPrediction = ListingBuilder.builder() + .append(moneyMarketSecurityPrediction).append(keyRequest).build(); //ACT String jsonString = getJsonStringForNew(keyRequest, ID); @@ -102,7 +104,7 @@ public class MoneyMarketSecurityServiceTest extends AbstractServiceTest{ moneyMarketSecurityPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); Listing listingPrediction = new Listing(); - listingPrediction = listingBuilder.byUpdateMms(moneyMarketSecurityPrediction, listingPrediction); + listingPrediction = moneyMarketSecurityService.updateListingByMms(moneyMarketSecurityPrediction, listingPrediction); listingImdg.insert(listingPrediction); listingPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); @@ -154,7 +156,7 @@ public class MoneyMarketSecurityServiceTest extends AbstractServiceTest{ keyRequest.setTermType(termType); keyRequest.setLotSize(updateLotSize); Listing listingPrediction = new Listing(); - listingPrediction = listingBuilder.byUpdateMms(moneyMarketSecurityPrediction, listingPrediction); + listingPrediction = moneyMarketSecurityService.updateListingByMms(moneyMarketSecurityPrediction, listingPrediction); listingImdg.insert(listingPrediction); listingPrediction.setLotSize(updateLotSize);