diff --git a/build.gradle b/build.gradle
index f71e6b0..5cf2b9a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -21,8 +21,17 @@ configurations {
repositories {
mavenCentral()
+ maven {
+ url 'https://maven.cubrid.org'
+ }
}
+/*
+
+ org.bgee.log4jdbc-log4j2
+ log4jdbc-log4j2-jdbc4.1
+
+ */
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-web'
@@ -34,6 +43,8 @@ dependencies {
implementation 'com.mysql:mysql-connector-j'
implementation 'com.oracle.database.jdbc:ojdbc11'
implementation 'org.mariadb.jdbc:mariadb-java-client'
+ implementation 'cubrid:cubrid-jdbc:11.3.0.0047'
+ implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.4'
diff --git a/src/docs/mapper-examples/address/address-read.xml b/src/docs/mapper-examples/address/address-read.xml
index e6fac0e..378e2ef 100644
--- a/src/docs/mapper-examples/address/address-read.xml
+++ b/src/docs/mapper-examples/address/address-read.xml
@@ -4,10 +4,34 @@
+
+
+
+
diff --git a/src/docs/mapper-examples/address/address-write.xml b/src/docs/mapper-examples/address/address-write.xml
index 954f839..7d072c6 100644
--- a/src/docs/mapper-examples/address/address-write.xml
+++ b/src/docs/mapper-examples/address/address-write.xml
@@ -5,7 +5,7 @@
INSERT INTO TTO_BD (
STDG_CD, CTPV_NM, SGG_NM, STTY_EMD_NM, STLI_NM, MTN_YN, LOTNO_MNO, LOTNO_SNO, ROAD_NM_CD, ROAD_NM, UDGD_YN, BMNO, BSNO, BDRG_BLDG_NM, DTL_BLDG_NM, BLDG_MNG_NO, EMD_SN, DONG_CD, DONG_NM, ZIP, ZIP_SN, BULK_DLDTN_NM, MVMN_RSN_CD, ANCMNT_YMD, CHG_BFR_ROAD_NM_ADDR, SGG_BLDG_NM, APTCPX_YN, BSCS_ZONE_NO, DADDR_YN, RMRK1, RMRK2, TRANSFER_YN, TRANSFER_DATE
)
- VALEUS (
+ VALUES (
#{STDG_CD}, #{CTPV_NM}, #{SGG_NM}, #{STTY_EMD_NM}, #{STLI_NM}, #{MTN_YN}, #{LOTNO_MNO}, #{LOTNO_SNO}, #{ROAD_NM_CD}, #{ROAD_NM}, #{UDGD_YN}, #{BMNO}, #{BSNO}, #{BDRG_BLDG_NM}, #{DTL_BLDG_NM}, #{BLDG_MNG_NO}, #{EMD_SN}, #{DONG_CD}, #{DONG_NM}, #{ZIP}, #{ZIP_SN}, #{BULK_DLDTN_NM}, #{MVMN_RSN_CD}, #{ANCMNT_YMD}, #{CHG_BFR_ROAD_NM_ADDR}, #{SGG_BLDG_NM}, #{APTCPX_YN}, #{BSCS_ZONE_NO}, #{DADDR_YN}, #{RMRK1}, #{RMRK2}, 'Y', SYSDATE
)
diff --git a/src/docs/settings-examples/dfxagent-bd-test-cubrid-local.json b/src/docs/settings-examples/dfxagent-bd-test-cubrid-local.json
new file mode 100644
index 0000000..ce98daa
--- /dev/null
+++ b/src/docs/settings-examples/dfxagent-bd-test-cubrid-local.json
@@ -0,0 +1,40 @@
+{
+ "description": "개발PC에서 실행함. bd-test-cubrid 와 연결. 메시지 수신 후 cubrid 저장",
+ "myHostId": "bd-test-cubrid",
+ "myListenPort": 17801,
+ "knownAgentList": [
+ {
+ "hostId": "bd-test-oracle",
+ "hostName": "mkami.foxsoft.kr",
+ "listenPort": 17801,
+ "dropBoxIdList": []
+ }
+ ],
+ "dataSourceConfig": [
+ {
+ "dataSourceId": "cubrid",
+ "driverClassName": "cubrid.jdbc.driver.CUBRIDDriver",
+ "url": "jdbc:cubrid:14.63.185.105:33000:amif:ami::",
+ "username": "ami",
+ "password": "fox12#$%"
+ }
+ ],
+ "sqlMapperLocations": [
+ "D:/projects/bsm-lab/dfx/dfxagent/src/docs/mapper-examples/**/*.xml"
+ ],
+ "dropBox": {
+ "receivedMessageStorageRoot": "D:/projects/bsm-lab/dfx/dfxagent/src/docs/messages/received",
+ "processedMessageStorageRoot": "D:/projects/bsm-lab/dfx/dfxagent/src/docs/messages/processed",
+ "failureMessageStorageRoot": "D:/projects/bsm-lab/dfx/dfxagent/src/docs/messages/failure",
+ "dropBoxList": [
+ {
+ "dropBoxId": "db-bd-cubrid-save",
+ "taskType": "RECEIVE_DB_TO_DB_SAVE",
+ "dataSourceId": "cubrid",
+ "sqlId": "address.dropbox.cubrid.ttoBd.insertTtoBd"
+ }
+ ]
+ },
+ "postman": [
+ ]
+}
diff --git a/src/docs/settings-examples/dfxagent-bd-test-cubrid.json b/src/docs/settings-examples/dfxagent-bd-test-cubrid.json
index 97dda05..db4275a 100644
--- a/src/docs/settings-examples/dfxagent-bd-test-cubrid.json
+++ b/src/docs/settings-examples/dfxagent-bd-test-cubrid.json
@@ -1,5 +1,5 @@
{
- "description": "워크스테이션에서 실행함. 개발PC의 agent와 연결. 메시지 수신 후 cubrid 저장",
+ "description": "워크스테이션에서 실행함. bd-test-oracle 와 연결. 메시지 수신 후 cubrid 저장",
"myHostId": "bd-test-cubrid",
"myListenPort": 17801,
"knownAgentList": [
diff --git a/src/docs/settings-examples/dfxagent-bd-test-oracle-local.json b/src/docs/settings-examples/dfxagent-bd-test-oracle-local.json
new file mode 100644
index 0000000..b371f60
--- /dev/null
+++ b/src/docs/settings-examples/dfxagent-bd-test-oracle-local.json
@@ -0,0 +1,55 @@
+{
+ "description": "개발PC에서 실행함. 웍스테이션 에이전트(bd-test-cubrid)와 연결. 웍스테이션 oracle 에서 TTO_BD 테이블을 조회하여 bd-test-cubrid 에이전트에게 전달함",
+ "myHostId": "bd-test-oracle",
+ "myListenPort": 16801,
+ "knownAgentList": [
+ {
+ "hostId": "bd-test-cubrid",
+ "hostName": "mkami.foxsoft.kr",
+ "listenPort": 17801,
+ "dropBoxIdList": [
+ "drop-tto-db"
+ ]
+ }
+ ],
+ "dataSourceConfig": [
+ {
+ "dataSourceId": "ds-oracle",
+ "driverClassName": "oracle.jdbc.driver.OracleDriver",
+ "url": "jdbc:oracle:thin:@mkami.foxsoft.kr:1521:xe",
+ "username": "ami",
+ "password": "fox12#$%"
+ }
+ ],
+ "sqlMapperLocations": [
+ "D:/projects/bsm-lab/dfx/dfxagent/src/docs/mapper-examples/**/*.xml"
+ ],
+ "dropBox": {
+ "receivedMessageStorageRoot": "D:/projects/bsm-lab/dfx/dfxagent/src/docs/messages/received",
+ "processedMessageStorageRoot": "D:/projects/bsm-lab/dfx/dfxagent/src/docs/messages/processed",
+ "failureMessageStorageRoot": "D:/projects/bsm-lab/dfx/dfxagent/src/docs/messages/failure",
+ "dropBoxList": [
+ ]
+ },
+ "postman": [
+ {
+ "postmanId": "postman-oracle-tto-bd-10",
+ "taskType": "DB_READ_THEN_SEND",
+ "action": {
+ "type": "SCHEDULED",
+ "cron": "0 0/1 * * * *"
+ },
+ "message": {
+ "messageType": "TRANSFER_DB_TO_DB",
+ "dataSourceId": "ds-oracle",
+ "sqlId": "address.postman.oracle.ttoBd.selectTtoBd10"
+ },
+ "recipientHostId": "bd-test-cubrid",
+ "recipientDropBoxId": "db-bd-cubrid-save",
+ "routingHostIdList": [
+ "bd-test-oracle",
+ "bd-test-cubrid"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/docs/settings-examples/dfxagent-bd-test-oracle.json b/src/docs/settings-examples/dfxagent-bd-test-oracle.json
index b371f60..78de84c 100644
--- a/src/docs/settings-examples/dfxagent-bd-test-oracle.json
+++ b/src/docs/settings-examples/dfxagent-bd-test-oracle.json
@@ -1,15 +1,13 @@
{
- "description": "개발PC에서 실행함. 웍스테이션 에이전트(bd-test-cubrid)와 연결. 웍스테이션 oracle 에서 TTO_BD 테이블을 조회하여 bd-test-cubrid 에이전트에게 전달함",
+ "description": "워크스테이션에서 실행함. bd-test-cubrid 와 연결. 웍스테이션 oracle 에서 TTO_BD 테이블을 조회하여 bd-test-cubrid 에이전트에게 전달함",
"myHostId": "bd-test-oracle",
- "myListenPort": 16801,
+ "myListenPort": 17801,
"knownAgentList": [
{
"hostId": "bd-test-cubrid",
- "hostName": "mkami.foxsoft.kr",
+ "hostName": "192.168.0.16",
"listenPort": 17801,
- "dropBoxIdList": [
- "drop-tto-db"
- ]
+ "dropBoxIdList": ["db-bd-cubrid-save"]
}
],
"dataSourceConfig": [
@@ -22,12 +20,12 @@
}
],
"sqlMapperLocations": [
- "D:/projects/bsm-lab/dfx/dfxagent/src/docs/mapper-examples/**/*.xml"
+ "/home/dfxagent/agent/conf/mappers/**/*.xml"
],
"dropBox": {
- "receivedMessageStorageRoot": "D:/projects/bsm-lab/dfx/dfxagent/src/docs/messages/received",
- "processedMessageStorageRoot": "D:/projects/bsm-lab/dfx/dfxagent/src/docs/messages/processed",
- "failureMessageStorageRoot": "D:/projects/bsm-lab/dfx/dfxagent/src/docs/messages/failure",
+ "receivedMessageStorageRoot": "/home/dfxagent/agent/messages/received",
+ "processedMessageStorageRoot": "/home/dfxagent/agent/messages/processed",
+ "failureMessageStorageRoot": "/home/dfxagent/agent/messages/failure",
"dropBoxList": [
]
},
@@ -42,7 +40,8 @@
"message": {
"messageType": "TRANSFER_DB_TO_DB",
"dataSourceId": "ds-oracle",
- "sqlId": "address.postman.oracle.ttoBd.selectTtoBd10"
+ "sqlId": "address.postman.oracle.ttoBd.selectTtoBd10",
+ "postProcessingSqlId": "address.postman.oracle.ttoBd.updateTtoBd10TransferDone"
},
"recipientHostId": "bd-test-cubrid",
"recipientDropBoxId": "db-bd-cubrid-save",
diff --git a/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigDto.java b/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigDto.java
index 1ee71ec..df5b4cb 100644
--- a/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigDto.java
+++ b/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigDto.java
@@ -78,6 +78,7 @@ public class AgentConfigDto {
private String metaDataDataSourceId;
private String metaDataSqlId;
private String metaDropBoxId;
+ private String postProcessingSqlId;
}
public static enum ActionType {
diff --git a/src/main/java/com/bsmlab/dfx/agent/support/MessageUtils.java b/src/main/java/com/bsmlab/dfx/agent/support/MessageUtils.java
index d6a66d0..81256ae 100644
--- a/src/main/java/com/bsmlab/dfx/agent/support/MessageUtils.java
+++ b/src/main/java/com/bsmlab/dfx/agent/support/MessageUtils.java
@@ -8,11 +8,13 @@ import com.bsmlab.dfx.agent.support.exception.NullMessageException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.EnumUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.*;
+@Slf4j
public class MessageUtils {
private MessageUtils() {};
@@ -120,13 +122,11 @@ public class MessageUtils {
if(map.get("data") == null) {
throw new InCompleteMessageException("data 엘리먼트를 찾을 수 없습니다.");
}
- else if(!(map.get("data") instanceof List)) {
- throw new InCompleteMessageException("data 엘리먼트의 데이터가 객체타입이 아닙니다.");
+ else if(!(map.get("data") instanceof String)) {
+ throw new InCompleteMessageException("data 엘리먼트의 데이터가 문자 타입이 아닙니다.");
}
else {
- List