From f701b0db8ca50c4dc4c0b08398e7fae3f9dd912a Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 10 Apr 2023 13:29:36 +0300 Subject: [PATCH] =?UTF-8?q?IMDG=20refactoring=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B4=D0=BE=D1=87=D0=B5=D1=80=D0=BD=D0=B8=D1=85=20=D1=82=D0=B0?= =?UTF-8?q?=D0=B1=D0=BB=D0=B8=D1=86=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=B4=D0=B8?= =?UTF-8?q?=D0=BD=D0=B8=D0=BB=20=D0=BE=D0=B1=D1=89=D0=B8=D0=B9=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ASecurityHistoryMapStore.java | 83 ++++++++++++++ .../EquitySecurityHistoryMapStore.java | 59 +--------- .../FixedIncomeSecurityHistoryMapStore.java | 57 +--------- .../MoneyMarketSecurityHistoryMapStore.java | 52 +-------- .../SecurityHistoryMapStore.java | 1 + .../businessobject/ASecurityMapStore.java | 105 ++++++++++++++++++ .../EquitySecurityMapStore.java | 73 +----------- .../FixedIncomeSecurityMapStore.java | 72 +----------- .../imdg/businessobject/SecurityMapStore.java | 1 + 9 files changed, 195 insertions(+), 308 deletions(-) create mode 100644 clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/ASecurityHistoryMapStore.java create mode 100644 clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/ASecurityMapStore.java diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/ASecurityHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/ASecurityHistoryMapStore.java new file mode 100644 index 000000000..39cda97d8 --- /dev/null +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/ASecurityHistoryMapStore.java @@ -0,0 +1,83 @@ +package ru.spcex.clearing.imdg.businessevent; + +import org.springframework.jdbc.core.JdbcTemplate; +import ru.clearing.classes.objects.BusinessEvent; +import ru.clearing.classes.statics.data.security.Security; +import ru.spcex.clearing.imdg.base.TemplateEventMapStore; +import ru.spcex.platform.utils.time.TimeUtil; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Двойная запись в 2 таблицы: + * SECURITY_HISTORY + * *_SECURITY_HISTORY + */ +public abstract class ASecurityHistoryMapStore> extends TemplateEventMapStore { + + protected final int validateSecuritySize; + + public ASecurityHistoryMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + this.validateSecuritySize = getFieldsSecurity().length; + } + + public String[] getFieldsSecurity() { + return new String[]{ + "ID", "EVENT_TIME", "EVENT_USER_ID", "EVENT_TYPE", + "SECURITY_ID", "CREATED_AT", "UPDATED_AT", "INSTRUMENT_TYPE", "ISSUER_ID", "SHORT_NAME", "FULL_NAME", "SHORT_NAME_ENG", "FULL_NAME_ENG", "SECURITY_SYMBOL", "ISIN", "WORKFLOW_STATUS"}; + } + + private final String insertToSecurityStatement = makeInsertSql("SECURITY", + getFieldsSecurity(), "id"); + + + protected Object[] securityField(STH historyLog) { + Security object = historyLog.getObject(); + Object[] args = new Object[]{ + historyLog.getId(), + historyLog.getEventTime(), + historyLog.getUserId(), + historyLog.getEventType(), + + object.getId(), // securitytId + TimeUtil.toDateFromInstant(object.getCreated()), + TimeUtil.toDateFromInstant(object.getUpdated()), + object.getInstrumentType(), + object.getIssuerId(), + object.getShortName(), + object.getFullName(), + object.getShortNameEng(), + object.getFullNameEng(), + object.getSecuritySymbol(), + object.getIsin(), + object.getWorkflowStatus() + }; + return args; + } + + @Override + public void store(Map map) { + List tableArgs = new ArrayList<>(); + List securityArgs = new ArrayList<>(); + + for (Map.Entry entry : map.entrySet()) { + STH obj = entry.getValue(); + Object[] args = objectToField(obj); + if (args.length != validateSize) { + throw new IllegalArgumentException("objectToField return " + args.length + " arguments, but expected " + validateSize); + } + tableArgs.add(args); + Object[] securityItemArgs = securityField(obj); + + if (securityItemArgs.length != validateSecuritySize) { + throw new IllegalArgumentException("securityField return " + securityItemArgs.length + " arguments, but expected " + validateSecuritySize); + } + securityArgs.add(securityItemArgs); + } + batchInsertUpdate(insertStatement, tableArgs); + batchInsertUpdate(insertToSecurityStatement, securityArgs); + } +} diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/EquitySecurityHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/EquitySecurityHistoryMapStore.java index 5c4af9ad2..38cb86897 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/EquitySecurityHistoryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/EquitySecurityHistoryMapStore.java @@ -5,15 +5,9 @@ import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity; import ru.clearing.classes.statics.data.instrument.issue.EquitySecurityHistory; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.imdg.base.TemplateEventMapStore; -import ru.spcex.platform.utils.time.TimeUtil; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; @Component -public class EquitySecurityHistoryMapStore extends TemplateEventMapStore { +public class EquitySecurityHistoryMapStore extends ASecurityHistoryMapStore { public EquitySecurityHistoryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); @@ -37,16 +31,6 @@ public class EquitySecurityHistoryMapStore extends TemplateEventMapStore map) { - List moneyMarketArgs = new ArrayList<>(); - List securityArgs = new ArrayList<>(); - - for (Map.Entry entry : map.entrySet()) { - EquitySecurityHistory obj = entry.getValue(); - Object[] args = objectToField(obj); - if (args.length != validateSize) { - throw new IllegalArgumentException("objectToField return " + args.length + " arguments, but expected " + validateSize); - } - moneyMarketArgs.add(args); - securityArgs.add(securityField(obj)); - } - batchInsertUpdate(insertStatement, moneyMarketArgs); - batchInsertUpdate(insertToSecurityStatement, securityArgs); - } } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/FixedIncomeSecurityHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/FixedIncomeSecurityHistoryMapStore.java index cfa67916d..bed37e509 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/FixedIncomeSecurityHistoryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/FixedIncomeSecurityHistoryMapStore.java @@ -5,15 +5,11 @@ import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity; import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurityHistory; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.imdg.base.TemplateEventMapStore; import ru.spcex.platform.utils.time.TimeUtil; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; @Component -public class FixedIncomeSecurityHistoryMapStore extends TemplateEventMapStore { +public class FixedIncomeSecurityHistoryMapStore extends ASecurityHistoryMapStore { public FixedIncomeSecurityHistoryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); @@ -38,16 +34,6 @@ public class FixedIncomeSecurityHistoryMapStore extends TemplateEventMapStore map) { - List moneyMarketArgs = new ArrayList<>(); - List securityArgs = new ArrayList<>(); - - for (Map.Entry entry : map.entrySet()) { - FixedIncomeSecurityHistory obj = entry.getValue(); - Object[] args = objectToField(obj); - if (args.length != validateSize) { - throw new IllegalArgumentException("objectToField return " + args.length + " arguments, but expected " + validateSize); - } - moneyMarketArgs.add(args); - securityArgs.add(securityField(obj)); - } - batchInsertUpdate(insertStatement, moneyMarketArgs); - batchInsertUpdate(insertToSecurityStatement, securityArgs); - } } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/MoneyMarketSecurityHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/MoneyMarketSecurityHistoryMapStore.java index 56ca67880..d2549e572 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/MoneyMarketSecurityHistoryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/MoneyMarketSecurityHistoryMapStore.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.Map; @Component -public class MoneyMarketSecurityHistoryMapStore extends TemplateEventMapStore { +public class MoneyMarketSecurityHistoryMapStore extends ASecurityHistoryMapStore { public MoneyMarketSecurityHistoryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); @@ -37,15 +37,6 @@ public class MoneyMarketSecurityHistoryMapStore extends TemplateEventMapStore map) { - List moneyMarketArgs = new ArrayList<>(); - List securityArgs = new ArrayList<>(); - - for (Map.Entry entry : map.entrySet()) { - MoneyMarketSecurityHistory obj = entry.getValue(); - Object[] args = objectToField(obj); - if (args.length != validateSize) { - throw new IllegalArgumentException("objectToField return " + args.length + " arguments, but expected " + validateSize); - } - moneyMarketArgs.add(args); - securityArgs.add(securityField(obj)); - } - batchInsertUpdate(insertStatement, moneyMarketArgs); - batchInsertUpdate(insertToSecurityStatement, securityArgs); - } } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/SecurityHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/SecurityHistoryMapStore.java index 5dad83db3..9f0c5dc60 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/SecurityHistoryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/SecurityHistoryMapStore.java @@ -8,6 +8,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.base.TemplateEventMapStore; import ru.spcex.platform.utils.time.TimeUtil; +// Abstract table: ASecurityHistoryMapStore @Component public class SecurityHistoryMapStore extends TemplateEventMapStore { diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/ASecurityMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/ASecurityMapStore.java new file mode 100644 index 000000000..df50fd421 --- /dev/null +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/ASecurityMapStore.java @@ -0,0 +1,105 @@ +package ru.spcex.clearing.imdg.businessobject; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.security.Security; +import ru.spcex.clearing.imdg.base.TemplateMapStore; +import ru.spcex.platform.utils.time.TimeUtil; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Двойная запись в 2 таблицы: + * SECURITY_HISTORY + * *_SECURITY_HISTORY + * + * objectReader() надо использовать fillBySecurity(object, object.getSecurityId()); + * objectToField() требуется возвращать только поля в дополнительную таблицу, без полей для SECURITY + */ +@Component +public abstract class ASecurityMapStore extends TemplateMapStore { + + protected final int validateSecuritySize; + + public ASecurityMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + validateSecuritySize = getFieldsSecurity().length; + } + + public String[] getFieldsSecurity() { + return new String[]{"ID", "CREATED_AT", "UPDATED_AT", "INSTRUMENT_TYPE", "ISSUER_ID", "SHORT_NAME", "FULL_NAME", "SHORT_NAME_ENG", "FULL_NAME_ENG", "SECURITY_SYMBOL", "ISIN", "WORKFLOW_STATUS"}; + } + + private final String insertToSecurityStatement = makeInsertSql("SECURITY", + getFieldsSecurity(), "id"); + + + + protected void fillBySecurity(S object, Long securityId) { + List resouts = jdbcTemplate.query( + "SELECT * FROM SECURITY WHERE id = ?", new Object[]{securityId}, + (rs, rowNum) -> { + object.setCreated(getInstantFromTimestamp(rs, "CREATED_AT")); + object.setUpdated(getInstantFromTimestamp(rs, "UPDATED_AT")); + object.setInstrumentType(rs.getObject("INSTRUMENT_TYPE", String.class)); + object.setIssuerId(rs.getObject("issuer_id", Long.class)); + object.setShortName(rs.getObject("short_name", String.class)); + object.setFullName(rs.getObject("FULL_NAME", String.class)); + object.setShortNameEng(rs.getObject("short_name_eng", String.class)); + object.setFullNameEng(rs.getObject("full_name_eng", String.class)); + object.setSecuritySymbol(rs.getObject("SECURITY_SYMBOL", String.class)); + object.setIsin(rs.getObject("ISIN", String.class)); + object.setWorkflowStatus(rs.getObject("workflow_status", String.class)); + return object; + } + ); + if (resouts.size() != 1) { + log.warn("Result size={} not expected for table SECURITY, {} where id={}", getTableName(), resouts.size(), securityId); + } + } + + + protected Object[] securityField(S object) { + Object[] args = new Object[]{ + object.getId(), // SecurityId + TimeUtil.toDateFromInstant(object.getCreated()), + TimeUtil.toDateFromInstant(object.getUpdated()), + object.getInstrumentType(), + object.getIssuerId(), + object.getShortName(), + object.getFullName(), + object.getShortNameEng(), + object.getFullNameEng(), + object.getSecuritySymbol(), + object.getIsin(), + object.getWorkflowStatus() + }; + return args; + } + + @Override + public void store(Map map) { + List childTableArgs = new ArrayList<>(); + List securityArgs = new ArrayList<>(); + + for (Map.Entry entry : map.entrySet()) { + S obj = entry.getValue(); + Object[] args = objectToField(obj); + if (args.length != validateSize) { + throw new IllegalArgumentException("objectToField return " + args.length + " arguments, but expected " + validateSize); + } + childTableArgs.add(args); + Object[] argsSecurityItem = securityField(obj); + if (argsSecurityItem.length != validateSecuritySize) { + throw new IllegalArgumentException("securityField return " + argsSecurityItem.length + " arguments, but expected " + validateSecuritySize); + } + securityArgs.add(argsSecurityItem); + } + batchInsertUpdate(insertStatement, childTableArgs); + batchInsertUpdate(insertToSecurityStatement, securityArgs); + } + + +} diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/EquitySecurityMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/EquitySecurityMapStore.java index c6d21f3f2..a87523eee 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/EquitySecurityMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/EquitySecurityMapStore.java @@ -14,7 +14,7 @@ import java.util.List; import java.util.Map; @Component -public class EquitySecurityMapStore extends TemplateMapStore { +public class EquitySecurityMapStore extends ASecurityMapStore { public EquitySecurityMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); @@ -37,18 +37,6 @@ public class EquitySecurityMapStore extends TemplateMapStore { }; } - public String[] getFieldsSecurity() { - return new String[]{"ID", "CREATED_AT", "UPDATED_AT", "INSTRUMENT_TYPE", "ISSUER_ID", "SHORT_NAME", "FULL_NAME", "SHORT_NAME_ENG", "FULL_NAME_ENG", "SECURITY_SYMBOL", "ISIN", "WORKFLOW_STATUS"}; - } - - private final String insertToSecurityStatement = makeInsertSql("SECURITY", - getFieldsSecurity(), "id"); - - - - - - @Override protected EquitySecurity objectReader(ResultSet resultSet) throws SQLException { @@ -62,29 +50,6 @@ public class EquitySecurityMapStore extends TemplateMapStore { return object; } - private void fillBySecurity(EquitySecurity object, Long securityId) { - List resouts = jdbcTemplate.query( - "SELECT * FROM SECURITY WHERE id = ?", new Object[]{securityId}, - (rs, rowNum) -> { - object.setCreated(getInstantFromTimestamp(rs, "CREATED_AT")); - object.setUpdated(getInstantFromTimestamp(rs, "UPDATED_AT")); - object.setInstrumentType(rs.getObject("INSTRUMENT_TYPE", String.class)); - object.setIssuerId(rs.getObject("issuer_id", Long.class)); - object.setShortName(rs.getObject("short_name", String.class)); - object.setFullName(rs.getObject("FULL_NAME", String.class)); - object.setShortNameEng(rs.getObject("short_name_eng", String.class)); - object.setFullNameEng(rs.getObject("full_name_eng", String.class)); - object.setSecuritySymbol(rs.getObject("SECURITY_SYMBOL", String.class)); - object.setIsin(rs.getObject("ISIN", String.class)); - object.setWorkflowStatus(rs.getObject("workflow_status", String.class)); - return object; - } - ); - if (resouts.size() != 1) { - log.warn("Result size={} not expected for table MONEY_MARKET_SECURITY where id={}", resouts.size(), securityId); - } - } - @Override protected Object[] objectToField(EquitySecurity equity) { Object[] args = new Object[]{ @@ -95,40 +60,4 @@ public class EquitySecurityMapStore extends TemplateMapStore { return args; } - protected Object[] securityField(EquitySecurity object) { - Object[] args = new Object[]{ - object.getSecurityId(), - TimeUtil.toDateFromInstant(object.getCreated()), - TimeUtil.toDateFromInstant(object.getUpdated()), - object.getInstrumentType(), - object.getIssuerId(), - object.getShortName(), - object.getFullName(), - object.getShortNameEng(), - object.getFullNameEng(), - object.getSecuritySymbol(), - object.getIsin(), - object.getWorkflowStatus() - }; - return args; - } - - @Override - public void store(Map map) { - List moneyMarketArgs = new ArrayList<>(); - List securityArgs = new ArrayList<>(); - - for (Map.Entry entry : map.entrySet()) { - EquitySecurity obj = entry.getValue(); - Object[] args = objectToField(obj); - if (args.length != validateSize) { - throw new IllegalArgumentException("objectToField return " + args.length + " arguments, but expected " + validateSize); - } - moneyMarketArgs.add(args); - securityArgs.add(securityField(obj)); - } - batchInsertUpdate(insertStatement, moneyMarketArgs); - batchInsertUpdate(insertToSecurityStatement, securityArgs); - } - } \ No newline at end of file diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/FixedIncomeSecurityMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/FixedIncomeSecurityMapStore.java index 89ff3e9a8..13702905d 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/FixedIncomeSecurityMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/FixedIncomeSecurityMapStore.java @@ -4,16 +4,14 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.imdg.base.TemplateMapStore; import ru.spcex.platform.utils.time.TimeUtil; import java.math.BigDecimal; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.*; @Component -public class FixedIncomeSecurityMapStore extends TemplateMapStore { +public class FixedIncomeSecurityMapStore extends ASecurityMapStore { public FixedIncomeSecurityMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); @@ -36,14 +34,6 @@ public class FixedIncomeSecurityMapStore extends TemplateMapStore resouts = jdbcTemplate.query( - "SELECT * FROM SECURITY WHERE id = ?", new Object[]{securityId}, - (rs, rowNum) -> { - object.setCreated(getInstantFromTimestamp(rs, "CREATED_AT")); - object.setUpdated(getInstantFromTimestamp(rs, "UPDATED_AT")); - object.setInstrumentType(rs.getObject("INSTRUMENT_TYPE", String.class)); - object.setIssuerId(rs.getObject("issuer_id", Long.class)); - object.setShortName(rs.getObject("short_name", String.class)); - object.setFullName(rs.getObject("FULL_NAME", String.class)); - object.setShortNameEng(rs.getObject("short_name_eng", String.class)); - object.setFullNameEng(rs.getObject("full_name_eng", String.class)); - object.setSecuritySymbol(rs.getObject("SECURITY_SYMBOL", String.class)); - object.setIsin(rs.getObject("ISIN", String.class)); - object.setWorkflowStatus(rs.getObject("workflow_status", String.class)); - return object; - } - ); - if (resouts.size() != 1) { - log.warn("Result size={} not expected for table MONEY_MARKET_SECURITY where id={}", resouts.size(), securityId); - } - } - @Override protected Object[] objectToField(FixedIncomeSecurity object) { Object[] args = new Object[]{ @@ -99,41 +66,4 @@ public class FixedIncomeSecurityMapStore extends TemplateMapStore map) { - List moneyMarketArgs = new ArrayList<>(); - List securityArgs = new ArrayList<>(); - - for (Map.Entry entry : map.entrySet()) { - FixedIncomeSecurity obj = entry.getValue(); - Object[] args = objectToField(obj); - if (args.length != validateSize) { - throw new IllegalArgumentException("objectToField return " + args.length + " arguments, but expected " + validateSize); - } - moneyMarketArgs.add(args); - securityArgs.add(securityField(obj)); - } - batchInsertUpdate(insertStatement, moneyMarketArgs); - batchInsertUpdate(insertToSecurityStatement, securityArgs); - } - - } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/SecurityMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/SecurityMapStore.java index d48f17ed2..7b876cd81 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/SecurityMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/SecurityMapStore.java @@ -10,6 +10,7 @@ import ru.spcex.platform.utils.time.TimeUtil; import java.sql.ResultSet; import java.sql.SQLException; +// Abstract table: ASecurityHistoryMapStore @Component public class SecurityMapStore extends TemplateMapStore {