diff --git a/src/main/java/egovframework/com/mtdata/comtsrcdata/mapper/ComtsrcdataMapper.java b/src/main/java/egovframework/com/mtdata/comtsrcdata/mapper/ComtsrcdataMapper.java index f762775..8c50200 100644 --- a/src/main/java/egovframework/com/mtdata/comtsrcdata/mapper/ComtsrcdataMapper.java +++ b/src/main/java/egovframework/com/mtdata/comtsrcdata/mapper/ComtsrcdataMapper.java @@ -1,5 +1,6 @@ package egovframework.com.mtdata.comtsrcdata.mapper; +import egovframework.com.mtdata.comtsrcdata.vo.ComtColVO; import egovframework.com.mtdata.comtsrcdata.vo.ComtExtrtVO; import egovframework.com.mtdata.comtsrcdata.vo.ComtTableVO; import egovframework.com.mtdata.comtsrcdata.vo.ComtsrcdataVO; @@ -17,17 +18,9 @@ public interface ComtsrcdataMapper { */ public int insertComtExtrtInfo(ComtExtrtVO vo) throws Exception; - /** - * 원천데이터를 [comtsrcdata]테이블에 저장 - * - * @param vo - * @return - * @throws Exception - */ - public int insertComtSrcdataInfo(ComtsrcdataVO vo) throws Exception; /** - * 원천데이터 테이블을 [comtsrcdatameta]테이블에 저장 + * 원천데이터 테이블을 [comtsrcdatameta] 테이블에 저장 * * @param vo * @return @@ -37,7 +30,7 @@ public interface ComtsrcdataMapper { /** - * 원천데이터 테이블을 [comtsrcdatameta]테이블에 저장 + * 원천데이터를 [comtsrcdata] 테이블에 저장 * * @param vo * @return @@ -45,6 +38,15 @@ public interface ComtsrcdataMapper { */ public int insertComtSrcdata(ComtsrcdataVO vo) throws Exception; + /** + * 원천데이터의 컬럼정보 [comtsrcdatacol] 테이블에 저장 + * + * @param vo + * @return + * @throws Exception + */ + public int insertComtSrcCol(ComtColVO vo) throws Exception; + // 원천데이터 jsonb type 테스트 용 샘플 public int updateDatasrc(ComtsrcdataVO vo) throws Exception; diff --git a/src/main/java/egovframework/com/mtdata/comtsrcdata/service/ComtsrcdataService.java b/src/main/java/egovframework/com/mtdata/comtsrcdata/service/ComtsrcdataService.java index c32cb85..c6af924 100644 --- a/src/main/java/egovframework/com/mtdata/comtsrcdata/service/ComtsrcdataService.java +++ b/src/main/java/egovframework/com/mtdata/comtsrcdata/service/ComtsrcdataService.java @@ -1,6 +1,7 @@ package egovframework.com.mtdata.comtsrcdata.service; import egovframework.com.mtdata.comtsrcdata.dto.ComtsrcdataDTO; +import egovframework.com.mtdata.comtsrcdata.vo.ComtColVO; import egovframework.com.mtdata.comtsrcdata.vo.ComtExtrtVO; import egovframework.com.mtdata.comtsrcdata.vo.ComtTableVO; import egovframework.com.mtdata.comtsrcdata.vo.ComtsrcdataVO; @@ -36,6 +37,15 @@ public interface ComtsrcdataService { public int insertComtTabledataInfo(ComtTableVO vo) throws Exception; + /** + * 원천데이터의 컬럼정보 [comtsrcdatacol] 테이블에 저장 + * + * @param vo + * @return + * @throws Exception + */ + public int insertComtSrcCol(ComtColVO vo) throws Exception; + /** * test diff --git a/src/main/java/egovframework/com/mtdata/comtsrcdata/service/impl/ComtsrcdataServiceImpl.java b/src/main/java/egovframework/com/mtdata/comtsrcdata/service/impl/ComtsrcdataServiceImpl.java index fa121ec..75c1f6b 100644 --- a/src/main/java/egovframework/com/mtdata/comtsrcdata/service/impl/ComtsrcdataServiceImpl.java +++ b/src/main/java/egovframework/com/mtdata/comtsrcdata/service/impl/ComtsrcdataServiceImpl.java @@ -3,6 +3,7 @@ package egovframework.com.mtdata.comtsrcdata.service.impl; import egovframework.com.mtdata.comtsrcdata.dto.ComtsrcdataDTO; import egovframework.com.mtdata.comtsrcdata.mapper.ComtsrcdataMapper; import egovframework.com.mtdata.comtsrcdata.service.ComtsrcdataService; +import egovframework.com.mtdata.comtsrcdata.vo.ComtColVO; import egovframework.com.mtdata.comtsrcdata.vo.ComtExtrtVO; import egovframework.com.mtdata.comtsrcdata.vo.ComtTableVO; import egovframework.com.mtdata.comtsrcdata.vo.ComtsrcdataVO; @@ -33,6 +34,12 @@ public class ComtsrcdataServiceImpl extends EgovAbstractServiceImpl implements C return comtsrcdataMapper.insertComtTabledataInfo(vo); } + @Override + public int insertComtSrcCol(ComtColVO vo) throws Exception { + return comtsrcdataMapper.insertComtSrcCol(vo); + } + + @Override public int updateDatasrc(ComtsrcdataVO vo) throws Exception { return comtsrcdataMapper.updateDatasrc(vo); diff --git a/src/main/java/egovframework/com/mtdata/comtsrcdata/vo/ComtColVO.java b/src/main/java/egovframework/com/mtdata/comtsrcdata/vo/ComtColVO.java index 89d60ab..24e8718 100644 --- a/src/main/java/egovframework/com/mtdata/comtsrcdata/vo/ComtColVO.java +++ b/src/main/java/egovframework/com/mtdata/comtsrcdata/vo/ComtColVO.java @@ -7,10 +7,10 @@ import lombok.Setter; @Getter @Setter public class ComtColVO { - /** 원천데이터 테이블 ID */ - private int srcDataMetaId; /** 원천데이터 컬럼 ID*/ private int srcDataColId; + /** 원천데이터 테이블 ID */ + private int srcDataMetaId; /** 원천데이터 컬럼명 */ private String srcDataColNm; } diff --git a/src/main/java/egovframework/com/mtdata/comtsrcdata/vo/ComtTableVO.java b/src/main/java/egovframework/com/mtdata/comtsrcdata/vo/ComtTableVO.java index d436fef..424b080 100644 --- a/src/main/java/egovframework/com/mtdata/comtsrcdata/vo/ComtTableVO.java +++ b/src/main/java/egovframework/com/mtdata/comtsrcdata/vo/ComtTableVO.java @@ -7,10 +7,10 @@ import lombok.Setter; @Getter @Setter public class ComtTableVO { - /** 원천데이터 데이터 ID */ - private int srcDataId ; /** 원천데이터 테이블 ID */ private int srcDataMetaId; + /** 원천데이터 데이터 ID */ + private int extrId ; /** 원천데이터 테이블 이름 */ private String srcDataTblNm; diff --git a/src/main/java/egovframework/com/mtdata/comtsrcdata/vo/ComtsrcdataVO.java b/src/main/java/egovframework/com/mtdata/comtsrcdata/vo/ComtsrcdataVO.java index f6fd519..37c1536 100644 --- a/src/main/java/egovframework/com/mtdata/comtsrcdata/vo/ComtsrcdataVO.java +++ b/src/main/java/egovframework/com/mtdata/comtsrcdata/vo/ComtsrcdataVO.java @@ -7,10 +7,10 @@ import lombok.Setter; @Getter @Setter public class ComtsrcdataVO { - /** 원천데이터 데이터 ID */ - private int srcDataId ; - /** 추출 ID */ - private int extrId; + /** ID */ + private int srcDataId; + /** 원천데이터 테이블 정보 ID */ + private int srcDataMetaId ; /** 원천데이터 값 */ private String srcDataVl; } diff --git a/src/main/java/egovframework/com/mtdata/comtsrcdata/web/ComtsrcdataController.java b/src/main/java/egovframework/com/mtdata/comtsrcdata/web/ComtsrcdataController.java index 406abd4..aa9a885 100644 --- a/src/main/java/egovframework/com/mtdata/comtsrcdata/web/ComtsrcdataController.java +++ b/src/main/java/egovframework/com/mtdata/comtsrcdata/web/ComtsrcdataController.java @@ -70,9 +70,8 @@ public class ComtsrcdataController { } obj.putAll(resultMap); ComtsrcdataVO vo = new ComtsrcdataVO(); - vo.setExtrId(6); vo.setSrcDataVl(obj.toString()); - service.insertComtSrcdata(vo); +// service.insertComtSrcdata(vo); } return "원천데이터 컨트롤러 ::"; diff --git a/src/main/java/egovframework/com/mtdata/schema/service/impl/MySQLSchemaViewerImpl.java b/src/main/java/egovframework/com/mtdata/schema/service/impl/MySQLSchemaViewerImpl.java index cb384d8..c7c2078 100644 --- a/src/main/java/egovframework/com/mtdata/schema/service/impl/MySQLSchemaViewerImpl.java +++ b/src/main/java/egovframework/com/mtdata/schema/service/impl/MySQLSchemaViewerImpl.java @@ -1,14 +1,19 @@ package egovframework.com.mtdata.schema.service.impl; import java.sql.*; +import java.util.HashMap; +import java.util.Map; import javax.annotation.Resource; import egovframework.com.mtdata.comtsrcdata.service.ComtsrcdataService; +import egovframework.com.mtdata.comtsrcdata.vo.ComtColVO; import egovframework.com.mtdata.comtsrcdata.vo.ComtExtrtVO; +import egovframework.com.mtdata.comtsrcdata.vo.ComtTableVO; import egovframework.com.mtdata.comtsrcdata.vo.ComtsrcdataVO; import egovframework.com.mtdata.database.vo.ColumnInfoVO; import egovframework.com.mtdata.database.vo.TableInfoVO; +import org.json.simple.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -90,6 +95,7 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer { // } } +// 기관정보 스키마 private void processDatabases(Connection conn, DatabaseInfoVO dbConnInfoVO) { String selectDbSql = "SELECT SCHEMA_NAME AS `Database` FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')"; try (Statement stmt = conn.createStatement(); ResultSet databases = stmt.executeQuery(selectDbSql)) { @@ -111,7 +117,7 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer { if (insertDbList > 0) { dbVo.setSysId(dbConnInfoVO.getSysId()); tableProcess(conn, dbVo); - comtProcess(conn, dbVo); + log.info("Database info successfully inserted for: {}", dbNm); } else { log.warn("No database info was inserted for: {}", dbNm); @@ -123,7 +129,7 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer { } - //psh + // 기관정보 테이블+컬럼 private void tableProcess(Connection conn, DatabaseInfoVO dbVo) throws SQLException { // String selectTableSql = "SELECT TABLE_NAME AS `TableName` FROM information_schema.tables WHERE table_schema="+dbNm+"and table_type=`BASE TABLE`"; DatabaseMetaData metaData = conn.getMetaData(); @@ -144,6 +150,7 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer { tbVo.setTableNm(tbNm); log.info("TableName :", tbNm); int insertTbCnt = dbService.insertDbTblInfo(tbVo); + comtProcess(conn, dbVo, tbVo); if (insertTbCnt > 0) { log.info("TABLE info successfully inserted for: {}", tbNm); @@ -185,69 +192,70 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer { - //psh - private void comtProcess(Connection conn, DatabaseInfoVO dbVo) throws SQLException { - DatabaseMetaData metaData = conn.getMetaData(); - try (ResultSet tables = metaData.getTables(null, dbVo.getDbNm(), null, new String[]{"TABLE"})){ - - // 원천데이터 추출 정보 저장 + // 원천데이터 처리 + private void comtProcess(Connection conn, DatabaseInfoVO dbVo, TableInfoVO tbVo) throws SQLException { + try { + // [ comtextrtblinfo ] 원천데이터 추출 정보 저장 ComtExtrtVO comExVo = new ComtExtrtVO(); comExVo.setSysId(dbVo.getSysId()); int extCnt = comtsrcdataService.insertComtExtrtInfo(comExVo); if (extCnt > 0) { - int checkSysId = dbVo.getSysId(); - log.info("comtExInfo insert success : ", checkSysId); - String dbNm = dbVo.getDbNm(); + String tbNm = tbVo.getTableNm(); - while (tables.next()) { - String tbNm = tables.getString("TABLE_NAME"); - if(tbNm.equals("sys_config")){ - break; + // [ comtsrcdatameta_new ] 원천테이블의 테이블 정보 저장 + ComtTableVO comtTableVo = new ComtTableVO(); + comtTableVo.setExtrId(comExVo.getExtrId()); + comtTableVo.setSrcDataTblNm(tbNm); + int insertTbCnt = comtsrcdataService.insertComtTabledataInfo(comtTableVo); + + if (insertTbCnt > 0) { + String selectTableSql = "SELECT * FROM "+dbNm+"."+tbNm; + Statement stmt = conn.createStatement(); + ResultSet datas = stmt.executeQuery(selectTableSql); + ResultSetMetaData rsmd = datas.getMetaData(); + int colCnt = rsmd.getColumnCount(); + JSONObject obj = new JSONObject(); + int insertDataCnt = 0; + int insertColCnt = 0; + + // [ comtsrcdatacol_new ] 원천테이블의 컬럼 정보 저장 + for (int i=0; i 0){ + while (datas.next()){ + Map dataVlMap = new HashMap<>(); + for (int i=0; i 0){ + log.info("all data insert SUCCESS!!!!!!"); + }else{ + log.warn("No DATA was inserted for: {}", tbNm); + } + } + }else{ + log.warn("No COLUMN info was inserted for: {}", tbNm); + } + + }else{ + log.warn("No Table info was inserted for: {}", tbNm); } - - // 원천데이터 저장 - String selectTableSql = "SELECT * FROM "+dbNm+"."+tbNm; - Statement stmt = conn.createStatement(); - ResultSet datas = stmt.executeQuery(selectTableSql); - - while (datas.next()){ - int i = 0; - ComtsrcdataVO comSrcVo = new ComtsrcdataVO(); - comSrcVo.setExtrId(comExVo.getExtrId()); - String value = datas.getObject(i).toString(); -// comSrcVo.setSrcDataVl(); - - int insertTbCnt = comtsrcdataService.insertComtSrcdataInfo(comSrcVo); - i++; - } - - - -// if (insertTbCnt > 0) { -// -// log.info("COMTSRCDATA successfully inserted for: {}", tbNm); -// ResultSet columns = metaData.getColumns(null, dbVo.getDbNm(), tbNm, "%"); -// ResultSet pk = metaData.getPrimaryKeys(null, dbVo.getDbNm(), tbNm); - - // 컬럼 -// while (columns.next()) { -// String columnName = columns.getString(4); -// String columnType = columns.getString(6); -// boolean nullable = columns.getInt(11) == 0 ? false : true;; -// -// ColumnInfoVO colVo = new ColumnInfoVO(); -// dbService.insertTblColInfo(colVo); -// System.out.println("\tColumn: " + columnName+ " (" + columnType + ")"); -// } - -// } else { -// log.warn("No TABLE info was inserted for: {}", tbNm); -// } - - } - } } catch (Exception e) { diff --git a/src/main/resources/egovframework/sqlmap/mtdata/mappers/comtsrcdata/Comtsrcdata_SQL.xml b/src/main/resources/egovframework/sqlmap/mtdata/mappers/comtsrcdata/Comtsrcdata_SQL.xml index 6e8dc1d..a978c04 100644 --- a/src/main/resources/egovframework/sqlmap/mtdata/mappers/comtsrcdata/Comtsrcdata_SQL.xml +++ b/src/main/resources/egovframework/sqlmap/mtdata/mappers/comtsrcdata/Comtsrcdata_SQL.xml @@ -26,35 +26,31 @@ (#{extrId}, CURRENT_TIMESTAMP, #{sysId}) - - - - SELECT nextval('comtsrcdata_extr_tbl_id_seq') as srcDataId - - insert into comtsrcdata - (src_data_id, extr_id, src_data_vl) - values - (#{srcDataId}, #{extrId}, #{srcDataVl}) - - - - - SELECT nextval('comtsrcdatameta_src_data_meta_id_seq') as srcDataId + + SELECT nextval('comtsrcdatameta_new_src_data_meta_id_seq') as srcDataMetaId - insert into comtsrcdatameta (src_data_meta_id, src_data_id, src_data_tbl_nm) - values (#{srcDataMetaId}, #{srcDataId}, #{srcDataTblNm}) + insert into comtsrcdatameta_new (src_data_meta_id, extr_id, src_data_tbl_nm) + values (#{srcDataMetaId}, #{extrId}, #{srcDataTblNm}) - SELECT nextval('comtsrcdata_extr_tbl_id_seq') as srcDataId + SELECT nextval('comtsrcdata_new_src_data_id_seq') as srcDataId - insert into comtsrcdata (src_data_id, extr_id, src_data_vl) - values (#{srcDataId}, #{extrId}, ( (#{srcDataVl})::jsonb ) ) + insert into comtsrcdata_new (src_data_id, src_data_meta_id, src_data_vl) + values (#{srcDataId}, #{srcDataMetaId}, ( (#{srcDataVl})::jsonb ) ) + + + SELECT nextval('comtsrcdatacol_new_src_data_col_id_seq') as srcDataColId + + insert into comtsrcdatacol_new (src_data_col_id, src_data_meta_id, src_data_col_nm) + values (#{srcDataColId}, #{srcDataMetaId}, #{srcDataColNm} ) + + update comtsrcdata set src_data_vl= ( (#{srcDataVl})::jsonb )