From bd78ee158df93958380a6cc2460316fd87ed9713 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 화, 08 2월 2022 11:39:08 +0900
Subject: [PATCH] - 이슈 임포트 시 IP주소 정규식 표현 체크 - 업체 추가 시 url을 입력하지 않을 경우 중복 체크 하는 오류 수정

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java        |   20 +++++++++++++++++---
 src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java |   20 +++++++++++---------
 src/main/java/kr/wisestone/owl/constant/MsgConstants.java                |    1 +
 src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties                   |    1 +
 4 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
index 7a9959e..cfa94ca 100644
--- a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
+++ b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
@@ -185,6 +185,7 @@
     public static final String EXCEL_IMPORT_DATETIME_NOT_DASH = "EXCEL_IMPORT_DATETIME_NOT_DASH"; //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 �엯�젰�븳 �궗�슜�옄 �젙�쓽 �븘�뱶�뿉 臾몄젣媛� �엳�뒿�땲�떎. '-'�씠 �룷�븿�릺�뼱 �엳�뒗吏� �솗�씤 �썑 '-'瑜� �룷�븿 �떆耳쒖<�꽭�슂. ex) 2022-01-01
     public static final String EXCEL_CUSTOM_FIELD_VALUE_NOT_VALIDITY = "EXCEL_CUSTOM_FIELD_VALUE_NOT_VALIDITY"; //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 �엯�젰�븳 �궗�슜�옄 �젙�쓽 �븘�뱶 媛믪씠 �쑀�슚�븯吏� �븡�뒿�땲�떎.
     public static final String EXCEL_IMPORT_HEADER_CUSTOM_FIELD_NOT_EXIST = "EXCEL_IMPORT_HEADER_CUSTOM_FIELD_NOT_EXIST";   //  �벑濡앺븯�젮�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶瑜� 李얠쓣 �닔 �뾾�뒿�땲�떎. �빐�떦 �궗�슜�옄 �젙�쓽�븘�뱶�쓽 �씠由꾩씠 蹂�寃쎈릺�뿀嫄곕굹 �궘�젣�릺�뿀�뒿�땲�떎.
+    public static final String EXCEL_IMPORT_IP_ADDRESS_NOT_VALIDITY = "EXCEL_IMPORT_IP_ADDRESS_NOT_VALIDITY"; //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 �엯�젰�븳 �궗�슜�옄 �젙�쓽 �븘�뱶 以� IP_ADDRESS �뿉 臾몄젣媛� �엳�뒿�땲�떎. IP二쇱냼 �삎�떇�뿉 留욊쾶 �엯�젰 �빐二쇱꽭�슂.
 
     public static final String EXCEL_IMPORT_COMPANY_NAME_IS_NULL = "EXCEL_IMPORT_COMPANY_NAME_IS_NULL";   //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 �뾽泥대챸�씠 �엯�젰吏� �븡�븯�뒿�땲�떎.
     public static final String EXCEL_IMPORT_URL_IS_NULL = "EXCEL_IMPORT_URL_IS_NULL";   //  �떎�쓬 �뿊�� �씪�씤�뿉�꽌 URL�씠 �엯�젰吏� �븡�븯�뒿�땲�떎.
diff --git a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
index eda71d1..f0b018b 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -116,16 +116,18 @@
             throw new OwlRuntimeException(
                     this.messageAccessor.getMessage(MsgConstants.COMPANY_NOT_URL));
         }*/
-        CompanyField companyField;
-        if(id == null){
-            companyField = this.companyFieldRepository.findByUrl(url);
-        } else {
-            companyField = this.companyFieldRepository.findByUrlAndIdNot(url,id);
-        }
+        if (!StringUtils.isEmpty(url)) {
+            CompanyField companyField;
+            if(id == null){
+                companyField = this.companyFieldRepository.findByUrl(url);
+            } else {
+                companyField = this.companyFieldRepository.findByUrlAndIdNot(url,id);
+            }
 
-        if (companyField != null) {
-            throw new OwlRuntimeException(
-                    this.messageAccessor.getMessage(MsgConstants.COMPANY_USED_URL));
+            if (companyField != null) {
+                throw new OwlRuntimeException(
+                        this.messageAccessor.getMessage(MsgConstants.COMPANY_USED_URL));
+            }
         }
     }
 
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
index 7724e79..d5410b4 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -49,9 +49,9 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.regex.Pattern;
 
-import static kr.wisestone.owl.domain.enumType.CustomFieldType.DATETIME;
-import static kr.wisestone.owl.domain.enumType.CustomFieldType.INPUT;
+import static kr.wisestone.owl.domain.enumType.CustomFieldType.*;
 
 @Service
 public class IssueServiceImpl extends AbstractServiceImpl<Issue, Long, JpaRepository<Issue, Long>> implements IssueService {
@@ -3765,7 +3765,8 @@
                             this.messageAccessor.getMessage(MsgConstants.CUSTOM_FIELD_TEXT_TYPE_MAX_LENGTH_OUT));
                 }
 
-                if (customField.getCustomFieldType() == DATETIME) { //DATETIME�씪 寃쎌슦 format 蹂�寃�
+                //DATETIME�씪 寃쎌슦 format 蹂�寃�
+                if (customField.getCustomFieldType() == DATETIME) {
                     Date date = DateUtil.convertStrToDate(cellValue);
                     if (date == null) {
                         throw new OwlRuntimeException(
@@ -3773,6 +3774,19 @@
                     }
                 }
 
+                //IP_ADDRESS�씪 寃쎌슦 �젙洹쒗몴�쁽�떇 泥댄겕
+                if (customField.getCustomFieldType() == IP_ADDRESS) {
+                    String regExp = "^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\."
+                            + "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\."
+                            + "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\."
+                            + "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
+
+                    if (!cellValue.matches(regExp)) {
+                        throw new OwlRuntimeException(
+                                this.messageAccessor.getMessage(MsgConstants.EXCEL_IMPORT_IP_ADDRESS_NOT_VALIDITY, rowIndex));
+                    }
+                }
+
                 issueCustomFieldMap.put("customFieldId", customField.getId());
                 issueCustomFieldMap.put("useValue", cellValue);
                 issueForm.addIssueCustomFields(issueCustomFieldMap);
diff --git a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
index 4a090e3..17789f2 100644
--- a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
+++ b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
@@ -180,6 +180,7 @@
 EXCEL_IMPORT_SEVERITY_NOT_EXIST=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uB41C \uC911\uC694\uB3C4 \uBA85\uC73C\uB85C \uAC80\uC0C9\uB418\uB294 \uC6B0\uC120\uC21C\uC704\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
 EXCEL_IMPORT_PERIOD_NOT_VALID=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uD55C \uC2DC\uC791\uC77C, \uC885\uB8CC\uC77C\uC5D0 \uBB38\uC81C\uAC00 \uC788\uC2B5\uB2C8\uB2E4. \uD615\uC2DD\uC5D0 \uB9DE\uAC8C \uC785\uB825 \uD588\uB294\uC9C0 \uD655\uC778 \uD574\uC8FC\uC138\uC694. \n \uB77C\uC778 \uC815\uBCF4 : {0}
 EXCEL_CUSTOM_FIELD_VALUE_NOT_VALIDITY=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uD55C \uC0AC\uC6A9\uC790 \uC815\uC758 \uD544\uB4DC \uAC12\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
+EXCEL_IMPORT_IP_ADDRESS_NOT_VALIDITY=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uD55C \uC0AC\uC6A9\uC790 \uC815\uC758 \uD544\uB4DC \uC911 IP_ADDRESS\uC5D0 \uBB38\uC81C\uAC00 \uC788\uC2B5\uB2C8\uB2E4. IP\uC8FC\uC18C \uD615\uC2DD\uC5D0 \uB9DE\uAC8C \uC785\uB825 \uD574\uC8FC\uC138\uC694. \n \uB77C\uC778 \uC815\uBCF4 : {0}
 EXCEL_IMPORT_HEADER_CUSTOM_FIELD_NOT_EXIST=\uB4F1\uB85D\uD558\uB824\uB294 \uC0AC\uC6A9\uC790 \uC815\uC758 \uD544\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uD574\uB2F9 \uC0AC\uC6A9\uC790 \uC815\uC758\uD544\uB4DC\uC758 \uC774\uB984\uC774 \uBCC0\uACBD\uB418\uC5C8\uAC70\uB098 \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
 EXCEL_IMPORT_PERIOD_NOT_VALIDITY= \uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uD55C \uC2DC\uC791\uC77C, \uC885\uB8CC\uC77C\uC5D0 \uBB38\uC81C\uAC00 \uC788\uC2B5\uB2C8\uB2E4. \uC2DC\uC791\uC77C\uC740 \uC885\uB8CC\uC77C\uBCF4\uB2E4 \uBE68\uB77C\uC57C \uD569\uB2C8\uB2E4. \n \uB77C\uC778 \uC815\uBCF4 : {0}
 EXCEL_IMPORT_PERIOD_NOT_VALIDITY_EMPTY=\uB2E4\uC74C \uC5D1\uC140 \uB77C\uC778\uC5D0\uC11C \uC785\uB825\uD55C \uC2DC\uC791\uC77C, \uC885\uB8CC\uC77C\uC5D0 \uBB38\uC81C\uAC00 \uC788\uC2B5\uB2C8\uB2E4. \uACF5\uBC31\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uB294\uC9C0 \uD655\uC778 \uD6C4 \uACF5\uBC31\uC744 \uC81C\uAC70\uD558\uC138\uC694. \n \uB77C\uC778 \uC815\uBCF4 : {0}

--
Gitblit v1.8.0