OWL ITS + 탐지시스템(인터넷 진흥원)
src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -84,6 +84,11 @@
        //  업체명 중복 체크
        this.verifyTitle(companyFieldForm.getName(), null);
        if (companyFieldForm.getIpStart() != null && companyFieldForm.getIpEnd() != null) {
            //  아이피 유효성 체크
            this.verifyIp(companyFieldForm.getIpStart(), companyFieldForm.getIpEnd());
        }
        if (companyFieldForm.getUrl() != null) {
            //  url 유효성 체크
            this.verifyUrl(companyFieldForm.getUrl(), null);
@@ -110,6 +115,29 @@
        return companyField;
    }
    /**
     * IP 유효성 체크
     * @param ip String
     */
    private void verifyIp(String ip, String ip2) {
        if (ip2 == null) {
            if (!StringUtils.isEmpty(ip)) {
                if (!Pattern.matches("^(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]?)$", ip)) {
                    throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.IP_NOT_INVALID));
                }
            }
        } else {
            if (!StringUtils.isEmpty(ip)) {
                long ipStart = ConvertUtil.ipToLong(ip);
                long ipEnd = ConvertUtil.ipToLong(ip2);
                if (ipEnd < ipStart) {
                    throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.IP_START_NOT_LARGER_THAN_END));
                }
            }
        }
    }
    //  url 유효성 체크
    private void verifyUrl(String url, Long id) {
        /*if (StringUtils.isEmpty(url)) {
@@ -117,14 +145,33 @@
                    this.messageAccessor.getMessage(MsgConstants.COMPANY_NOT_URL));
        }*/
        if (!StringUtils.isEmpty(url)) {
            CompanyField companyField;
            if(id == null){
                companyField = this.companyFieldRepository.findByUrl(url);
            List<CompanyField> companyFieldList = Lists.newArrayList();
            CompanyFieldCondition condition = new CompanyFieldCondition();
            String[] urlArr = null;
            List<String> urls = Lists.newArrayList();
            if (url.contains(" ")) {
                url = url.replace(" ","");
            }
            if (url.contains(",")) {
                urlArr = url.split(",");
                urls.addAll(Arrays.asList(urlArr));
            } else {
                companyField = this.companyFieldRepository.findByUrlAndIdNot(url,id);
                urls.add(url);
            }
            if (companyField != null) {
            if (urls.size() > 0) {
                condition.setUrl(urls);
                if(id == null){
                    companyFieldList = this.companyFieldMapper.findByUrls(condition);
                } else {
                    condition.setId(id);
                    companyFieldList = this.companyFieldMapper.findByUrlsAndIdNot(condition);
                }
            }
            if (companyFieldList != null && companyFieldList.size() > 0) {
                throw new OwlRuntimeException(
                        this.messageAccessor.getMessage(MsgConstants.COMPANY_USED_URL));
            }
@@ -286,6 +333,8 @@
        excelInfo.setFileName(this.messageAccessor.message("common.registerExcelCompanyField")); // 엑셀로 업체 등록하기
        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.companyName"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 업체명
        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.companyUrl"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // url
        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.companyIpStart"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // ip 시작 주소
        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.companyIpEnd"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // ip 종료 주소
        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("isp.ispName"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // isp명
        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("Hosting.HostingName"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 호스팅명
        excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("companyField.companyTel"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // 연락처
@@ -422,6 +471,8 @@
                if (rowIndex > 1) {
                    //  업체로 등록하기 위해 CompanyFieldForm 에 데이터를 셋팅한다.
                    CompanyFieldForm newCompanyFieldForm = this.setCompanyFieldFormToExcelField(row, (rowIndex + 1), ispFieldMaps, hostingFieldMaps, companyTypeMaps, parentSectorMaps, childSectorMaps, regionMaps, statusMaps, headers);
                    //  ip 유효성 체크
                    this.verifyIp(newCompanyFieldForm.getIpStart(), newCompanyFieldForm.getIpEnd());
                    companyFieldForms.add(newCompanyFieldForm);
                }
@@ -526,63 +577,95 @@
                    break;
                case 2:
                    //  ip시작주소
                    this.setCompanyFormIpStart(cellStr, companyFieldForm, isNull);
                    break;
                case 3:
                    //  ip종료주소
                    this.setCompanyFormIpEnd(cellStr, companyFieldForm, isNull);
                    break;
                case 4:
                    // isp명
                    this.setCompanyFormIspName(cellStr, ispFieldMaps, companyFieldForm, rowIndex, isNull);
                    break;
                case 3:
                case 5:
                    // 호스팅명
                    this.setCompanyFormHostingName(cellStr, hostingFieldMaps, companyFieldForm, rowIndex, isNull);
                    break;
                case 4:
                case 6:
                    // 연락처
                    telTypeCheck(cell, rowIndex);
                    this.setCompanyFormTel(cellStr, companyFieldForm, isNull);
                    break;
                case 5:
                case 7:
                    // 이메일
                    this.setCompanyFormEmail(cellStr, companyFieldForm, isNull);
                    break;
                case 6:
                case 8:
                    // 담당자
                    this.setCompanyFormManager(cellStr, companyFieldForm, isNull);
                    break;
                case 7:
                case 9:
                    // 기업구분
                    this.setCompanyFormCompanyType(cellStr, companyTypeMaps, companyFieldForm, rowIndex, isNull);
                    break;
                case 8:
                case 10:
                    // 업종(대분류)
                    this.setCompanyFormParentSector(cellStr, parentSectorMaps, companyFieldForm, rowIndex, isNull);
                    break;
                case 9:
                case 11:
                    // 업종(중분류)
                    this.setCompanyFormChildSector(cellStr, childSectorMaps, companyFieldForm, rowIndex, isNull);
                    break;
                case 10:
                case 12:
                    // 지역
                    this.setCompanyFormRegion(cellStr, regionMaps, companyFieldForm, rowIndex, isNull);
                    break;
                case 11:
                case 13:
                    // 상태
                    this.setCompanyFormStatus(cellStr, statusMaps, companyFieldForm, isNull);
                    break;
                case 12:
                case 14:
                    // 비고
                    this.setCompanyFormMemo(cellStr, companyFieldForm, isNull);
            }
        }
        return companyFieldForm;
    }
    private void setCompanyFormIpEnd(String ipEnd, CompanyFieldForm companyFieldForm, boolean isNull) {
        if (!isNull) {
            if (ipEnd.contains(" ")) {
                ipEnd = ipEnd.replace(" ", "");
            }
            this.verifyIp(ipEnd, null); //ip 유효성 검사
            companyFieldForm.setIpEnd(ipEnd);
        }
    }
    private void setCompanyFormIpStart(String ipStart, CompanyFieldForm companyFieldForm, boolean isNull) {
        if (!isNull) {
            if (ipStart.contains(" ")) {
                ipStart = ipStart.replace(" ", "");
            }
            this.verifyIp(ipStart, null); //ip 유효성 검사
            companyFieldForm.setIpStart(ipStart);
        }
    }
    private void setCompanyFormMemo(String cellStr, CompanyFieldForm companyFieldForm, boolean isNull) {
@@ -823,6 +906,7 @@
        excelInfo.addAttrInfos(new ExportExcelAttrVo("tel", this.messageAccessor.message("companyField.companyTel"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("email", this.messageAccessor.message("companyField.companyEmail"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("url", this.messageAccessor.message("companyField.companyUrl"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("ipRange", this.messageAccessor.message("companyField.companyIp"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("companyTypeName", this.messageAccessor.message("companyField.companyTypeName"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("parentSectorName", this.messageAccessor.message("companyField.parentSectorName"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("childSectorName", this.messageAccessor.message("companyField.childSectorName"), 10, ExportExcelAttrVo.ALIGN_CENTER));