extdb-importer http://jira.mfd.msk:8088/browse/CLS-821
This commit is contained in:
parent
73d3250ce0
commit
1835673dd4
4 changed files with 58 additions and 10 deletions
|
|
@ -43,6 +43,10 @@
|
|||
<groupId>com.microsoft.sqlserver</groupId>
|
||||
<artifactId>mssql-jdbc</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.mchange</groupId>
|
||||
<artifactId>c3p0</artifactId>
|
||||
|
|
|
|||
|
|
@ -73,13 +73,14 @@ public class ExtDBImporterService {
|
|||
log.warn("maxDate={} too high, set current date", maxDate);
|
||||
maxDate = LocalDate.now();
|
||||
}
|
||||
return String.format("SELECT * FROM %s.crossRate where date>='%s'",
|
||||
return String.format("SELECT * FROM \"%s\".\"Crossrate\" where \"Date\">='%s'",
|
||||
schema, maxDate);
|
||||
}
|
||||
|
||||
public synchronized void process(boolean byCommand) {
|
||||
log.debug("Start process import SCrossRate from DB. byCommand={}", byCommand);
|
||||
String sql = createSelectSQL();
|
||||
log.debug("Select SQL: {}", sql);
|
||||
Collection<SCrossRate> crossRatesFromDB = jdbcTemplate.query(sql,
|
||||
(resultSet, i) -> readSCrossRate(resultSet));
|
||||
Instant currentInstant = Instant.now();
|
||||
|
|
@ -162,12 +163,50 @@ public class ExtDBImporterService {
|
|||
|| StringUtils.hasText(crossRate.getCurrency()));
|
||||
}
|
||||
|
||||
protected BigDecimal safeReadAsBigDecimal(ResultSet rs, String column) throws SQLException {
|
||||
int columnType = rs.getMetaData().getColumnType(rs.findColumn(column));
|
||||
switch (columnType) {
|
||||
case java.sql.Types.NUMERIC:
|
||||
return rs.getBigDecimal(column);
|
||||
case java.sql.Types.INTEGER:
|
||||
int i = rs.getInt(column);
|
||||
if (rs.wasNull())
|
||||
return null;
|
||||
return BigDecimal.valueOf(i);
|
||||
case java.sql.Types.BIGINT:
|
||||
long l = rs.getLong(column);
|
||||
if (rs.wasNull())
|
||||
return null;
|
||||
return BigDecimal.valueOf(l);
|
||||
default:
|
||||
return rs.getBigDecimal(column); // try by JDBC convert
|
||||
}
|
||||
}
|
||||
|
||||
protected String safeReadAsString(ResultSet rs, String column) throws SQLException {
|
||||
int columnType = rs.getMetaData().getColumnType(rs.findColumn(column));
|
||||
switch (columnType) {
|
||||
case java.sql.Types.INTEGER:
|
||||
int i = rs.getInt(column);
|
||||
if (rs.wasNull())
|
||||
return null;
|
||||
return String.valueOf(i);
|
||||
case java.sql.Types.BIGINT:
|
||||
long l = rs.getLong(column);
|
||||
if (rs.wasNull())
|
||||
return null;
|
||||
return String.valueOf(l);
|
||||
default:
|
||||
return rs.getString(column);
|
||||
}
|
||||
}
|
||||
|
||||
public SCrossRate readSCrossRate(ResultSet resultSet) throws SQLException {
|
||||
SCrossRate object = new SCrossRate();
|
||||
object.setDate(getLocalDateFromSqlDate(resultSet, "DATE"));
|
||||
object.setCurrency(resultSet.getObject("CURRENCY", String.class));
|
||||
object.setCurrCode(resultSet.getObject("CURRCODE", String.class));
|
||||
object.setFaceValue(resultSet.getObject("FACEVALUE", BigDecimal.class));
|
||||
object.setCurrCode(safeReadAsString(resultSet,"CURRCODE"));
|
||||
object.setFaceValue(safeReadAsBigDecimal(resultSet, "FACEVALUE"));
|
||||
object.setRate(resultSet.getObject("RATE", BigDecimal.class));
|
||||
object.setUnitRate(resultSet.getObject("UNITRATE", BigDecimal.class));
|
||||
return object;
|
||||
|
|
|
|||
|
|
@ -3,11 +3,16 @@ spring.main.web-application-type=none
|
|||
#extdb-importer.cron.load-from-db-cron=0 0/5 * * * ? - каждые 5 минут
|
||||
extdb-importer.cron.load-from-db-cron=0 0/5 * * * ?
|
||||
|
||||
extdb-importer.database.login=CR_user
|
||||
extdb-importer.database.password=Crossrate
|
||||
extdb-importer.database.schema=dbo
|
||||
extdb-importer.database.url=jdbc:sqlserver://10.200.200.144:1433;database=CBRInfo;
|
||||
extdb-importer.database.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
|
||||
#extdb-importer.database.login=CR_user
|
||||
#extdb-importer.database.password=Crossrate
|
||||
#extdb-importer.database.schema=dbo
|
||||
#extdb-importer.database.url=jdbc:sqlserver://10.200.200.144:1433;database=CBRInfo;
|
||||
#extdb-importer.database.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
|
||||
extdb-importer.database.login=clearing
|
||||
extdb-importer.database.password=Aa111111
|
||||
extdb-importer.database.schema=CBRInfo
|
||||
extdb-importer.database.url=jdbc:postgresql://10.200.200.133:5432/clearing?currentSchema=CBRInfo
|
||||
extdb-importer.database.driver=org.postgresql.Driver
|
||||
|
||||
extdb-importer.hazelcast.cluster-members=127.0.0.1:5701
|
||||
extdb-importer.hazelcast.login=dev
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ class ExtDBImporterServiceTest extends AbstractServiceTest {
|
|||
void createSelectSQL() {
|
||||
((ImdgHazelcast) sCrossRateImdg).clear();
|
||||
String sql = extDBImporterService.createSelectSQL();
|
||||
assertEquals("SELECT * FROM dbo.crossRate where date>='2024-01-01'", sql);
|
||||
assertEquals("SELECT * FROM \"CBRInfo\".\"Crossrate\" where \"Date\">='2024-01-01'", sql);
|
||||
|
||||
{
|
||||
SCrossRate sCrossRate = getSCrossRate();
|
||||
|
|
@ -118,7 +118,7 @@ class ExtDBImporterServiceTest extends AbstractServiceTest {
|
|||
Long id = sCrossRateImdg.insert(sCrossRate);
|
||||
}
|
||||
sql = extDBImporterService.createSelectSQL();
|
||||
assertEquals("SELECT * FROM dbo.crossRate where date>='2024-02-13'", sql);
|
||||
assertEquals("SELECT * FROM \"CBRInfo\".\"Crossrate\" where \"Date\">='2024-02-13'", sql);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue