diff --git a/build.gradle b/build.gradle index 5d22656..03c73f8 100644 --- a/build.gradle +++ b/build.gradle @@ -21,6 +21,9 @@ configurations { repositories { mavenCentral() + maven {url 'https://maven.google.com'} + maven {url 'https://maven.cubrid.org/'} + maven {url 'https://maven.jumpmind.com/repo/'} } dependencies { @@ -49,6 +52,11 @@ dependencies { implementation group: 'com.microsoft.sqlserver', name: 'mssql-jdbc', version: '12.8.0.jre11' // https://mvnrepository.com/artifact/org.postgresql/postgresql implementation group: 'org.postgresql', name: 'postgresql', version: '42.7.3' + // https://mvnrepository.com/artifact/cubrid/cubrid-jdbc + implementation group: 'cubrid', name: 'cubrid-jdbc', version: '11.2.1.0038' + // https://mvnrepository.com/artifact/jdbc.tibero/tibero + //implementation files('libs/tibero6-jdbc-14.jar') + implementation files('libs/tibero-6.jar') } diff --git a/libs/tibero-6.jar b/libs/tibero-6.jar new file mode 100644 index 0000000..d5d1af5 Binary files /dev/null and b/libs/tibero-6.jar differ diff --git a/libs/tibero6-jdbc-14.jar b/libs/tibero6-jdbc-14.jar new file mode 100644 index 0000000..c7baf3d Binary files /dev/null and b/libs/tibero6-jdbc-14.jar differ diff --git a/src/main/java/com/munjaon/client/cubrid/mapper/CubridMapper.java b/src/main/java/com/munjaon/client/cubrid/mapper/CubridMapper.java new file mode 100644 index 0000000..ef0b644 --- /dev/null +++ b/src/main/java/com/munjaon/client/cubrid/mapper/CubridMapper.java @@ -0,0 +1,21 @@ +package com.munjaon.client.cubrid.mapper; + +import com.munjaon.client.model.MunjaonMsg; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface CubridMapper { + String checkTime(); + int checkTableForMessage(); + int checkTableForLog(); + List selectToDeliver(String msgType); + int updateToDeliver(String msgId); + int updateDeliverForList(List msgIdList); + int updateToReport(MunjaonMsg params); + List selectToMove(); + List selectToExpire(String expireTime); + int insertToLog(String msgId); + int deleteFromDeliver(String msgId); +} diff --git a/src/main/java/com/munjaon/client/cubrid/service/CubridService.java b/src/main/java/com/munjaon/client/cubrid/service/CubridService.java new file mode 100644 index 0000000..d12ec85 --- /dev/null +++ b/src/main/java/com/munjaon/client/cubrid/service/CubridService.java @@ -0,0 +1,69 @@ +package com.munjaon.client.cubrid.service; + +import com.munjaon.client.cubrid.mapper.CubridMapper; +import com.munjaon.client.model.MunjaonMsg; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Slf4j +@Service +@RequiredArgsConstructor +public class CubridService { + private final CubridMapper deliverBMapper; + + public boolean checkTableExists() { + boolean isExist = false; + try { + int msgCount = deliverBMapper.checkTableForMessage(); + int logCount = deliverBMapper.checkTableForLog(); + if (msgCount >= 0 && logCount >= 0) { + isExist = true; + } + } catch (Exception e) { + log.error("Check table exists error : {}", e); + } + + return isExist; + } + public List selectToDeliver(String msgType) { + return deliverBMapper.selectToDeliver(msgType); + } + public int updateToDeliver(String msgId) { + return deliverBMapper.updateToDeliver(msgId); + } + public int updateDeliverForList(List msgIdList) { + return deliverBMapper.updateDeliverForList(msgIdList); + } + public int updateToReport(MunjaonMsg params) { + return deliverBMapper.updateToReport(params); + } + public List selectToMove() { + return deliverBMapper.selectToMove(); + } + public List selectToExpire(String expireTime) { + return deliverBMapper.selectToExpire(expireTime); + } + public int insertToLog(String msgId) { + return deliverBMapper.insertToLog(msgId); + } + public int deleteFromDeliver(String msgId) { + return deliverBMapper.deleteFromDeliver(msgId); + } + + @Transactional + public void moveToDeliver() { + List list = selectToMove(); + if (list == null || list.size() == 0) { + return; + } + log.debug("[CLASS : {} : MOVE_COUNT : {}", this.getClass(), list.size()); + for (MunjaonMsg msg : list) { + insertToLog(msg.getMsgId()); + deleteFromDeliver(msg.getMsgId()); + } + } +} diff --git a/src/main/java/com/munjaon/client/mariadb/mapper/MariaDBMapper.java b/src/main/java/com/munjaon/client/mariadb/mapper/MariaDBMapper.java index 0833913..45f7317 100644 --- a/src/main/java/com/munjaon/client/mariadb/mapper/MariaDBMapper.java +++ b/src/main/java/com/munjaon/client/mariadb/mapper/MariaDBMapper.java @@ -12,6 +12,7 @@ public interface MariaDBMapper { int checkTableForLog(); List selectToDeliver(String msgType); int updateToDeliver(String msgId); + int updateDeliverForList(List msgIdList); int updateToReport(MunjaonMsg params); List selectToMove(); List selectToExpire(String expireTime); diff --git a/src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java b/src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java index a8f62ea..23fdd05 100644 --- a/src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java +++ b/src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java @@ -35,6 +35,9 @@ public class MariaDBService { public int updateToDeliver(String msgId) { return deliverBMapper.updateToDeliver(msgId); } + public int updateDeliverForList(List msgIdList) { + return deliverBMapper.updateDeliverForList(msgIdList); + } public int updateToReport(MunjaonMsg params) { return deliverBMapper.updateToReport(params); } diff --git a/src/main/java/com/munjaon/client/mssql/mapper/MssqlMapper.java b/src/main/java/com/munjaon/client/mssql/mapper/MssqlMapper.java index cc8406c..8dac18d 100644 --- a/src/main/java/com/munjaon/client/mssql/mapper/MssqlMapper.java +++ b/src/main/java/com/munjaon/client/mssql/mapper/MssqlMapper.java @@ -12,6 +12,7 @@ public interface MssqlMapper { int checkTableForLog(); List selectToDeliver(String msgType); int updateToDeliver(String msgId); + int updateDeliverForList(List msgIdList); int updateToReport(MunjaonMsg params); List selectToMove(); List selectToExpire(String expireTime); diff --git a/src/main/java/com/munjaon/client/mssql/service/MssqlService.java b/src/main/java/com/munjaon/client/mssql/service/MssqlService.java index 18b0dfb..ac67cdc 100644 --- a/src/main/java/com/munjaon/client/mssql/service/MssqlService.java +++ b/src/main/java/com/munjaon/client/mssql/service/MssqlService.java @@ -35,6 +35,9 @@ public class MssqlService { public int updateToDeliver(String msgId) { return deliverBMapper.updateToDeliver(msgId); } + public int updateDeliverForList(List msgIdList) { + return deliverBMapper.updateDeliverForList(msgIdList); + } public int updateToReport(MunjaonMsg params) { return deliverBMapper.updateToReport(params); } diff --git a/src/main/java/com/munjaon/client/mysql/mapper/MysqlMapper.java b/src/main/java/com/munjaon/client/mysql/mapper/MysqlMapper.java index 909565d..f97c6e3 100644 --- a/src/main/java/com/munjaon/client/mysql/mapper/MysqlMapper.java +++ b/src/main/java/com/munjaon/client/mysql/mapper/MysqlMapper.java @@ -12,6 +12,7 @@ public interface MysqlMapper { int checkTableForLog(); List selectToDeliver(String msgType); int updateToDeliver(String msgId); + int updateDeliverForList(List msgIdList); int updateToReport(MunjaonMsg params); List selectToMove(); List selectToExpire(String expireTime); diff --git a/src/main/java/com/munjaon/client/mysql/service/MysqlService.java b/src/main/java/com/munjaon/client/mysql/service/MysqlService.java index 470943a..7d4fbcc 100644 --- a/src/main/java/com/munjaon/client/mysql/service/MysqlService.java +++ b/src/main/java/com/munjaon/client/mysql/service/MysqlService.java @@ -35,6 +35,9 @@ public class MysqlService { public int updateToDeliver(String msgId) { return deliverBMapper.updateToDeliver(msgId); } + public int updateDeliverForList(List msgIdList) { + return deliverBMapper.updateDeliverForList(msgIdList); + } public int updateToReport(MunjaonMsg params) { return deliverBMapper.updateToReport(params); } diff --git a/src/main/java/com/munjaon/client/oracle/mapper/OracleMapper.java b/src/main/java/com/munjaon/client/oracle/mapper/OracleMapper.java index b3dbf41..733ad6b 100644 --- a/src/main/java/com/munjaon/client/oracle/mapper/OracleMapper.java +++ b/src/main/java/com/munjaon/client/oracle/mapper/OracleMapper.java @@ -12,6 +12,7 @@ public interface OracleMapper { int checkTableForLog(); List selectToDeliver(String msgType); int updateToDeliver(String msgId); + int updateDeliverForList(List msgIdList); int updateToReport(MunjaonMsg params); List selectToMove(); List selectToExpire(String expireTime); diff --git a/src/main/java/com/munjaon/client/oracle/service/OracleService.java b/src/main/java/com/munjaon/client/oracle/service/OracleService.java index e590dd9..a24f10c 100644 --- a/src/main/java/com/munjaon/client/oracle/service/OracleService.java +++ b/src/main/java/com/munjaon/client/oracle/service/OracleService.java @@ -35,6 +35,9 @@ public class OracleService { public int updateToDeliver(String msgId) { return deliverBMapper.updateToDeliver(msgId); } + public int updateDeliverForList(List msgIdList) { + return deliverBMapper.updateDeliverForList(msgIdList); + } public int updateToReport(MunjaonMsg params) { return deliverBMapper.updateToReport(params); } diff --git a/src/main/java/com/munjaon/client/postgresql/mapper/PostgresqlMapper.java b/src/main/java/com/munjaon/client/postgresql/mapper/PostgresqlMapper.java index 69f01bc..48e610e 100644 --- a/src/main/java/com/munjaon/client/postgresql/mapper/PostgresqlMapper.java +++ b/src/main/java/com/munjaon/client/postgresql/mapper/PostgresqlMapper.java @@ -12,6 +12,7 @@ public interface PostgresqlMapper { int checkTableForLog(); List selectToDeliver(String msgType); int updateToDeliver(String msgId); + int updateDeliverForList(List msgIdList); int updateToReport(MunjaonMsg params); List selectToMove(); List selectToExpire(String expireTime); diff --git a/src/main/java/com/munjaon/client/postgresql/service/PostgresqlService.java b/src/main/java/com/munjaon/client/postgresql/service/PostgresqlService.java index 51102a8..77b10e4 100644 --- a/src/main/java/com/munjaon/client/postgresql/service/PostgresqlService.java +++ b/src/main/java/com/munjaon/client/postgresql/service/PostgresqlService.java @@ -35,6 +35,9 @@ public class PostgresqlService { public int updateToDeliver(String msgId) { return deliverBMapper.updateToDeliver(msgId); } + public int updateDeliverForList(List msgIdList) { + return deliverBMapper.updateDeliverForList(msgIdList); + } public int updateToReport(MunjaonMsg params) { return deliverBMapper.updateToReport(params); } diff --git a/src/main/java/com/munjaon/client/server/service/CollectClientService.java b/src/main/java/com/munjaon/client/server/service/CollectClientService.java index ed88315..06be303 100644 --- a/src/main/java/com/munjaon/client/server/service/CollectClientService.java +++ b/src/main/java/com/munjaon/client/server/service/CollectClientService.java @@ -13,6 +13,7 @@ import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SocketChannel; +import java.util.ArrayList; import java.util.List; public class CollectClientService extends Service { @@ -25,6 +26,9 @@ public class CollectClientService extends Service { private String id; private String pwd; + private StringBuilder deliverBuilder; + private List deliverList = null; + public CollectClientService(String serviceName, String serviceType) { super(serviceName); this.serviceType = serviceType; @@ -38,8 +42,12 @@ public class CollectClientService extends Service { return; } - saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is ready]"); this.IS_READY_YN = worker.checkTableExists(); + if (this.IS_READY_YN) { + saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is ready]"); + } else { + saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is not ready]"); + } } @Override @@ -137,8 +145,28 @@ public class CollectClientService extends Service { return null; } + private void setDeliverMsgId(String msgId) { + if (msgId == null) { + return; + } + if (this.deliverList == null) { + this.deliverList = new ArrayList<>(); + } + this.deliverList.add(msgId); +// if (this.deliverBuilder == null) { +// return; +// } +// +// if (this.deliverBuilder.isEmpty()) { +// this.deliverBuilder.append(msgId); +// } else { +// this.deliverBuilder.append(",").append(msgId); +// } + } + private void messageService() { List list = selectToDeliver(); + this.deliverBuilder = new StringBuilder(); if (list == null || list.isEmpty()) { try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);} return; @@ -154,6 +182,10 @@ public class CollectClientService extends Service { default:break; } } + if (this.deliverList != null && this.deliverList.size() > 0) { + worker.updateDeliverForList(this.deliverList); + this.deliverList = null; // NULL로 초기화 + } } private void smsMessageService(MunjaonMsg data) { @@ -192,14 +224,16 @@ public class CollectClientService extends Service { saveSystemLog("[MESSAGE SEND] [FAIL] [SOCKET IS CLOSED]"); throw new RuntimeException("DELIVER ERROR"); } else if (recvCount > 0) { - worker.updateToDeliver(data.getMsgId()); + setDeliverMsgId(data.getMsgId()); +// worker.updateToDeliver(data.getMsgId()); saveSystemLog("[MESSAGE SEND] [SUCCESS]"); lastPacketSendTime = System.currentTimeMillis(); break; } } } catch (IOException e) { - throw new RuntimeException(e); + e.printStackTrace(); +// throw new RuntimeException(e); } } diff --git a/src/main/java/com/munjaon/client/server/service/DataMoveService.java b/src/main/java/com/munjaon/client/server/service/DataMoveService.java index 43c8ec5..e965a5e 100644 --- a/src/main/java/com/munjaon/client/server/service/DataMoveService.java +++ b/src/main/java/com/munjaon/client/server/service/DataMoveService.java @@ -18,8 +18,12 @@ public class DataMoveService extends Service { return; } - saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is ready]"); this.IS_READY_YN = worker.checkTableExists(); + if (this.IS_READY_YN) { + saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is ready]"); + } else { + saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is not ready]"); + } } @Override diff --git a/src/main/java/com/munjaon/client/server/service/ReportClientService.java b/src/main/java/com/munjaon/client/server/service/ReportClientService.java index 9ba52d1..00aef0d 100644 --- a/src/main/java/com/munjaon/client/server/service/ReportClientService.java +++ b/src/main/java/com/munjaon/client/server/service/ReportClientService.java @@ -37,8 +37,12 @@ public class ReportClientService extends Service { return; } - saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is ready]"); this.IS_READY_YN = worker.checkTableExists(); + if (this.IS_READY_YN) { + saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is ready]"); + } else { + saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is not ready]"); + } } @Override diff --git a/src/main/java/com/munjaon/client/service/DatabaseService.java b/src/main/java/com/munjaon/client/service/DatabaseService.java index 4795667..c78e258 100644 --- a/src/main/java/com/munjaon/client/service/DatabaseService.java +++ b/src/main/java/com/munjaon/client/service/DatabaseService.java @@ -4,11 +4,13 @@ import lombok.Getter; @Getter public enum DatabaseService { + CUBRID_SERVICE, MARIADB_SERVICE, MSSQL_SERVICE, ORACLE_SERVICE, POSTGRESQL_SERVICE, - MYSQL_SERVICE; + MYSQL_SERVICE, + TIBERO_SERVICE; private Object service; diff --git a/src/main/java/com/munjaon/client/service/DatabaseServiceInjector.java b/src/main/java/com/munjaon/client/service/DatabaseServiceInjector.java index 7475e74..a321087 100644 --- a/src/main/java/com/munjaon/client/service/DatabaseServiceInjector.java +++ b/src/main/java/com/munjaon/client/service/DatabaseServiceInjector.java @@ -1,10 +1,12 @@ package com.munjaon.client.service; +import com.munjaon.client.cubrid.service.CubridService; import com.munjaon.client.mariadb.service.MariaDBService; import com.munjaon.client.mssql.service.MssqlService; import com.munjaon.client.mysql.service.MysqlService; import com.munjaon.client.oracle.service.OracleService; import com.munjaon.client.postgresql.service.PostgresqlService; +import com.munjaon.client.tibero.service.TiberoService; import jakarta.annotation.PostConstruct; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -13,6 +15,8 @@ import java.util.EnumSet; @Component public class DatabaseServiceInjector { + @Autowired + private CubridService cubridService; @Autowired private MariaDBService mariaDBService; @Autowired @@ -23,11 +27,15 @@ public class DatabaseServiceInjector { private OracleService oracleService; @Autowired private PostgresqlService postgresqlService; + @Autowired + private TiberoService tiberoService; @PostConstruct public void postConstruct() { for (DatabaseService svc : EnumSet.allOf(DatabaseService.class)) { switch (svc) { + case CUBRID_SERVICE: svc.setService(cubridService); + break; case MARIADB_SERVICE: svc.setService(mariaDBService); break; case MSSQL_SERVICE: svc.setService(mssqlService); @@ -38,6 +46,8 @@ public class DatabaseServiceInjector { break; case POSTGRESQL_SERVICE : svc.setService(postgresqlService); break; + case TIBERO_SERVICE: svc.setService(tiberoService); + break; default: break; } } diff --git a/src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java b/src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java index 4b99a12..10c112e 100644 --- a/src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java +++ b/src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java @@ -1,11 +1,13 @@ package com.munjaon.client.service; +import com.munjaon.client.cubrid.service.CubridService; import com.munjaon.client.mariadb.service.MariaDBService; import com.munjaon.client.model.MunjaonMsg; import com.munjaon.client.mssql.service.MssqlService; import com.munjaon.client.mysql.service.MysqlService; import com.munjaon.client.oracle.service.OracleService; import com.munjaon.client.postgresql.service.PostgresqlService; +import com.munjaon.client.tibero.service.TiberoService; import lombok.Getter; import java.util.EnumSet; @@ -13,6 +15,67 @@ import java.util.List; @Getter public enum DatabaseTypeWorker { + TYPE_OF_CUBRID("CUBRID") { + @Override + public boolean checkTableExists() { + CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService(); + return cubridService.checkTableExists(); + } + + @Override + public List selectToDeliver(String msgType) { + CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService(); + return cubridService.selectToDeliver(msgType); + } + + @Override + public int updateToDeliver(String msgId) { + CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService(); + return cubridService.updateToDeliver(msgId); + } + + @Override + public int updateDeliverForList(List msgIdList) { + CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService(); + return cubridService.updateDeliverForList(msgIdList); + } + + @Override + public int updateToReport(MunjaonMsg params) { + CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService(); + return cubridService.updateToReport(params); + } + + @Override + public List selectToMove() { + CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService(); + return cubridService.selectToMove(); + } + + @Override + public List selectToExpire(String expireTime) { + CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService(); + return cubridService.selectToExpire(expireTime); + } + + @Override + public int insertToLog(String msgId) { + CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService(); + return cubridService.insertToLog(msgId); + } + + @Override + public int deleteFromDeliver(String msgId) { + CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService(); + return cubridService.deleteFromDeliver(msgId); + } + + @Override + public void moveToDeliver() { + CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService(); + cubridService.moveToDeliver(); + } + }, TYPE_OF_MARIADB("MARIADB") { @Override public boolean checkTableExists() { @@ -32,6 +95,12 @@ public enum DatabaseTypeWorker { return mariaDBService.updateToDeliver(msgId); } + @Override + public int updateDeliverForList(List msgIdList) { + MariaDBService mariaDBService = (MariaDBService) DatabaseService.MARIADB_SERVICE.getService(); + return mariaDBService.updateDeliverForList(msgIdList); + } + @Override public int updateToReport(MunjaonMsg params) { MariaDBService mariaDBService = (MariaDBService) DatabaseService.MARIADB_SERVICE.getService(); @@ -87,6 +156,12 @@ public enum DatabaseTypeWorker { return oracleService.updateToDeliver(msgId); } + @Override + public int updateDeliverForList(List msgIdList) { + OracleService oracleService = (OracleService) DatabaseService.ORACLE_SERVICE.getService(); + return oracleService.updateDeliverForList(msgIdList); + } + @Override public int updateToReport(MunjaonMsg params) { OracleService oracleService = (OracleService) DatabaseService.ORACLE_SERVICE.getService(); @@ -142,6 +217,12 @@ public enum DatabaseTypeWorker { return mssqlService.updateToDeliver(msgId); } + @Override + public int updateDeliverForList(List msgIdList) { + MssqlService mssqlService = (MssqlService) DatabaseService.MSSQL_SERVICE.getService(); + return mssqlService.updateDeliverForList(msgIdList); + } + @Override public int updateToReport(MunjaonMsg params) { MssqlService mssqlService = (MssqlService) DatabaseService.MSSQL_SERVICE.getService(); @@ -197,6 +278,12 @@ public enum DatabaseTypeWorker { return postgresqlService.updateToDeliver(msgId); } + @Override + public int updateDeliverForList(List msgIdList) { + PostgresqlService postgresqlService = (PostgresqlService) DatabaseService.POSTGRESQL_SERVICE.getService(); + return postgresqlService.updateDeliverForList(msgIdList); + } + @Override public int updateToReport(MunjaonMsg params) { PostgresqlService postgresqlService = (PostgresqlService) DatabaseService.POSTGRESQL_SERVICE.getService(); @@ -252,6 +339,12 @@ public enum DatabaseTypeWorker { return mysqlService.updateToDeliver(msgId); } + @Override + public int updateDeliverForList(List msgIdList) { + MysqlService mysqlService = (MysqlService) DatabaseService.MYSQL_SERVICE.getService(); + return mysqlService.updateDeliverForList(msgIdList); + } + @Override public int updateToReport(MunjaonMsg params) { MysqlService mysqlService = (MysqlService) DatabaseService.MYSQL_SERVICE.getService(); @@ -287,6 +380,67 @@ public enum DatabaseTypeWorker { MysqlService mysqlService = (MysqlService) DatabaseService.MYSQL_SERVICE.getService(); mysqlService.moveToDeliver(); } + }, + TYPE_OF_TIBERO("TIBERO") { + @Override + public boolean checkTableExists() { + TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService(); + return tiberoService.checkTableExists(); + } + + @Override + public List selectToDeliver(String msgType) { + TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService(); + return tiberoService.selectToDeliver(msgType); + } + + @Override + public int updateToDeliver(String msgId) { + TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService(); + return tiberoService.updateToDeliver(msgId); + } + + @Override + public int updateDeliverForList(List msgIdList) { + TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService(); + return tiberoService.updateDeliverForList(msgIdList); + } + + @Override + public int updateToReport(MunjaonMsg params) { + TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService(); + return tiberoService.updateToReport(params); + } + + @Override + public List selectToMove() { + TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService(); + return tiberoService.selectToMove(); + } + + @Override + public List selectToExpire(String expireTime) { + TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService(); + return tiberoService.selectToExpire(expireTime); + } + + @Override + public int insertToLog(String msgId) { + TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService(); + return tiberoService.insertToLog(msgId); + } + + @Override + public int deleteFromDeliver(String msgId) { + TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService(); + return tiberoService.deleteFromDeliver(msgId); + } + + @Override + public void moveToDeliver() { + TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService(); + tiberoService.moveToDeliver(); + } }; DatabaseTypeWorker(final String name) { @@ -306,6 +460,7 @@ public enum DatabaseTypeWorker { public abstract boolean checkTableExists(); public abstract List selectToDeliver(String msgType); public abstract int updateToDeliver(String msgId); + public abstract int updateDeliverForList(List msgIdList);; public abstract int updateToReport(MunjaonMsg params); public abstract List selectToMove(); public abstract List selectToExpire(String expireTime); diff --git a/src/main/java/com/munjaon/client/tibero/mapper/TiberoMapper.java b/src/main/java/com/munjaon/client/tibero/mapper/TiberoMapper.java new file mode 100644 index 0000000..0213062 --- /dev/null +++ b/src/main/java/com/munjaon/client/tibero/mapper/TiberoMapper.java @@ -0,0 +1,21 @@ +package com.munjaon.client.tibero.mapper; + +import com.munjaon.client.model.MunjaonMsg; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface TiberoMapper { + String checkTime(); + int checkTableForMessage(); + int checkTableForLog(); + List selectToDeliver(String msgType); + int updateToDeliver(String msgId); + int updateDeliverForList(List msgIdList); + int updateToReport(MunjaonMsg params); + List selectToMove(); + List selectToExpire(String expireTime); + int insertToLog(String msgId); + int deleteFromDeliver(String msgId); +} diff --git a/src/main/java/com/munjaon/client/tibero/service/TiberoService.java b/src/main/java/com/munjaon/client/tibero/service/TiberoService.java new file mode 100644 index 0000000..16b5cbf --- /dev/null +++ b/src/main/java/com/munjaon/client/tibero/service/TiberoService.java @@ -0,0 +1,69 @@ +package com.munjaon.client.tibero.service; + +import com.munjaon.client.model.MunjaonMsg; +import com.munjaon.client.tibero.mapper.TiberoMapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Slf4j +@Service +@RequiredArgsConstructor +public class TiberoService { + private final TiberoMapper deliverBMapper; + + public boolean checkTableExists() { + boolean isExist = false; + try { + int msgCount = deliverBMapper.checkTableForMessage(); + int logCount = deliverBMapper.checkTableForLog(); + if (msgCount >= 0 && logCount >= 0) { + isExist = true; + } + } catch (Exception e) { + log.error("Check table exists error : {}", e); + } + + return isExist; + } + public List selectToDeliver(String msgType) { + return deliverBMapper.selectToDeliver(msgType); + } + public int updateToDeliver(String msgId) { + return deliverBMapper.updateToDeliver(msgId); + } + public int updateDeliverForList(List msgIdList) { + return deliverBMapper.updateDeliverForList(msgIdList); + } + public int updateToReport(MunjaonMsg params) { + return deliverBMapper.updateToReport(params); + } + public List selectToMove() { + return deliverBMapper.selectToMove(); + } + public List selectToExpire(String expireTime) { + return deliverBMapper.selectToExpire(expireTime); + } + public int insertToLog(String msgId) { + return deliverBMapper.insertToLog(msgId); + } + public int deleteFromDeliver(String msgId) { + return deliverBMapper.deleteFromDeliver(msgId); + } + + @Transactional + public void moveToDeliver() { + List list = selectToMove(); + if (list == null || list.size() == 0) { + return; + } + log.debug("[CLASS : {} : MOVE_COUNT : {}", this.getClass(), list.size()); + for (MunjaonMsg msg : list) { + insertToLog(msg.getMsgId()); + deleteFromDeliver(msg.getMsgId()); + } + } +} diff --git a/src/main/resources/sqlmap/cubrid/cubrid_sql.xml b/src/main/resources/sqlmap/cubrid/cubrid_sql.xml new file mode 100644 index 0000000..ea6e0b0 --- /dev/null +++ b/src/main/resources/sqlmap/cubrid/cubrid_sql.xml @@ -0,0 +1,103 @@ + + + + + + + + + /* CubridMapper.updateToDeliver */ + UPDATE MUNJAON_MSG SET + SEND_STATUS = '1' + , DELIVER_DATE = SYSDATETIME + WHERE MSG_ID = #{msgId} + + + /* CubridMapper.updateDeliverForList */ + UPDATE MUNJAON_MSG SET + SEND_STATUS = '1' + , DELIVER_DATE = SYSDATETIME + WHERE SEND_STATUS = '0' + AND ( + + MSG_ID = #{item} + + ) + + + /* CubridMapper.updateToReport */ + UPDATE MUNJAON_MSG SET + SEND_STATUS = #{sendStatus} + , SENT_DATE = FROM_UNIXTIME(UNIX_TIMESTAMP(#{sendDate})) + , REPORT_DATE = NOW() + , TELECOM = #{telecom} + WHERE MSG_ID = #{msgId} + + + + + /* CubridMapper.insertToLog */ + INSERT INTO MUNJAON_MSG_LOG + ( + MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE, + RECV_PHONE, SEND_PHONE, SUBJECT, MESSAGE, TELECOM, + FILENAME01, FILENAME02, FILENAME03, DELIVER_DATE, SENT_DATE, REPORT_DATE + ) + SELECT + MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE, + RECV_PHONE, SEND_PHONE, SUBJECT, MESSAGE, TELECOM, + FILENAME01, FILENAME02, FILENAME03, DELIVER_DATE, SENT_DATE, REPORT_DATE + FROM MUNJAON_MSG + WHERE MSG_ID = #{msgId} + + + /* CubridMapper.deleteFromDeliver */ + DELETE FROM MUNJAON_MSG + WHERE MSG_ID = #{msgId} + + \ No newline at end of file diff --git a/src/main/resources/sqlmap/mariadb/mariadb_sql.xml b/src/main/resources/sqlmap/mariadb/mariadb_sql.xml index 41a7a59..03e6d29 100644 --- a/src/main/resources/sqlmap/mariadb/mariadb_sql.xml +++ b/src/main/resources/sqlmap/mariadb/mariadb_sql.xml @@ -50,6 +50,18 @@ , DELIVER_DATE = NOW() WHERE MSG_ID = #{msgId} + + /* MariaDBMapper.updateDeliverForList */ + UPDATE MUNJAON_MSG SET + SEND_STATUS = '1' + , DELIVER_DATE = NOW() + WHERE SEND_STATUS = '0' + AND ( + + MSG_ID = #{item} + + ) + /* MariaDBMapper.updateToReport */ UPDATE MUNJAON_MSG SET diff --git a/src/main/resources/sqlmap/mssql/mssql_sql.xml b/src/main/resources/sqlmap/mssql/mssql_sql.xml index 26d1a2a..bb9f82d 100644 --- a/src/main/resources/sqlmap/mssql/mssql_sql.xml +++ b/src/main/resources/sqlmap/mssql/mssql_sql.xml @@ -2,24 +2,24 @@ - /* MariaDBMapper.updateToDeliver */ + /* MssqlMapper.updateToDeliver */ UPDATE MUNJAON_MSG SET SEND_STATUS = '1' , DELIVER_DATE = GETDATE() WHERE MSG_ID = #{msgId} + + /* MssqlMapper.updateDeliverForList */ + UPDATE MUNJAON_MSG SET + SEND_STATUS = '1' + , DELIVER_DATE = GETDATE() + WHERE SEND_STATUS = '0' + AND ( + + MSG_ID = #{item} + + ) + - /* MariaDBMapper.updateToReport */ + /* MssqlMapper.updateToReport */ UPDATE MUNJAON_MSG SET SEND_STATUS = #{sendStatus} , SENT_DATE = CAST(#{sendDate} AS DATETIME) @@ -61,7 +73,7 @@ WHERE MSG_ID = #{msgId} - /* MariaDBMapper.insertToLog */ + /* MssqlMapper.insertToLog */ INSERT INTO MUNJAON_MSG_LOG ( MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE, @@ -95,7 +107,7 @@ WHERE MSG_ID = #{msgId} - /* MariaDBMapper.deleteFromDeliver */ + /* MssqlMapper.deleteFromDeliver */ DELETE FROM MUNJAON_MSG WHERE MSG_ID = #{msgId} diff --git a/src/main/resources/sqlmap/mysql/mysql_sql.xml b/src/main/resources/sqlmap/mysql/mysql_sql.xml index 193890f..e0ea340 100644 --- a/src/main/resources/sqlmap/mysql/mysql_sql.xml +++ b/src/main/resources/sqlmap/mysql/mysql_sql.xml @@ -2,25 +2,24 @@ - /* MariaDBMapper.updateToDeliver */ + /* MysqlMapper.updateToDeliver */ UPDATE MUNJAON_MSG SET SEND_STATUS = '1' , DELIVER_DATE = NOW() WHERE MSG_ID = #{msgId} + + /* MysqlMapper.updateToDeliver */ + UPDATE MUNJAON_MSG SET + SEND_STATUS = '1' + , DELIVER_DATE = NOW() + WHERE SEND_STATUS = '0' + AND ( + + MSG_ID = #{item} + + ) + - /* MariaDBMapper.updateToReport */ + /* MysqlMapper.updateToReport */ UPDATE MUNJAON_MSG SET SEND_STATUS = #{sendStatus} , SENT_DATE = FROM_UNIXTIME(UNIX_TIMESTAMP(#{sendDate})) @@ -60,14 +71,14 @@ WHERE MSG_ID = #{msgId} - /* MariaDBMapper.insertToLog */ + /* MysqlMapper.insertToLog */ INSERT INTO MUNJAON_MSG_LOG ( MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE, @@ -90,7 +101,7 @@ WHERE MSG_ID = #{msgId} - /* MariaDBMapper.deleteFromDeliver */ + /* MysqlMapper.deleteFromDeliver */ DELETE FROM MUNJAON_MSG WHERE MSG_ID = #{msgId} diff --git a/src/main/resources/sqlmap/oracle/oracle_sql.xml b/src/main/resources/sqlmap/oracle/oracle_sql.xml index d31428f..0257dc0 100644 --- a/src/main/resources/sqlmap/oracle/oracle_sql.xml +++ b/src/main/resources/sqlmap/oracle/oracle_sql.xml @@ -2,24 +2,23 @@ - /* MariaDBMapper.updateToDeliver */ + /* OracleMapper.updateToDeliver */ UPDATE MUNJAON_MSG SET SEND_STATUS = '1' , DELIVER_DATE = SYSDATE WHERE MSG_ID = #{msgId} + + /* OracleMapper.updateToDeliver */ + UPDATE MUNJAON_MSG SET + SEND_STATUS = '1' + , DELIVER_DATE = SYSDATE + WHERE SEND_STATUS = '0' + AND ( + + MSG_ID = #{item} + + ) + - /* MariaDBMapper.updateToReport */ + /* OracleMapper.updateToReport */ UPDATE MUNJAON_MSG SET SEND_STATUS = #{sendStatus} , SENT_DATE = TO_DATE(#{sendDate}, 'YYYYMMDDHH24MISS') @@ -61,7 +72,7 @@ WHERE MSG_ID = #{msgId} - /* MariaDBMapper.insertToLog */ + /* OracleMapper.insertToLog */ INSERT INTO MUNJAON_MSG_LOG ( MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE, @@ -95,7 +106,7 @@ WHERE MSG_ID = #{msgId} - /* MariaDBMapper.deleteFromDeliver */ + /* OracleMapper.deleteFromDeliver */ DELETE FROM MUNJAON_MSG WHERE MSG_ID = #{msgId} diff --git a/src/main/resources/sqlmap/postgresql/postresql_sql.xml b/src/main/resources/sqlmap/postgresql/postresql_sql.xml index 086d562..42e9fb5 100644 --- a/src/main/resources/sqlmap/postgresql/postresql_sql.xml +++ b/src/main/resources/sqlmap/postgresql/postresql_sql.xml @@ -2,19 +2,19 @@ - /* MariaDBMapper.updateToDeliver */ + /* PostgresqlMapper.updateToDeliver */ UPDATE MUNJAON_MSG SET SEND_STATUS = '1' , DELIVER_DATE = NOW() WHERE MSG_ID = #{msgId} + + /* PostgresqlMapper.updateDeliverForList */ + UPDATE MUNJAON_MSG SET + SEND_STATUS = '1' + , DELIVER_DATE = NOW() + WHERE SEND_STATUS = '0' + AND ( + + MSG_ID = #{item} + + ) + - /* MariaDBMapper.updateToReport */ + /* PostgresqlMapper.updateToReport */ UPDATE MUNJAON_MSG SET SEND_STATUS = #{sendStatus} , SENT_DATE = TO_DATE(#{sendDate}, 'YYYYMMDDHH24MISS') @@ -56,7 +68,7 @@ WHERE MSG_ID = #{msgId} - /* MariaDBMapper.insertToLog */ + /* PostgresqlMapper.insertToLog */ INSERT INTO MUNJAON_MSG_LOG ( MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE, @@ -90,7 +102,7 @@ WHERE MSG_ID = #{msgId} - /* MariaDBMapper.deleteFromDeliver */ + /* PostgresqlMapper.deleteFromDeliver */ DELETE FROM MUNJAON_MSG WHERE MSG_ID = #{msgId} diff --git a/src/main/resources/sqlmap/tibero/tibero_sql.xml b/src/main/resources/sqlmap/tibero/tibero_sql.xml new file mode 100644 index 0000000..54e4202 --- /dev/null +++ b/src/main/resources/sqlmap/tibero/tibero_sql.xml @@ -0,0 +1,113 @@ + + + + + + + + + /* OracleMapper.updateToDeliver */ + UPDATE MUNJAON_MSG SET + SEND_STATUS = '1' + , DELIVER_DATE = SYSDATE + WHERE MSG_ID = #{msgId} + + + /* OracleMapper.updateDeliverForList */ + UPDATE MUNJAON_MSG SET + SEND_STATUS = '1' + , DELIVER_DATE = SYSDATE + WHERE SEND_STATUS = '0' + AND ( + + MSG_ID = #{item} + + ) + + + /* OracleMapper.updateToReport */ + UPDATE MUNJAON_MSG SET + SEND_STATUS = #{sendStatus} + , SENT_DATE = TO_DATE(#{sendDate}, 'YYYYMMDDHH24MISS') + , REPORT_DATE = SYSDATE + , TELECOM = #{telecom} + WHERE MSG_ID = #{msgId} + + + + + /* OracleMapper.insertToLog */ + INSERT INTO MUNJAON_MSG_LOG + ( + MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE, + RECV_PHONE, SEND_PHONE, SUBJECT, MESSAGE, TELECOM, + FILENAME01, FILENAME02, FILENAME03, DELIVER_DATE, SENT_DATE, REPORT_DATE + ) + SELECT + MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE, + RECV_PHONE, SEND_PHONE, SUBJECT, MESSAGE, TELECOM, + FILENAME01, FILENAME02, FILENAME03, DELIVER_DATE, SENT_DATE, REPORT_DATE + FROM MUNJAON_MSG + WHERE MSG_ID = #{msgId} + + + /* OracleMapper.deleteFromDeliver */ + DELETE FROM MUNJAON_MSG + WHERE MSG_ID = #{msgId} + + \ No newline at end of file