Added tests for businessobject MapStore

This commit is contained in:
psemenkov 2022-10-07 16:26:48 +03:00
parent adca2cdd1a
commit 2e4107e461
28 changed files with 5107 additions and 212 deletions

View file

@ -17,18 +17,6 @@ public class AccountBackendGetAll extends BasicSpcexResponse {
@ApiModelProperty(value = "Полезная нагрузка") @ApiModelProperty(value = "Полезная нагрузка")
private AccountBackendPayload payload = new AccountBackendPayload(); private AccountBackendPayload payload = new AccountBackendPayload();
private static class AccountBackendPayload {
private List<AccountBackendGetFields> items = new ArrayList<>();
public List<AccountBackendGetFields> getItems() {
return items;
}
public void setItems(List<AccountBackendGetFields> items) {
this.items = items;
}
}
public AccountBackendPayload getPayload() { public AccountBackendPayload getPayload() {
return payload; return payload;
} }
@ -45,7 +33,7 @@ public class AccountBackendGetAll extends BasicSpcexResponse {
singleItem.setAccount(account.getAccount()); singleItem.setAccount(account.getAccount());
singleItem.setAccountType(account.getAccountType()); singleItem.setAccountType(account.getAccountType());
singleItem.setRelationId(account.getRelationId()); singleItem.setRelationId(account.getRelationId());
singleItem.setStatus(account.getStatus()); singleItem.setStatus(account.getAccountStatus());
singleItem.setProcessingSign(account.getProcessingSign()); singleItem.setProcessingSign(account.getProcessingSign());
singleItem.setCreated(account.getCreated()); singleItem.setCreated(account.getCreated());
singleItem.setUpdated(account.getUpdated()); singleItem.setUpdated(account.getUpdated());
@ -53,4 +41,16 @@ public class AccountBackendGetAll extends BasicSpcexResponse {
} }
} }
private static class AccountBackendPayload {
private List<AccountBackendGetFields> items = new ArrayList<>();
public List<AccountBackendGetFields> getItems() {
return items;
}
public void setItems(List<AccountBackendGetFields> items) {
this.items = items;
}
}
} }

View file

@ -14,7 +14,7 @@ public class Account extends BusinessObject {
private String account; private String account;
private String accountType; private String accountType;
private Long relationId; private Long relationId;
private String status; private String accountStatus;
private String processingSign; private String processingSign;
public String getAccount() { public String getAccount() {
@ -41,12 +41,12 @@ public class Account extends BusinessObject {
this.relationId = value; this.relationId = value;
} }
public String getStatus() { public String getAccountStatus() {
return status; return accountStatus;
} }
public void setStatus(String value) { public void setAccountStatus(String value) {
this.status = value; this.accountStatus = value;
} }
public String getProcessingSign() { public String getProcessingSign() {

View file

@ -15,7 +15,7 @@ public class AccountBalance extends BusinessObject {
private static final long serialVersionUID = ConstSerializable.serialVersionUID; private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private Long companyId; private Long companyId;
private Long accountId; private Long accountId;
private Long accountType; private String accountType;
private String account; private String account;
private BigDecimal openBalanceAmount; private BigDecimal openBalanceAmount;
private BigDecimal startBalanceAmount; private BigDecimal startBalanceAmount;
@ -49,11 +49,11 @@ public class AccountBalance extends BusinessObject {
this.accountId = accountId; this.accountId = accountId;
} }
public Long getAccountType() { public String getAccountType() {
return accountType; return accountType;
} }
public void setAccountType(Long accountType) { public void setAccountType(String accountType) {
this.accountType = accountType; this.accountType = accountType;
} }

View file

@ -2,7 +2,6 @@ package ru.clearing.classes.statics.data.company.relation;
import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessObject; import ru.clearing.classes.objects.BusinessObject;
import ru.spcex.platform.classes.base.SpcexObjectBase;
/** /**
* Договорные отношения * Договорные отношения
@ -15,8 +14,8 @@ public class Relation extends BusinessObject {
private Long consumerId; private Long consumerId;
private Long supplierId; private Long supplierId;
private String serviceStatus; private String serviceStatus;
private Long service; private String service;
private Long serviceProduct; private String serviceProduct;
private String comment; private String comment;
public Long getConsumerId() { public Long getConsumerId() {
@ -43,19 +42,19 @@ public class Relation extends BusinessObject {
this.serviceStatus = value; this.serviceStatus = value;
} }
public Long getService() { public String getService() {
return service; return service;
} }
public void setService(Long value) { public void setService(String value) {
this.service = value; this.service = value;
} }
public Long getServiceProduct() { public String getServiceProduct() {
return serviceProduct; return serviceProduct;
} }
public void setServiceProduct(Long value) { public void setServiceProduct(String value) {
this.serviceProduct = value; this.serviceProduct = value;
} }

View file

@ -3,7 +3,7 @@ package ru.clearing.classes.statics.data.messages;
import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessObject; import ru.clearing.classes.objects.BusinessObject;
import java.time.Instant; import java.time.LocalDate;
/** /**
* Полные тексты ошибок * Полные тексты ошибок
@ -16,7 +16,7 @@ public class ErrorText extends BusinessObject {
private String errorCode; private String errorCode;
private String text; private String text;
private Long userId; private Long userId;
private Instant clearingDate; private LocalDate clearingDate;
public String getErrorCode() { public String getErrorCode() {
return errorCode; return errorCode;
@ -42,11 +42,11 @@ public class ErrorText extends BusinessObject {
this.userId = value; this.userId = value;
} }
public Instant getClearingDate() { public LocalDate getClearingDate() {
return clearingDate; return clearingDate;
} }
public void setClearingDate(Instant value) { public void setClearingDate(LocalDate value) {
this.clearingDate = value; this.clearingDate = value;
} }

View file

@ -2,9 +2,9 @@ package ru.clearing.classes.statics.data.scheduler;
import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessObject; import ru.clearing.classes.objects.BusinessObject;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import java.time.Instant; import java.time.LocalDate;
import java.time.LocalTime;
/** /**
* Расписание планировщика * Расписание планировщика
@ -15,8 +15,8 @@ public class Scheduler extends BusinessObject {
private static final long serialVersionUID = ConstSerializable.serialVersionUID; private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private String task; private String task;
private Instant taskTime; private LocalTime taskTime;
private Instant clearingDate; private LocalDate clearingDate;
private String market; private String market;
private String taskStatus; private String taskStatus;
private Long securityId; private Long securityId;
@ -30,19 +30,19 @@ public class Scheduler extends BusinessObject {
this.task = value; this.task = value;
} }
public Instant getTaskTime() { public LocalTime getTaskTime() {
return taskTime; return taskTime;
} }
public void setTaskTime(Instant value) { public void setTaskTime(LocalTime value) {
this.taskTime = value; this.taskTime = value;
} }
public Instant getClearingDate() { public LocalDate getClearingDate() {
return clearingDate; return clearingDate;
} }
public void setClearingDate(Instant value) { public void setClearingDate(LocalDate value) {
this.clearingDate = value; this.clearingDate = value;
} }

View file

@ -3,7 +3,7 @@ package ru.clearing.classes.statics.data.scheduler;
import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessObject; import ru.clearing.classes.objects.BusinessObject;
import java.time.Instant; import java.time.LocalTime;
/** /**
* Постоянное расписание операционного дня * Постоянное расписание операционного дня
@ -14,7 +14,7 @@ public class Timetable extends BusinessObject {
private static final long serialVersionUID = ConstSerializable.serialVersionUID; private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private String task; private String task;
private Instant taskTime; private LocalTime taskTime;
private String taskStatus; private String taskStatus;
public String getTask() { public String getTask() {
@ -25,11 +25,11 @@ public class Timetable extends BusinessObject {
this.task = value; this.task = value;
} }
public Instant getTaskTime() { public LocalTime getTaskTime() {
return taskTime; return taskTime;
} }
public void setTaskTime(Instant value) { public void setTaskTime(LocalTime value) {
this.taskTime = value; this.taskTime = value;
} }

View file

@ -3,7 +3,7 @@ package ru.clearing.classes.statics.data.scheduler;
import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessObject; import ru.clearing.classes.objects.BusinessObject;
import java.time.Instant; import java.time.LocalDate;
/** /**
* Торговые и неторговые дни * Торговые и неторговые дни
@ -13,15 +13,15 @@ import java.time.Instant;
public class TradingCalendar extends BusinessObject { public class TradingCalendar extends BusinessObject {
private static final long serialVersionUID = ConstSerializable.serialVersionUID; private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private Instant clearingDate; private LocalDate clearingDate;
private Long companyId; private Long companyId;
private String tradingStatus; private String tradingStatus;
public Instant getClearingDate() { public LocalDate getClearingDate() {
return clearingDate; return clearingDate;
} }
public void setClearingDate(Instant value) { public void setClearingDate(LocalDate value) {
this.clearingDate = value; this.clearingDate = value;
} }

View file

@ -4,7 +4,7 @@ import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessObject; import ru.clearing.classes.objects.BusinessObject;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.Instant; import java.time.LocalDate;
/** /**
* Денежные средства от расчетной организации * Денежные средства от расчетной организации
@ -16,16 +16,16 @@ public class Statement extends BusinessObject {
private Long addresseeId; private Long addresseeId;
private Long senderId; private Long senderId;
private Instant clearingDate; private LocalDate clearingDate;
private Long statementTypeId; private String statementType;
private String comment; private String comment;
private Long accountId; private Long accountId;
private Long account; private String account;
private Long inOutDirection; private String inOutDirection;
private Instant settlementDate; private LocalDate settlementDate;
private BigDecimal amount; private BigDecimal amount;
private String cashMovementCurrencyCode; private String cashMovementCurrencyCode;
private String status; private String operationStatus;
private String errorCode; private String errorCode;
private String errorText; private String errorText;
private Long inSDfId; private Long inSDfId;
@ -48,20 +48,20 @@ public class Statement extends BusinessObject {
this.senderId = value; this.senderId = value;
} }
public Instant getClearingDate() { public LocalDate getClearingDate() {
return clearingDate; return clearingDate;
} }
public void setClearingDate(Instant value) { public void setClearingDate(LocalDate value) {
this.clearingDate = value; this.clearingDate = value;
} }
public Long getStatementTypeId() { public String getStatementType() {
return statementTypeId; return statementType;
} }
public void setStatementTypeId(Long value) { public void setStatementType(String value) {
this.statementTypeId = value; this.statementType = value;
} }
public String getComment() { public String getComment() {
@ -80,27 +80,27 @@ public class Statement extends BusinessObject {
this.accountId = value; this.accountId = value;
} }
public Long getAccount() { public String getAccount() {
return account; return account;
} }
public void setAccount(Long value) { public void setAccount(String value) {
this.account = value; this.account = value;
} }
public Long getInOutDirection() { public String getInOutDirection() {
return inOutDirection; return inOutDirection;
} }
public void setInOutDirection(Long value) { public void setInOutDirection(String value) {
this.inOutDirection = value; this.inOutDirection = value;
} }
public Instant getSettlementDate() { public LocalDate getSettlementDate() {
return settlementDate; return settlementDate;
} }
public void setSettlementDate(Instant value) { public void setSettlementDate(LocalDate value) {
this.settlementDate = value; this.settlementDate = value;
} }
@ -120,12 +120,12 @@ public class Statement extends BusinessObject {
this.cashMovementCurrencyCode = value; this.cashMovementCurrencyCode = value;
} }
public String getStatus() { public String getOperationStatus() {
return status; return operationStatus;
} }
public void setStatus(String value) { public void setOperationStatus(String value) {
this.status = value; this.operationStatus = value;
} }
public String getErrorCode() { public String getErrorCode() {

View file

@ -2,9 +2,9 @@ package ru.clearing.classes.statics.data.user;
import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessObject; import ru.clearing.classes.objects.BusinessObject;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDate;
/** /**
* Активность пользователей в системе * Активность пользователей в системе
@ -20,8 +20,8 @@ public class UserConnect extends BusinessObject {
private String serverIP; private String serverIP;
private String clientIP; private String clientIP;
private String connectionState; private String connectionState;
private Instant clearingDate; private LocalDate clearingDate;
private String errorCode; private Long errorCode;
private String errorText; private String errorText;
public Long getUserId() { public Long getUserId() {
@ -72,19 +72,19 @@ public class UserConnect extends BusinessObject {
this.connectionState = value; this.connectionState = value;
} }
public Instant getClearingDate() { public LocalDate getClearingDate() {
return clearingDate; return clearingDate;
} }
public void setClearingDate(Instant value) { public void setClearingDate(LocalDate value) {
this.clearingDate = value; this.clearingDate = value;
} }
public String getErrorCode() { public Long getErrorCode() {
return errorCode; return errorCode;
} }
public void setErrorCode(String value) { public void setErrorCode(Long value) {
this.errorCode = value; this.errorCode = value;
} }

View file

@ -1,69 +1,15 @@
package ru.spcex.clearing.imdg; package ru.spcex.clearing.imdg;
import com.hazelcast.config.MapStoreConfig;
import com.hazelcast.core.HazelcastInstance;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.ConfigurableApplicationContext;
import ru.spcex.clearing.imdg.base.BusinessObjectMapStore;
import ru.spcex.clearing.imdg.base.DictionaryMapStore;
import ru.spcex.clearing.imdg.base.TemplateEventMapStore;
import ru.spcex.clearing.imdg.base.TemplateMapStore;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
@SpringBootApplication @SpringBootApplication
public class IMDGApplication { public class IMDGApplication {
public static void main(String[] args) { public static void main(String[] args) {
try { SpringApplicationBuilder builder = new SpringApplicationBuilder(IMDGApplication.class);
SpringApplicationBuilder builder = new SpringApplicationBuilder(IMDGApplication.class); ConfigurableApplicationContext configurableApplicationContext = builder.run(args);
ConfigurableApplicationContext configurableApplicationContext = builder.run(args);
//Поиск таблиц которым нужно добавить mapStore и вывод результата в консоль
List<String> nameTables = new ArrayList<>();
Connection jdbcConnection = DriverManager.getConnection("jdbc:postgresql://10.200.200.133:5432/postgres", "clearing", "Aa111111");
DatabaseMetaData md = jdbcConnection.getMetaData();
ResultSet rs = md.getTables(null, "clearing", "%", new String[]{"TABLE"});
while (rs.next()) {
nameTables.add(rs.getString(3));
}
HazelcastInstance hazelcastInstance = configurableApplicationContext.getBean(HazelcastInstance.class);
hazelcastInstance.getMap("");
for (String mapName : hazelcastInstance.getConfig().getMapConfigs().keySet()) {
MapStoreConfig mapStoreConfig = hazelcastInstance.getConfig().getMapConfig(mapName).getMapStoreConfig();
Object mapStore = mapStoreConfig.getImplementation();
String tableName;
if (mapStore instanceof TemplateMapStore) {
tableName = ((TemplateMapStore<?>) mapStore).getTableName();
} else if (mapStore instanceof DictionaryMapStore) {
tableName = ((DictionaryMapStore<?>) mapStore).getTableName();
} else if (mapStore instanceof TemplateEventMapStore) {
tableName = ((TemplateEventMapStore<?>) mapStore).getTableName();
} else if (mapStore instanceof BusinessObjectMapStore) {
tableName = ((BusinessObjectMapStore<?>) mapStore).getTableName();
} else if (mapName.equals("default")) {
continue;
} else {
System.out.println(mapStore == null ? "Не получилось сопоставить mapStore: is null" : "Не получилось сопоставить: " + mapStore.getClass() + " с таблицей");
continue;
}
nameTables.remove(tableName.toLowerCase());
}
System.out.println("** Результата поиска таблиц которым нужно добавить mapStore **");
nameTables.forEach(System.out::println);
System.out.println("**************************************************************");
} catch (Throwable e) {
LoggerFactory.getLogger(IMDGApplication.class).error("STORAGE start failed: {} -> {}", e.getClass().getSimpleName(), e.getMessage());
System.exit(-1);
}
} }
} }

View file

@ -27,14 +27,14 @@ public class AccountHistoryMapStore extends TemplateEventMapStore<AccountHistory
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{"ID","EVENT_TIME", "EVENT_USER_ID", return new String[]{"ID", "EVENT_TIME", "EVENT_USER_ID",
"ACCOUNT_ID", "CREATED_AT", "UPDATED_AT", "ACCOUNT", "ACCOUNT_TYPE", "RELATION_ID", "STATUS", "PROCESSING_SIGN" "ACCOUNT_ID", "CREATED_AT", "UPDATED_AT", "ACCOUNT", "ACCOUNT_TYPE", "RELATION_ID", "STATUS", "PROCESSING_SIGN"
}; };
} }
@Override @Override
public Object[] objectToField(AccountHistory updateLog) { public Object[] objectToField(AccountHistory updateLog) {
Account object=updateLog.getObject(); Account object = updateLog.getObject();
Object[] args = new Object[]{ Object[] args = new Object[]{
updateLog.getId(), updateLog.getId(),
updateLog.getEventTime(), updateLog.getEventTime(),
@ -46,7 +46,7 @@ public class AccountHistoryMapStore extends TemplateEventMapStore<AccountHistory
object.getAccount(), object.getAccount(),
object.getAccountType(), object.getAccountType(),
object.getRelationId(), object.getRelationId(),
object.getStatus(), object.getAccountStatus(),
object.getProcessingSign() object.getProcessingSign()
}; };
return args; return args;

View file

@ -37,7 +37,7 @@ public class UserConnectHistoryMapStore extends TemplateEventMapStore<UserConnec
UserConnect object = historyLog.getObject(); UserConnect object = historyLog.getObject();
Object[] args = new Object[]{ Object[] args = new Object[]{
historyLog.getId(), historyLog.getId(),
historyLog.getEventTime(), TimeUtil.toDateFromInstant(historyLog.getEventTime()),
historyLog.getUserId(), historyLog.getUserId(),
object.getId(), object.getId(),
@ -49,7 +49,7 @@ public class UserConnectHistoryMapStore extends TemplateEventMapStore<UserConnec
object.getServerIP(), object.getServerIP(),
object.getClientIP(), object.getClientIP(),
object.getConnectionState(), object.getConnectionState(),
TimeUtil.toDateFromInstant(object.getClearingDate()), TimeUtil.toDateFromLocalDate(object.getClearingDate()),
object.getErrorCode(), object.getErrorCode(),
object.getErrorText() object.getErrorText()
}; };

View file

@ -47,13 +47,13 @@ public class AccountBalanceMapStore extends TemplateMapStore<AccountBalance> {
object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT"));
object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
object.setAccountId(resultSet.getObject("ACCOUNT_ID", Long.class)); object.setAccountId(resultSet.getObject("ACCOUNT_ID", Long.class));
object.setAccountType(resultSet.getObject("ACCOUNT_TYPE", Long.class)); object.setAccountType(resultSet.getObject("ACCOUNT_TYPE", String.class));
object.setAccount(resultSet.getObject("ACCOUNT", String.class)); object.setAccount(resultSet.getObject("ACCOUNT", String.class));
object.setOpenBalanceAmount(resultSet.getObject("OPEN_BALANCE_AMOUNT", BigDecimal.class)); object.setOpenBalanceAmount(resultSet.getObject("OPEN_BALANCE_AMOUNT", BigDecimal.class));
object.setStartBalanceAmount(resultSet.getObject("START_BALANCE_AMOUNT", BigDecimal.class)); object.setStartBalanceAmount(resultSet.getObject("START_BALANCE_AMOUNT", BigDecimal.class));
object.setCloseBalanceAmount(resultSet.getObject("CLOSE_BALANCE_AMOUNT", BigDecimal.class)); object.setCloseBalanceAmount(resultSet.getObject("CLOSE_BALANCE_AMOUNT", BigDecimal.class));
object.setTradeBalanceAmount(resultSet.getObject("TRADE_BALANCE_AMOUNT", BigDecimal.class)); object.setTradeBalanceAmount(resultSet.getObject("TRADE_BALANCE_AMOUNT", BigDecimal.class));
object.setFreeBalanceAmount(resultSet.getObject("FREE_BALANCE_AMOU", BigDecimal.class)); object.setFreeBalanceAmount(resultSet.getObject("FREE_BALANCE_AMOUNT", BigDecimal.class));
object.setChangeBalanceAmount(resultSet.getObject("CHANGE_BALANCE_AMOUNT", BigDecimal.class)); object.setChangeBalanceAmount(resultSet.getObject("CHANGE_BALANCE_AMOUNT", BigDecimal.class));
object.setCreditAmount(resultSet.getObject("CREDIT_AMOUNT", BigDecimal.class)); object.setCreditAmount(resultSet.getObject("CREDIT_AMOUNT", BigDecimal.class));
object.setDebitAmount(resultSet.getObject("DEBIT_AMOUNT", BigDecimal.class)); object.setDebitAmount(resultSet.getObject("DEBIT_AMOUNT", BigDecimal.class));

View file

@ -30,7 +30,7 @@ public class AccountMapStore extends TemplateMapStore<Account> {
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{ return new String[]{
"ID", "CREATED_AT", "UPDATED_AT", "ACCOUNT", "ACCOUNT_TYPE", "RELATION_ID", "STATUS", "PROCESSING_SIGN" "ID", "CREATED_AT", "UPDATED_AT", "ACCOUNT", "ACCOUNT_TYPE", "RELATION_ID", "ACCOUNT_STATUS", "PROCESSING_SIGN"
}; };
} }
@ -43,7 +43,7 @@ public class AccountMapStore extends TemplateMapStore<Account> {
object.setAccount(resultSet.getObject("ACCOUNT", String.class)); object.setAccount(resultSet.getObject("ACCOUNT", String.class));
object.setAccountType(resultSet.getObject("ACCOUNT_TYPE", String.class)); object.setAccountType(resultSet.getObject("ACCOUNT_TYPE", String.class));
object.setRelationId(resultSet.getObject("RELATION_ID", Long.class)); object.setRelationId(resultSet.getObject("RELATION_ID", Long.class));
object.setStatus(resultSet.getObject("STATUS", String.class)); object.setAccountStatus(resultSet.getObject("ACCOUNT_STATUS", String.class));
object.setProcessingSign(resultSet.getObject("PROCESSING_SIGN", String.class)); object.setProcessingSign(resultSet.getObject("PROCESSING_SIGN", String.class));
return object; return object;
} }
@ -57,7 +57,7 @@ public class AccountMapStore extends TemplateMapStore<Account> {
object.getAccount(), object.getAccount(),
object.getAccountType(), object.getAccountType(),
object.getRelationId(), object.getRelationId(),
object.getStatus(), object.getAccountStatus(),
object.getProcessingSign() object.getProcessingSign()
}; };
return args; return args;

View file

@ -30,7 +30,7 @@ public class ErrorTextMapStore extends TemplateMapStore<ErrorText> {
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{ return new String[]{
"ID", "CREATED_AT", "UPDATED_AT", "ERROR_CODE", "TEXT", "USER_ID", "CLEARING_DATE" "ID", "CREATED_AT", "UPDATED_AT", "ERROR_CODE", "TEXT", "USER_ID", "CLEARING_DATE"
}; };
} }
@ -43,7 +43,7 @@ public class ErrorTextMapStore extends TemplateMapStore<ErrorText> {
object.setErrorCode(resultSet.getObject("ERROR_CODE", String.class)); object.setErrorCode(resultSet.getObject("ERROR_CODE", String.class));
object.setText(resultSet.getObject("TEXT", String.class)); object.setText(resultSet.getObject("TEXT", String.class));
object.setUserId(resultSet.getObject("USER_ID", Long.class)); object.setUserId(resultSet.getObject("USER_ID", Long.class));
object.setClearingDate(getInstantFromTimestamp(resultSet, "CLEARING_DATE")); object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE"));
return object; return object;
} }
@ -56,7 +56,7 @@ public class ErrorTextMapStore extends TemplateMapStore<ErrorText> {
object.getErrorCode(), object.getErrorCode(),
object.getText(), object.getText(),
object.getUserId(), object.getUserId(),
TimeUtil.toDateFromInstant(object.getClearingDate()) TimeUtil.toDateFromLocalDate(object.getClearingDate())
}; };
return args; return args;
} }

View file

@ -30,7 +30,7 @@ public class RelationMapStore extends TemplateMapStore<Relation> {
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{ return new String[]{
"ID", "CREATED_AT", "UPDATED_AT", "CONSUMER_ID", "SUPPLIER_ID", "SERVICE_STATUS", "SERVICE", "SERVICE_PRODUCT", "COMMENT" "ID", "CREATED_AT", "UPDATED_AT", "CONSUMER_ID", "SUPPLIER_ID", "SERVICE_STATUS", "SERVICE", "SERVICE_PRODUCT", "COMMENT"
}; };
} }
@ -38,14 +38,14 @@ public class RelationMapStore extends TemplateMapStore<Relation> {
public Relation objectReader(ResultSet resultSet) throws SQLException { public Relation objectReader(ResultSet resultSet) throws SQLException {
Relation object = new Relation(); Relation object = new Relation();
object.setId(resultSet.getObject("ID", Long.class)); object.setId(resultSet.getObject("ID", Long.class));
object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT"));
object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
object.setConsumerId(resultSet.getObject("CONSUMER_ID", Long.class)); object.setConsumerId(resultSet.getObject("CONSUMER_ID", Long.class));
object.setSupplierId(resultSet.getObject("SUPPLIER_ID", Long.class)); object.setSupplierId(resultSet.getObject("SUPPLIER_ID", Long.class));
object.setServiceStatus(resultSet.getObject("SERVICE_STATUS", String.class)); object.setServiceStatus(resultSet.getObject("SERVICE_STATUS", String.class));
object.setService(resultSet.getObject("SERVICE", Long.class)); object.setService(resultSet.getObject("SERVICE", String.class));
object.setServiceProduct(resultSet.getObject("SERVICE_PRODUCT", Long.class)); object.setServiceProduct(resultSet.getObject("SERVICE_PRODUCT", String.class));
object.setComment(resultSet.getObject("COMMENT", String.class)); object.setComment(resultSet.getObject("COMMENT", String.class));
return object; return object;
} }

View file

@ -41,8 +41,8 @@ public class SchedulerMapStore extends TemplateMapStore<Scheduler> {
object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT"));
object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
object.setTask(resultSet.getObject("TASK", String.class)); object.setTask(resultSet.getObject("TASK", String.class));
object.setTaskTime(getInstantFromTimestamp(resultSet, "TASK_TIME")); object.setTaskTime(getLocalTimeFromSqlTime(resultSet, "TASK_TIME"));
object.setClearingDate(getInstantFromTimestamp(resultSet, "CLEARING_DATE")); object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE"));
object.setMarket(resultSet.getObject("MARKET", String.class)); object.setMarket(resultSet.getObject("MARKET", String.class));
object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class)); object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class));
object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class)); object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class));
@ -56,8 +56,8 @@ public class SchedulerMapStore extends TemplateMapStore<Scheduler> {
TimeUtil.toDateFromInstant(object.getCreated()), TimeUtil.toDateFromInstant(object.getCreated()),
TimeUtil.toDateFromInstant(object.getUpdated()), TimeUtil.toDateFromInstant(object.getUpdated()),
object.getTask(), object.getTask(),
TimeUtil.toDateFromInstant(object.getTaskTime()), TimeUtil.toDateFromLocalTime(object.getTaskTime()),
TimeUtil.toDateFromInstant(object.getClearingDate()), TimeUtil.toDateFromLocalDate(object.getClearingDate()),
object.getMarket(), object.getMarket(),
object.getTaskStatus(), object.getTaskStatus(),
object.getSecurityId() object.getSecurityId()

View file

@ -31,7 +31,7 @@ public class StatementMapStore extends TemplateMapStore<Statement> {
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{ return new String[]{
"ID", "ADDRESSEE_ID", "SENDER_ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "STATEMENT_TYPE_ID", "COMMENT", "ACCOUNT_ID", "ACCOUNT", "IN_OUT_DIRECTION", "SETTLEMENT_DATE", "AMOUNT", "CASH_MOVEMENT_CURRENCY_CODE", "STATUS", "ERROR_CODE", "ERROR_TEXT", "IN_S_DF_ID", "OUT_S_DF_ID", "IN_OUT_S_DF_TYPE" "ID", "ADDRESSEE_ID", "SENDER_ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "STATEMENT_TYPE", "COMMENT", "ACCOUNT_ID", "ACCOUNT", "IN_OUT_DIRECTION", "SETTLEMENT_DATE", "AMOUNT", "CASH_MOVEMENT_CURRENCY_CODE", "OPERATION_STATUS", "ERROR_CODE", "ERROR_TEXT", "IN_S_DF_ID", "OUT_S_DF_ID", "IN_OUT_S_DF_TYPE"
}; };
} }
@ -43,16 +43,16 @@ public class StatementMapStore extends TemplateMapStore<Statement> {
object.setSenderId(resultSet.getObject("SENDER_ID", Long.class)); object.setSenderId(resultSet.getObject("SENDER_ID", Long.class));
object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT"));
object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
object.setClearingDate(getInstantFromTimestamp(resultSet, "CLEARING_DATE")); object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE"));
object.setStatementTypeId(resultSet.getObject("STATEMENT_TYPE_ID", Long.class)); object.setStatementType(resultSet.getObject("STATEMENT_TYPE", String.class));
object.setComment(resultSet.getObject("COMMENT", String.class)); object.setComment(resultSet.getObject("COMMENT", String.class));
object.setAccountId(resultSet.getObject("ACCOUNT_ID", Long.class)); object.setAccountId(resultSet.getObject("ACCOUNT_ID", Long.class));
object.setAccount(resultSet.getObject("ACCOUNT", Long.class)); object.setAccount(resultSet.getObject("ACCOUNT", String.class));
object.setInOutDirection(resultSet.getObject("IN_OUT_DIRECTION", Long.class)); object.setInOutDirection(resultSet.getObject("IN_OUT_DIRECTION", String.class));
object.setSettlementDate(getInstantFromTimestamp(resultSet, "SETTLEMENT_DATE")); object.setSettlementDate(getLocalDateFromSqlDate(resultSet, "SETTLEMENT_DATE"));
object.setAmount(resultSet.getObject("AMOUNT", BigDecimal.class)); object.setAmount(resultSet.getObject("AMOUNT", BigDecimal.class));
object.setCashMovementCurrencyCode(resultSet.getObject("CASH_MOVEMENT_CURRENCY_CODE", String.class)); object.setCashMovementCurrencyCode(resultSet.getObject("CASH_MOVEMENT_CURRENCY_CODE", String.class));
object.setStatus(resultSet.getObject("STATUS", String.class)); object.setOperationStatus(resultSet.getObject("OPERATION_STATUS", String.class));
object.setErrorCode(resultSet.getObject("ERROR_CODE", String.class)); object.setErrorCode(resultSet.getObject("ERROR_CODE", String.class));
object.setErrorText(resultSet.getObject("ERROR_TEXT", String.class)); object.setErrorText(resultSet.getObject("ERROR_TEXT", String.class));
object.setInSDfId(resultSet.getObject("IN_S_DF_ID", Long.class)); object.setInSDfId(resultSet.getObject("IN_S_DF_ID", Long.class));
@ -69,16 +69,16 @@ public class StatementMapStore extends TemplateMapStore<Statement> {
object.getSenderId(), object.getSenderId(),
TimeUtil.toDateFromInstant(object.getCreated()), TimeUtil.toDateFromInstant(object.getCreated()),
TimeUtil.toDateFromInstant(object.getUpdated()), TimeUtil.toDateFromInstant(object.getUpdated()),
TimeUtil.toDateFromInstant(object.getClearingDate()), TimeUtil.toDateFromLocalDate(object.getClearingDate()),
object.getStatementTypeId(), object.getStatementType(),
object.getComment(), object.getComment(),
object.getAccountId(), object.getAccountId(),
object.getAccount(), object.getAccount(),
object.getInOutDirection(), object.getInOutDirection(),
TimeUtil.toDateFromInstant(object.getSettlementDate()), TimeUtil.toDateFromLocalDate(object.getSettlementDate()),
object.getAmount(), object.getAmount(),
object.getCashMovementCurrencyCode(), object.getCashMovementCurrencyCode(),
object.getStatus(), object.getOperationStatus(),
object.getErrorCode(), object.getErrorCode(),
object.getErrorText(), object.getErrorText(),
object.getInSDfId(), object.getInSDfId(),

View file

@ -41,7 +41,7 @@ public class TimetableMapStore extends TemplateMapStore<Timetable> {
object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT"));
object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
object.setTask(resultSet.getObject("TASK", String.class)); object.setTask(resultSet.getObject("TASK", String.class));
object.setTaskTime(getInstantFromTimestamp(resultSet, "TASK_TIME")); object.setTaskTime(getLocalTimeFromSqlTime(resultSet, "TASK_TIME"));
object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class)); object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class));
return object; return object;
} }
@ -53,7 +53,7 @@ public class TimetableMapStore extends TemplateMapStore<Timetable> {
TimeUtil.toDateFromInstant(object.getCreated()), TimeUtil.toDateFromInstant(object.getCreated()),
TimeUtil.toDateFromInstant(object.getUpdated()), TimeUtil.toDateFromInstant(object.getUpdated()),
object.getTask(), object.getTask(),
TimeUtil.toDateFromInstant(object.getTaskTime()), TimeUtil.toDateFromLocalTime(object.getTaskTime()),
object.getTaskStatus() object.getTaskStatus()
}; };
return args; return args;

View file

@ -30,7 +30,7 @@ public class TradingCalendarMapStore extends TemplateMapStore<TradingCalendar> {
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{ return new String[]{
"ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "COMPANY_ID", "TRADING_STATUS" "ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "COMPANY_ID", "TRADING_STATUS"
}; };
} }
@ -40,7 +40,7 @@ public class TradingCalendarMapStore extends TemplateMapStore<TradingCalendar> {
object.setId(resultSet.getObject("ID", Long.class)); object.setId(resultSet.getObject("ID", Long.class));
object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT"));
object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
object.setClearingDate(getInstantFromTimestamp(resultSet, "CLEARING_DATE")); object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE"));
object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class)); object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class));
object.setTradingStatus(resultSet.getObject("TRADING_STATUS", String.class)); object.setTradingStatus(resultSet.getObject("TRADING_STATUS", String.class));
return object; return object;
@ -52,7 +52,7 @@ public class TradingCalendarMapStore extends TemplateMapStore<TradingCalendar> {
object.getId(), object.getId(),
TimeUtil.toDateFromInstant(object.getCreated()), TimeUtil.toDateFromInstant(object.getCreated()),
TimeUtil.toDateFromInstant(object.getUpdated()), TimeUtil.toDateFromInstant(object.getUpdated()),
TimeUtil.toDateFromInstant(object.getClearingDate()), TimeUtil.toDateFromLocalDate(object.getClearingDate()),
object.getCompanyId(), object.getCompanyId(),
object.getTradingStatus() object.getTradingStatus()
}; };

View file

@ -46,8 +46,8 @@ public class UserConnectMapStore extends TemplateMapStore<UserConnect> {
object.setServerIP(resultSet.getObject("SERVER_I_P", String.class)); object.setServerIP(resultSet.getObject("SERVER_I_P", String.class));
object.setClientIP(resultSet.getObject("CLIENT_I_P", String.class)); object.setClientIP(resultSet.getObject("CLIENT_I_P", String.class));
object.setConnectionState(resultSet.getObject("CONNECTION_STATE", String.class)); object.setConnectionState(resultSet.getObject("CONNECTION_STATE", String.class));
object.setClearingDate(getInstantFromTimestamp(resultSet, "CLEARING_DATE")); object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE"));
object.setErrorCode(resultSet.getObject("ERROR_CODE", String.class)); object.setErrorCode(resultSet.getObject("ERROR_CODE", Long.class));
object.setErrorText(resultSet.getObject("ERROR_TEXT", String.class)); object.setErrorText(resultSet.getObject("ERROR_TEXT", String.class));
return object; return object;
} }
@ -64,7 +64,7 @@ public class UserConnectMapStore extends TemplateMapStore<UserConnect> {
object.getServerIP(), object.getServerIP(),
object.getClientIP(), object.getClientIP(),
object.getConnectionState(), object.getConnectionState(),
TimeUtil.toDateFromInstant(object.getClearingDate()), TimeUtil.toDateFromLocalDate(object.getClearingDate()),
object.getErrorCode(), object.getErrorCode(),
object.getErrorText() object.getErrorText()
}; };

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,7 @@
package ru.spcex.clearing.imdg; package ru.spcex.clearing.imdg;
import com.hazelcast.config.MapStoreConfig; import com.hazelcast.config.MapStoreConfig;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap; import com.hazelcast.core.IMap;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.Assumptions;
@ -26,6 +27,8 @@ import ru.spcex.platform.classes.base.SpcexObjectBase;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import static ru.spcex.clearing.imdg.structure.GeneratorMapNamesForHazelcast.objectForCheckMapStores; import static ru.spcex.clearing.imdg.structure.GeneratorMapNamesForHazelcast.objectForCheckMapStores;
@ -59,6 +62,50 @@ public class AllMapStoreTest {
} }
} }
@Test
public void checkAllMapStoreCreatedTest() throws SQLException {
//Поиск таблиц которым нужно добавить mapStore и вывод результата в консоль
List<String> nameTables = new ArrayList<>();
Connection jdbcConnection = DriverManager.getConnection("jdbc:postgresql://10.200.200.133:5432/postgres", "clearing", "Aa111111");
DatabaseMetaData md = jdbcConnection.getMetaData();
ResultSet rs = md.getTables(null, "clearing_tester", "%", new String[]{"TABLE"});
while (rs.next()) {
String tableName = rs.getString("TABLE_NAME");
//сущности для company_info и company_info_history включены соответсвенно в company и company_history
if (tableName.equals("company_info") || tableName.equals("company_info_history")) {
continue;
}
nameTables.add(tableName);
}
HazelcastInstance hazelcastInstance = testConfig.getHazelcastInstance();
hazelcastInstance.getMap("");
for (String mapName : hazelcastInstance.getConfig().getMapConfigs().keySet()) {
MapStoreConfig mapStoreConfig = hazelcastInstance.getConfig().getMapConfig(mapName).getMapStoreConfig();
Object mapStore = mapStoreConfig.getImplementation();
String tableName;
if (mapStore instanceof TemplateMapStore) {
tableName = ((TemplateMapStore<?>) mapStore).getTableName();
} else if (mapStore instanceof DictionaryMapStore) {
tableName = ((DictionaryMapStore<?>) mapStore).getTableName();
} else if (mapStore instanceof TemplateEventMapStore) {
tableName = ((TemplateEventMapStore<?>) mapStore).getTableName();
} else if (mapStore instanceof BusinessObjectMapStore) {
tableName = ((BusinessObjectMapStore<?>) mapStore).getTableName();
} else if (mapName.equals("default")) {
continue;
} else {
System.out.println(mapStore == null ? "Не получилось сопоставить mapStore: is null" : "Не получилось сопоставить: " + mapStore.getClass() + " с таблицей");
continue;
}
nameTables.remove(tableName.toLowerCase());
}
System.out.println("** Результата поиска таблиц которым нужно добавить mapStore **");
nameTables.forEach(System.out::println);
System.out.println("**************************************************************");
Assertions.assertEquals(0, nameTables.size());
}
@Test @Test
public void checkSavingForAllMapStoreTest() { public void checkSavingForAllMapStoreTest() {
saveObjectToMaps(); saveObjectToMaps();

View file

@ -5,7 +5,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.init.DatabasePopulator;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import ru.spcex.clearing.imdg.error.ModuleInitializeException; import ru.spcex.clearing.imdg.error.ModuleInitializeException;
import javax.sql.DataSource; import javax.sql.DataSource;
@ -16,7 +19,14 @@ import java.sql.Connection;
public class DbTestConnectionConfig { public class DbTestConnectionConfig {
private final Logger log = LoggerFactory.getLogger(this.getClass()); private final Logger log = LoggerFactory.getLogger(this.getClass());
private ConfigurationRootElement configRoot = DfaConfig.get().getRoot(); private final ConfigurationRootElement configRoot = DfaConfig.get().getRoot();
private DatabasePopulator createDatabasePopulator() {
ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
databasePopulator.setContinueOnError(true);
databasePopulator.addScript(new ClassPathResource("/ddl.sql"));
return databasePopulator;
}
@Bean @Bean
public DataSource dataSource() { public DataSource dataSource() {
@ -24,7 +34,7 @@ public class DbTestConnectionConfig {
String login = "clearing"; String login = "clearing";
String password = "Aa111111"; String password = "Aa111111";
String logTimeoutPart = ""; String logTimeoutPart = "";
String dbPath = "jdbc:postgresql://10.200.200.133:5432/postgres"; String dbPath = "jdbc:postgresql://10.200.200.133:5432/postgres?currentSchema=clearing_tester";
int timeoutSec = configRoot.getDatabase().getConnectionAcquireTimeoutSeconds(); int timeoutSec = configRoot.getDatabase().getConnectionAcquireTimeoutSeconds();
ComboPooledDataSource cpds = new ComboPooledDataSource(); ComboPooledDataSource cpds = new ComboPooledDataSource();
@ -42,6 +52,7 @@ public class DbTestConnectionConfig {
cpds.setNumHelperThreads(configRoot.getDatabase().getNumHelperThreads()); cpds.setNumHelperThreads(configRoot.getDatabase().getNumHelperThreads());
cpds.setCheckoutTimeout(timeoutSec * 1000/*todo common 1000==ConstsCommon.SECOND*/); cpds.setCheckoutTimeout(timeoutSec * 1000/*todo common 1000==ConstsCommon.SECOND*/);
logTimeoutPart = String.format(" (timeout=%ds)", timeoutSec); logTimeoutPart = String.format(" (timeout=%ds)", timeoutSec);
// DatabasePopulatorUtils.execute(createDatabasePopulator(), cpds);
result = cpds; result = cpds;
String OPERATION_DATABASE_CONNECTION_CHECK = String.format("Database [%s] connection check", dbPath); String OPERATION_DATABASE_CONNECTION_CHECK = String.format("Database [%s] connection check", dbPath);

View file

@ -1,8 +1,22 @@
package ru.spcex.clearing.imdg.structure; package ru.spcex.clearing.imdg.structure;
import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.account.AccountBalance;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.relation.Relation;
import ru.clearing.classes.statics.data.messages.ErrorText;
import ru.clearing.classes.statics.data.scheduler.Scheduler;
import ru.clearing.classes.statics.data.scheduler.TaskRunner;
import ru.clearing.classes.statics.data.scheduler.Timetable;
import ru.clearing.classes.statics.data.scheduler.TradingCalendar;
import ru.clearing.classes.statics.data.security.Security;
import ru.clearing.classes.statics.data.statement.Statement;
import ru.clearing.classes.statics.data.user.User;
import ru.clearing.classes.statics.data.user.UserConnect;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.structure.ObjectForCheckMapStore.SettingOperation;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
public class GeneratorMapNamesForHazelcast { public class GeneratorMapNamesForHazelcast {
@ -17,7 +31,22 @@ public class GeneratorMapNamesForHazelcast {
private static void init() { private static void init() {
objectForCheckMapStores = new LinkedList<>(); objectForCheckMapStores = new LinkedList<>();
//businessobject
objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_Account, Account.class)); objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_Account, Account.class));
objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class));
objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_Company, Company.class));
objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_ErrorText, ErrorText.class));
objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_Relation, Relation.class));
objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_Scheduler, Scheduler.class));
objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_Security, Security.class));
objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_Statement, Statement.class,
new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("23.22")})));
objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_TaskRunner, TaskRunner.class));
objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_Timetable, Timetable.class));
objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_TradingCalendar, TradingCalendar.class));
objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_UserConnect, UserConnect.class));
objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_User, User.class));
// objectForCheckMapStores.add(new ObjectForCheckMapStore<>(IMDGDistributedNames.Map_UserConnectHistory, UserConnectHistory.class));
} }
public static Map<String, Class> createClassByMapStoreName() { public static Map<String, Class> createClassByMapStoreName() {

View file

@ -4,6 +4,9 @@ package ru.spcex.clearing.imdg.structure;
import ru.spcex.clearing.imdg.utils.MatcherFactory.Matcher; import ru.spcex.clearing.imdg.utils.MatcherFactory.Matcher;
import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.classes.base.SpcexObjectBase;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import static ru.spcex.clearing.imdg.utils.MatcherFactory.usingIgnoringFieldsComparator; import static ru.spcex.clearing.imdg.utils.MatcherFactory.usingIgnoringFieldsComparator;
public class ObjectForCheckMapStore<T> { public class ObjectForCheckMapStore<T> {
@ -11,6 +14,7 @@ public class ObjectForCheckMapStore<T> {
public final Matcher<T> MATCHER = usingIgnoringFieldsComparator(); public final Matcher<T> MATCHER = usingIgnoringFieldsComparator();
private final String mapName; private final String mapName;
private final Class<T> clazz; private final Class<T> clazz;
private SettingOperation settingOperation;
private SpcexObjectBase predictableObj; private SpcexObjectBase predictableObj;
@ -19,6 +23,12 @@ public class ObjectForCheckMapStore<T> {
this.clazz = clazz; this.clazz = clazz;
} }
public ObjectForCheckMapStore(String mapName, Class<T> clazz, SettingOperation settingOperation) {
this.mapName = mapName;
this.clazz = clazz;
this.settingOperation = settingOperation;
}
public String getMapName() { public String getMapName() {
return mapName; return mapName;
} }
@ -35,7 +45,35 @@ public class ObjectForCheckMapStore<T> {
return predictableObj; return predictableObj;
} }
public void setPredictableObj(SpcexObjectBase predictableObj) { public void setPredictableObj(SpcexObjectBase predictableObj) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
if (settingOperation != null) {
Method method = clazz.getDeclaredMethod(settingOperation.getMethodName(), settingOperation.getParameterTypes());
method.invoke(predictableObj, settingOperation.getParams());
}
this.predictableObj = predictableObj; this.predictableObj = predictableObj;
} }
public static class SettingOperation {
private static String methodName;
private static Class[] parameterTypes;
private static Object[] params;
public SettingOperation(String methodName, Class[] parameterTypes, Object[] params) {
SettingOperation.methodName = methodName;
SettingOperation.parameterTypes = parameterTypes;
SettingOperation.params = params;
}
public String getMethodName() {
return methodName;
}
public Class[] getParameterTypes() {
return parameterTypes;
}
public Object[] getParams() {
return params;
}
}
} }

View file

@ -8,12 +8,14 @@ import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalTime;
import java.util.*; import java.util.*;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -196,11 +198,13 @@ public final class DbDataUtils {
} else if (typeField.equals(Integer.TYPE) || typeField.equals(Integer.class)) { } else if (typeField.equals(Integer.TYPE) || typeField.equals(Integer.class)) {
field.set(object, 0); field.set(object, 0);
} else if (typeField.getName().equals(BigDecimal.class.getName())) { } else if (typeField.getName().equals(BigDecimal.class.getName())) {
field.set(object, BigDecimal.valueOf(23.22)); field.set(object, new BigDecimal("23.220000000000000000"));
} else if (typeField.equals(Long.TYPE) || typeField.equals(Long.class)) { } else if (typeField.equals(Long.TYPE) || typeField.equals(Long.class)) {
field.set(object, 0L); field.set(object, 1000000L);
} else if (typeField.equals(LocalDate.class)) { } else if (typeField.equals(LocalDate.class)) {
field.set(object, LocalDate.of(2017, 11, 11)); field.set(object, LocalDate.of(2022, 10, 7));
} else if (typeField.equals(LocalTime.class)) {
field.set(object, LocalTime.of(19, 0));
} else if (typeField.getName().equals(Date.class.getName())) { } else if (typeField.getName().equals(Date.class.getName())) {
field.set(object, new Date()); field.set(object, new Date());
} else if (typeField.getName().equals(Boolean.class.getName())) { } else if (typeField.getName().equals(Boolean.class.getName())) {
@ -209,36 +213,23 @@ public final class DbDataUtils {
field.set(object, UUID.randomUUID()); field.set(object, UUID.randomUUID());
} else if (typeField.getName().equals(Instant.class.getName())) { } else if (typeField.getName().equals(Instant.class.getName())) {
field.set(object, Instant.parse("2022-10-05T15:39:18.659Z")); field.set(object, Instant.parse("2022-10-05T15:39:18.659Z"));
// } else if (typeField.getSimpleName().equals(BusinessObjectRef.class.getSimpleName())) { // } else if (typeField.getSimpleName().equals(CompanyInfo.class.getSimpleName())) {
// field.set(object, BusinessObjectRef.createFromId(0L, BusinessObject.class)); // CompanyInfo companyInfo = new CompanyInfo();
// } else if (typeField.getName().equals(Set.class.getName())) { // fillObjectDefaultValues(companyInfo, CompanyInfo.class);
// Set<BusinessObjectRef> hashSet = new HashSet<>(); // field.set(object, companyInfo);
// hashSet.add(BusinessObjectRef.createFromId(0L, BusinessObject.class)); // } else if (typeField.getSuperclass().getName().equals(SpcexObjectBase.class.getName())) {
// field.set(object, hashSet); // Object objectField = typeField.getDeclaredConstructor().newInstance();
// } else if (typeField.getName().equals(Instant.class.getName())) { // DbDataUtils.fillObjectDefaultValues(objectField, objectField.getClass());
// field.set(object, Instant.now()); // field.set(object, objectField);
// } else if (typeField.getName().equals(Party.class.getName())) {
// Party party = new Party();
// fillObjectDefaultValues(party, party.getClass());
// field.set(object, party);
// } else if (typeField.getName().equals(LegalEntityProfile.class.getName())) {
// LegalEntityProfile legalEntityProfile = new LegalEntityProfile();
// fillObjectDefaultValues(legalEntityProfile, legalEntityProfile.getClass());
// legalEntityProfile.setId(1L);
// field.set(object, legalEntityProfile);
} else { } else {
if (Collection.class.isAssignableFrom(field.getType())) { Object objectField = typeField.getDeclaredConstructor().newInstance();
// ignore List, Set, etc. fillObjectDefaultValues(objectField, objectField.getClass());
log.debug("Any collection variable skipped: {}", field.getName()); field.set(object, objectField);
} else if (typeField.getName().equalsIgnoreCase("[Z") && field.getName().equalsIgnoreCase("$jacocoData")) { // Массив объектов в переменной $jacocoData
log.debug("Jacoco debug variable skipped: {}", field.getName());
} else {
log.error("Для данного поля (в объекте " + object.getClass().getName() + "->" + field.getName() + ") значение по умолчению не может быть определенно для типа: " + typeField.getName());
throw new RuntimeException();
}
} }
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
log.info(e.getMessage()); log.info(e.getMessage());
} catch (InvocationTargetException | InstantiationException | NoSuchMethodException e) {
throw new RuntimeException(e);
} }
} }