OWL ITS + 탐지시스템(인터넷 진흥원)
src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -84,30 +84,41 @@
        //  업체명 중복 체크
        this.verifyTitle(companyFieldForm.getName(), null);
        if (companyFieldForm.getIpStart() != null && companyFieldForm.getIpEnd() != null) {
            //  아이피 유효성 체크
            this.verifyIp(companyFieldForm.getIpStart(), companyFieldForm.getIpEnd(), null);
        }
        if (companyFieldForm.getUrl() != null) {
            //  url 유효성 체크
            this.verifyUrl(companyFieldForm.getUrl(), null);
        }
        if (companyFieldForm.getIpStarts() != null && companyFieldForm.getIpStarts().size() > 0
                && companyFieldForm.getIpEnds() != null && companyFieldForm.getIpEnds().size() > 0) {
            for (int i=0; i<companyFieldForm.getIpStarts().size(); i++) {
                //  아이피 유효성 체크
                this.verifyIp(companyFieldForm.getIpStarts().get(i), companyFieldForm.getIpEnds().get(i), null);
            }
            String startIps = companyFieldForm.getIpStarts().toString();
            //  대괄호 제거
            startIps = this.removeSquare(startIps);
            companyFieldForm.setIpStart(startIps.trim());
            String endIps = companyFieldForm.getIpEnds().toString();
            //  대괄호 제거
            endIps = this.removeSquare(endIps);
            companyFieldForm.setIpEnd(endIps.trim());
        }
        if (companyFieldForm.getTelList() != null && companyFieldForm.getTelList().size() > 0) {
            String tels = companyFieldForm.getTelList().toString();
            if (tels.contains("[")) {
                tels = tels.substring(1, tels.indexOf("]"));
            }
            //  대괄호 제거
            tels = this.removeSquare(tels);
            companyFieldForm.setTel(tels.trim());
        }
        if (companyFieldForm.getEmailList() != null && companyFieldForm.getEmailList().size() > 0) {
            String emails = companyFieldForm.getEmailList().toString();
            String email = "";
            if (emails.contains("[")) {
                email = emails.substring(1, emails.indexOf("]"));
            }
            companyFieldForm.setEmail(email.trim());
            //  대괄호 제거
            emails = this.removeSquare(emails);
            companyFieldForm.setEmail(emails.trim());
        }
        CompanyField companyField = ConvertUtil.copyProperties(companyFieldForm, CompanyField.class);
@@ -116,8 +127,23 @@
    }
    /**
     * 대괄호([]) 제거 함수
     * @param str String
     * @return str
     */
    private String removeSquare(String str) {
        if (str.contains("[")) {
            str = str.substring(1, str.indexOf("]"));
        }
        return str;
    }
    /**
     * IP 유효성 체크
     * @param ip String
     * @param ip2 String
     * @param id Long
     */
    private void verifyIp(String ip, String ip2, Long id) {
        if (!StringUtils.isEmpty(ip)) {
@@ -146,14 +172,76 @@
            condition.setIpEnd(String.valueOf(ipEnd));
            if (id != null) {
                condition.setId(id);
                companyFields = this.companyFieldMapper.findByIpsAndIdNot(condition);
                companyFields = this.companyFieldRepository.findByIdNot(condition.getId());
            } else {
                companyFields = this.companyFieldMapper.findByIps(condition);
                companyFields = this.companyFieldRepository.findAll();
            }
            //  IP대역대 중복 체크
            if (companyFields != null && companyFields.size() > 0) {
            this.ipOverlapChk(companyFields, ipStart, ipEnd);
            /*if (companyFields != null && companyFields.size() > 0) {
                throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.COMPANY_EXIST_IP));
            }*/
        }
    }
    /**
     * ip 대역대 중복 체크
     * @param companyFields List<CompanyField>
     */
    private void ipOverlapChk(List<CompanyField> companyFields, long ipStart, long ipEnd) {
        String[] ipStartArr = null;
        String[] ipEndArr = null;
        List<String> startIpList = Lists.newArrayList();
        List<String> endIpList = Lists.newArrayList();
        String startIp = "";
        String endIp = "";
        List<Long> startIps = Lists.newArrayList();
        List<Long> endIps = Lists.newArrayList();
        if (companyFields.size() > 0) {
            for (CompanyField companyField : companyFields) {
                if(companyField.getIpStart() != null && companyField.getIpEnd() != null) {
                    startIp = companyField.getIpStart();
                    if (startIp.contains(" ")) {
                        startIp = startIp.replace(" ","");
                    }
                    if (startIp.contains(",")) {
                        ipStartArr = startIp.split(",");
                        startIpList.addAll(Arrays.asList(ipStartArr));
                    } else {
                        startIpList.add(startIp.trim());
                    }
                    endIp = companyField.getIpEnd();
                    if (endIp.contains(" ")) {
                        endIp = endIp.replace(" ","");
                    }
                    if (endIp.contains(",")) {
                        ipEndArr = endIp.split(",");
                        endIpList.addAll(Arrays.asList(ipEndArr));
                    } else {
                        endIpList.add(endIp.trim());
                    }
                }
            }
            if (startIpList.size() > 0) {
                for (String ipS : startIpList) {
                    long start = ConvertUtil.ipToLong(ipS);
                    startIps.add(start);
                }
                for (String ipE : endIpList) {
                    long end = ConvertUtil.ipToLong(ipE);
                    endIps.add(end);
                }
            }
            for (int i=0; i<startIps.size(); i++) {
                if (startIps.get(i) >= ipStart && startIps.get(i) <= ipEnd || endIps.get(i) >= ipStart && endIps.get(i) <= ipEnd
                    || ipStart >= startIps.get(i) && ipStart <= endIps.get(i) || ipEnd >= startIps.get(i) && ipEnd <= endIps.get(i)) {
                    throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.COMPANY_EXIST_IP));
                }
            }
        }
    }
@@ -297,28 +385,40 @@
        //  업체명 유효성 체크
        this.verifyTitle(companyFieldForm.getName(), companyFieldForm.getId());
        if (companyFieldForm.getIpStart() != null && companyFieldForm.getIpEnd() != null) {
            //  아이피 유효성 체크
            this.verifyIp(companyFieldForm.getIpStart(), companyFieldForm.getIpEnd(), companyFieldForm.getId());
        }
        if (companyFieldForm.getUrl() != null) {
            //  url 유효성 체크
            this.verifyUrl(companyFieldForm.getUrl(), companyFieldForm.getId());
        }
        if (companyFieldForm.getIpStarts() != null && companyFieldForm.getIpStarts().size() > 0
                && companyFieldForm.getIpEnds() != null && companyFieldForm.getIpEnds().size() > 0) {
            for (int i=0; i<companyFieldForm.getIpStarts().size(); i++) {
                //  아이피 유효성 체크
                this.verifyIp(companyFieldForm.getIpStarts().get(i), companyFieldForm.getIpEnds().get(i), companyFieldForm.getId());
            }
            String startIps = companyFieldForm.getIpStarts().toString();
            //  대괄호 제거
            startIps = this.removeSquare(startIps);
            companyFieldForm.setIpStart(startIps.trim());
            String endIps = companyFieldForm.getIpEnds().toString();
            //  대괄호 제거
            endIps = this.removeSquare(endIps);
            companyFieldForm.setIpEnd(endIps.trim());
        }
        if (companyFieldForm.getTelList() != null && companyFieldForm.getTelList().size() > 0) {
            String tels = companyFieldForm.getTelList().toString();
            if (tels.contains("[")) {
                tels = tels.substring(1, tels.indexOf("]"));
            }
            //  대괄호 제거
            tels = this.removeSquare(tels);
            companyFieldForm.setTel(tels.trim());
        }
        if (companyFieldForm.getEmailList() != null && companyFieldForm.getEmailList().size() > 0) {
            String emails = companyFieldForm.getEmailList().toString();
            if (emails.contains("[")) {
                emails = emails.substring(1, emails.indexOf("]"));
            }
            //  대괄호 제거
            emails = this.removeSquare(emails);
            companyFieldForm.setEmail(emails.trim());
        }