김준식 김준식 2024-02-07
240207 김준식 코드관리, 업무규칙관리 sql 검사 부분 수정
@35682a525d3cc52a49c60173665376a9b3534a75
pom.xml
--- pom.xml
+++ pom.xml
@@ -129,7 +129,7 @@
         <dependency>
             <groupId>com.github.jsqlparser</groupId>
             <artifactId>jsqlparser</artifactId>
-            <version>3.2</version>
+            <version>4.7</version>
         </dependency>
     </dependencies>
 
server/main/java/kr/co/takensoft/dataQuality/rule/service/CodeManagementService.java
--- server/main/java/kr/co/takensoft/dataQuality/rule/service/CodeManagementService.java
+++ server/main/java/kr/co/takensoft/dataQuality/rule/service/CodeManagementService.java
@@ -46,14 +46,13 @@
             Statement statement = CCJSqlParserUtil.parse(sql);
 
             // SQL 문이 SELECT 문인지 확인
-            if (statement instanceof Select) {
+            if (statement instanceof Select && sql.toUpperCase().contains("FROM")) {
                 result = codeMgDAO.insertCode(params);
             }
         } catch (JSQLParserException e) {
             // SQL 문 파싱 오류 처리
             System.out.println("SQL 문 파싱 오류: " + e.getMessage());
         }
-        System.out.println("result : " + result);
         return result;
     }
 
@@ -71,7 +70,7 @@
             Statement statement = CCJSqlParserUtil.parse(sql);
 
             // SQL 문이 SELECT 문인지 확인
-            if (statement instanceof Select) {
+            if (statement instanceof Select && sql.toUpperCase().contains("FROM")) {
                 result = codeMgDAO.updateCode(params);
             }
         } catch (JSQLParserException e) {
server/main/java/kr/co/takensoft/dataQuality/rule/service/WorkRuleManagementService.java
--- server/main/java/kr/co/takensoft/dataQuality/rule/service/WorkRuleManagementService.java
+++ server/main/java/kr/co/takensoft/dataQuality/rule/service/WorkRuleManagementService.java
@@ -1,6 +1,10 @@
 package kr.co.takensoft.dataQuality.rule.service;
 
 import kr.co.takensoft.dataQuality.rule.dao.WorkRuleManagementDAO;
+import net.sf.jsqlparser.JSQLParserException;
+import net.sf.jsqlparser.parser.CCJSqlParserUtil;
+import net.sf.jsqlparser.statement.Statement;
+import net.sf.jsqlparser.statement.select.Select;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -81,9 +85,19 @@
     public int workRuleRegister(HashMap<String, Object> params){
         int result = 0;
         try{
-            result = wrManagementDAO.workRuleRegister(params);
-        } catch (Exception e){
+            String cnt = params.get("work_rule_cnt").toString(); // 건수 sql
+            String sql = params.get("work_rule_sql").toString(); // 분석 sql
+            // SQL 문 파싱
+            Statement cnt_statement = CCJSqlParserUtil.parse(cnt);
+            Statement sql_statement = CCJSqlParserUtil.parse(sql);
+            // SQL 문이 SELECT 문인지 확인
+            boolean compare = sql_statement instanceof Select && cnt_statement instanceof Select && sql.toUpperCase().contains("FROM") && cnt.toUpperCase().contains("FROM");
+            if(compare) {
+                result = wrManagementDAO.workRuleRegister(params);
+            }
+        } catch (JSQLParserException e){
             e.printStackTrace();
+            System.out.println("sql 파싱 오류 : " + e.getMessage());
         }
 
         return result;
@@ -98,9 +112,18 @@
     public int workRuleUpdate(HashMap<String, Object> params){
         int result = 0;
         try{
-            result = wrManagementDAO.workRuleUpdate(params);
-        } catch (Exception e){
-            e.printStackTrace();
+            String sql = params.get("work_rule_sql").toString();
+            String cnt = params.get("work_rule_cnt").toString();
+            //SQL 문 파싱
+            Statement sql_statement = CCJSqlParserUtil.parse(sql);
+            Statement cnt_statement = CCJSqlParserUtil.parse(cnt);
+            // SQL 문이 SELECT 문인지 확인
+            boolean compare = sql_statement instanceof Select && cnt_statement instanceof Select && sql.toUpperCase().contains("FROM") && cnt.toUpperCase().contains("FROM");
+            if(compare) {
+                result = wrManagementDAO.workRuleUpdate(params);
+            }
+        } catch (JSQLParserException e){
+            System.out.println("sql 파싱 오류 : " + e.getMessage());
         }
 
         return result;
Add a comment
List