MoneyMarketSecurity fix

This commit is contained in:
ialbert 2022-10-18 19:26:12 +03:00
parent 8ee414ab1b
commit 0e8ec87211
2 changed files with 76 additions and 36 deletions

View file

@ -1,6 +1,6 @@
package ru.clearing.classes.statics.data.misc;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.clearing.classes.statics.data.security.Security;
import java.math.BigDecimal;
import java.time.LocalDate;
@ -10,16 +10,13 @@ import java.time.LocalDate;
* <p>
* DB table: MONEY_MARKET_SECURITY
**/
public class MoneyMarketSecurity extends SpcexObjectBase {
public class MoneyMarketSecurity extends Security {
private Long securityId;// (linked to security)
private String description;
private LocalDate startDate;
private LocalDate endDate;
private BigDecimal nominalValue;
private Long nominalCurrency; // (linked to currencyCode)
private String instrumentType; // (linked to instrumentType)
private String fullName;
private String securitySymbol;
public Long getSecurityId() {
return securityId;
@ -68,28 +65,4 @@ public class MoneyMarketSecurity extends SpcexObjectBase {
public void setNominalCurrency(Long nominalCurrency) {
this.nominalCurrency = nominalCurrency;
}
public String getInstrumentType() {
return instrumentType;
}
public void setInstrumentType(String instrumentType) {
this.instrumentType = instrumentType;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getSecuritySymbol() {
return securitySymbol;
}
public void setSecuritySymbol(String securitySymbol) {
this.securitySymbol = securitySymbol;
}
}

View file

@ -10,6 +10,9 @@ import ru.spcex.platform.utils.time.TimeUtil;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Component
public class MoneyMarketSecurityMapStore extends TemplateMapStore<MoneyMarketSecurity> {
@ -18,6 +21,9 @@ public class MoneyMarketSecurityMapStore extends TemplateMapStore<MoneyMarketSec
super(jdbcTemplate);
}
private final String insertToSecurityStatement = makeInsertSql("SECURITY",
getFieldsSecurity(), "id");
@Override
public String getTableName() {
return "MONEY_MARKET_SECURITY";
@ -35,12 +41,29 @@ public class MoneyMarketSecurityMapStore extends TemplateMapStore<MoneyMarketSec
@Override
public String[] getFields() {
return new String[]{"ID", "SECURITY_ID", "DESCRIPTION", "START_DATE", "END_DATE", "NOMINAL_VALUE", "NOMINAL_CURRENCY", "INSTRUMENT_TYPE", "FULL_NAME", "SECURITY_SYMBOL"};
return new String[]{"ID", "SECURITY_ID", "DESCRIPTION", "START_DATE", "END_DATE", "NOMINAL_VALUE", "NOMINAL_CURRENCY"};
}
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", "WORKFLOW_STATUS"};
}
@Override
protected MoneyMarketSecurity objectReader(ResultSet resultSet) throws SQLException {
MoneyMarketSecurity object = new MoneyMarketSecurity();
// object.setId(resultSet.getObject("id", Long.class));
// object.setCreated(getInstantFromTimestamp(resultSet, "created_at"));
// object.setUpdated(getInstantFromTimestamp(resultSet, "updated_at"));
// object.setInstrumentType(resultSet.getObject("instrument_type", String.class));
// object.setIssuerId(resultSet.getObject("issuer_id", Long.class));
// object.setShortName(resultSet.getObject("short_name", String.class));
// object.setFullName(resultSet.getObject("full_name", String.class));
// object.setShortNameEng(resultSet.getObject("short_name_eng", String.class));
// object.setFullNameEng(resultSet.getObject("full_name_eng", String.class));
// object.setSecuritySymbol(resultSet.getObject("security_symbol", String.class));
// object.setWorkflowStatus(resultSet.getObject("workflow_status", String.class));
object.setId(resultSet.getObject("ID", Long.class));
object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class));
object.setDescription(resultSet.getObject("DESCRIPTION", String.class));
@ -48,12 +71,25 @@ public class MoneyMarketSecurityMapStore extends TemplateMapStore<MoneyMarketSec
object.setEndDate(getLocalDateFromSqlDate(resultSet, "END_DATE"));
object.setNominalValue(resultSet.getObject("NOMINAL_VALUE", BigDecimal.class));
object.setNominalCurrency(resultSet.getObject("NOMINAL_CURRENCY", Long.class));
object.setInstrumentType(resultSet.getObject("INSTRUMENT_TYPE", String.class));
object.setFullName(resultSet.getObject("FULL_NAME", String.class));
object.setSecuritySymbol(resultSet.getObject("SECURITY_SYMBOL", String.class));
fillBySecurity(object, object.getSecurityId());
return object;
}
private void fillBySecurity(MoneyMarketSecurity object, Long securityId) {
List<MoneyMarketSecurity> resouts = jdbcTemplate.query(
"SELECT * FROM SECURITY WHERE id = ?", new Object[]{securityId},
(rs, rowNum) -> {
object.setInstrumentType(rs.getObject("INSTRUMENT_TYPE", String.class));
object.setFullName(rs.getObject("FULL_NAME", String.class));
object.setSecuritySymbol(rs.getObject("SECURITY_SYMBOL", 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(MoneyMarketSecurity moneyMarketSecurity) {
Object[] args = new Object[]{
@ -64,11 +100,42 @@ public class MoneyMarketSecurityMapStore extends TemplateMapStore<MoneyMarketSec
TimeUtil.toDateFromLocalDate(moneyMarketSecurity.getEndDate()),
moneyMarketSecurity.getNominalValue(),
moneyMarketSecurity.getNominalCurrency(),
moneyMarketSecurity.getInstrumentType(),
moneyMarketSecurity.getFullName(),
moneyMarketSecurity.getSecuritySymbol()
};
return args;
}
protected Object[] securityField(MoneyMarketSecurity 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.getWorkflowStatus()
};
return args;
}
@Override
public void store(Map<Long, MoneyMarketSecurity> map) {
List<Object[]> moneyMarketArgs = new ArrayList<>();
List<Object[]> securityArgs = new ArrayList<>();
for (Map.Entry<Long, MoneyMarketSecurity> entry : map.entrySet()) {
MoneyMarketSecurity 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);
}
}