Class RuleServiceImpl

  • All Implemented Interfaces:
    RuleService

    @Service
    @PropertySource("classpath:properties/directory.properties")
    public class RuleServiceImpl
    extends java.lang.Object
    implements RuleService
    전사규칙에 관한 Service 구현 클래스
    Version:
    1.0
    Author:
    Yeonhee Kim
    • Constructor Summary

      Constructors 
      Constructor Description
      RuleServiceImpl()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void closeThread​(java.util.concurrent.ExecutorService executor, java.util.List<java.util.concurrent.Future<?>> futures)
      스레드 작업이 종료될 때까지 기다리고 Task를 종료함
      int deleteCustomLibrary​(CustomLibrary customLibrary)
      해당되는 커스텀 라이브러리 파일을 삭제하고 DB에서도 삭제함
      void deleteJavaClassFile​(java.lang.String fileName)
      자바 파일과 클래스 파일을 삭제함(삭제하지 않으면 컴파일 오류시 이전에 컴파일 성공한 클래스 파일을 읽음)
      int deleteRule​(java.lang.String level, Rule rule)
      대분류/중분류/소분류 아이디로 해당되는 항목을 삭제함
      java.util.List<CustomLibrary> getAllCustomLibraryByCreator​(java.lang.String creator)
      사용자 아이디로 사용자가 추가한 커스텀 라이브러리 목록을 가져옴
      java.util.List<RuleLog> getAllRuleLogDetailByUsingLogNo​(int using_log_no)
      사용 기록 번호로 디테일한 룰 로그 목록을 가져옴
      java.util.Map<java.lang.String,​java.lang.Object> getApiDesc​(int class_id)
      클래스 아이디로 클래스 정보, 필드 정보, 생성자 정보, 메소드 정보를 가져옴
      ResponseData getPrevRuleVersionList​(int bottom_level_id, java.lang.String function_name, int current_page_no, int count_per_page, int count_per_list, java.lang.String search_word)
      해당되는 룰의 버전 관리 목록을 페이징 처리하여 가져옴
      Rule getRuleBottomLevel​(int bottom_level_id)
      bottom level id 로 룰 가져오기
      java.util.List<Rule> getRuleCategory​(java.lang.String top_level_id, java.lang.String middle_level_id)
      전사규칙 대분류, 중분류, 소분류 카테고리 리스트를 반환함
      java.util.List<Rule> getRuleChange​(int bottom_level_id, int prev_bottom_level_id)
      룰의 버전별 변화(수정 전/수정 후)를 가져옴
      java.util.List<Rule> getRuleList​(java.lang.String top_level_id, java.lang.String middle_level_id, java.lang.String bottom_level_id)
      해당되는 전사규칙 리스트를 가지고 옴
      ResponseData getRuleListByPaging​(java.lang.String rule_type, java.lang.String top_level_id, java.lang.String middle_level_id, java.lang.String bottom_level_id, java.lang.String function_name, int current_page_no, int count_per_page, int count_per_list, java.lang.String search_word)
      선택된 카테고리에 해당되는 전사규칙 리스트를 조인해서 가져옴
      ResponseData getRuleLog​(int using_log_no, java.lang.String function_name, int current_page_no, int count_per_page, int count_per_list, java.lang.String search_word, java.lang.String log_type, java.util.Map<java.lang.String,​java.lang.Object> searchMap)
      룰 로그 테이블을 페이징 처리하여 가져옴
      java.lang.String getStringOfException​(java.lang.Exception e)
      예외 발생시 예외를 문자열로 바꿔서 리턴함
      java.lang.String registerCustomLibrary​(CustomLibrary customLibrary)
      사용자가 import하고자 하는 커스텀 라이브러리를 등록함
      int registerRule​(java.lang.String level, Rule rule)
      대분류/중분류/소분류를 DB에 등록함
      void runRuleCompiler​(java.util.List<Rule> list)
      Rule 클래스 파일을 실행시킴
      java.util.Map<java.lang.String,​java.lang.Object> updateRuleContents​(java.lang.String presentVersion, Rule rule)
      사용자가 입력한 Rule 코드를 DB에 업데이트함
      void uploadCustomLibrary​(java.util.List<org.springframework.web.multipart.MultipartFile> customFile, java.lang.String class_package)
      사용자가 import하고자 하는 커스텀 라이브러리 파일을 업로드함
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • RuleServiceImpl

        public RuleServiceImpl()
    • Method Detail

      • getRuleCategory

        public java.util.List<Rule> getRuleCategory​(java.lang.String top_level_id,
                                                    java.lang.String middle_level_id)
        전사규칙 대분류, 중분류, 소분류 카테고리 리스트를 반환함
        Specified by:
        getRuleCategory in interface RuleService
        Parameters:
        top_level_id - 전사규칙 대분류 아이디
        middle_level_id - 전사규칙 중분류 아이디
        Returns:
        전사규칙 대분류, 중분류, 소분류 카테고리 리스트
      • getRuleList

        public java.util.List<Rule> getRuleList​(java.lang.String top_level_id,
                                                java.lang.String middle_level_id,
                                                java.lang.String bottom_level_id)
        해당되는 전사규칙 리스트를 가지고 옴
        Specified by:
        getRuleList in interface RuleService
        Parameters:
        top_level_id - 전사규칙 대분류 아이디
        middle_level_id - 전사규칙 중분류 아이디
        bottom_level_id - 전사규칙 소분류 아이디
        Returns:
        해당되는 전사규칙 리스트
      • getRuleListByPaging

        public ResponseData getRuleListByPaging​(java.lang.String rule_type,
                                                java.lang.String top_level_id,
                                                java.lang.String middle_level_id,
                                                java.lang.String bottom_level_id,
                                                java.lang.String function_name,
                                                int current_page_no,
                                                int count_per_page,
                                                int count_per_list,
                                                java.lang.String search_word)
        선택된 카테고리에 해당되는 전사규칙 리스트를 조인해서 가져옴
        Specified by:
        getRuleListByPaging in interface RuleService
        Parameters:
        rule_type - 룰 타입(전체/SQL/메서드)
        top_level_id - 전사규칙 대분류 아이디
        middle_level_id - 전사규칙 중분류 아이디
        bottom_level_id - 전사규칙 소분류 아이디
        function_name - 페이지의 번호를 클릭했을 때 호출되는 자바스크립트 함수명 또는 게시글 조회를 요청하는 함수명을 저장할 변수
        current_page_no - 현재 화면에 출력되고 있는 페이지 번호 또는 페이지의 번호를 클릭했을 때에 번호를 저장할 변수
        count_per_page - 한 화면에 출력되는 페이지의 수를 저장할 변수
        count_per_list - 한 화면에 출력되는 게시글의 수를 저장할 변수
        search_word - 검색어
        Returns:
        선택된 카테고리에 해당되는 전사규칙 테이블
      • getRuleLog

        public ResponseData getRuleLog​(int using_log_no,
                                       java.lang.String function_name,
                                       int current_page_no,
                                       int count_per_page,
                                       int count_per_list,
                                       java.lang.String search_word,
                                       java.lang.String log_type,
                                       java.util.Map<java.lang.String,​java.lang.Object> searchMap)
        룰 로그 테이블을 페이징 처리하여 가져옴
        Specified by:
        getRuleLog in interface RuleService
        Parameters:
        using_log_no - RuleLog 테이블의 외래키인 using_log_no
        function_name - 페이지의 번호를 클릭했을 때 호출되는 자바스크립트 함수명 또는 게시글 조회를 요청하는 함수명을 저장할 변수
        current_page_no - 현재 화면에 출력되고 있는 페이지 번호 또는 페이지의 번호를 클릭했을 때에 번호를 저장할 변수
        count_per_page - 한 화면에 출력되는 페이지의 수를 저장할 변수
        count_per_list - 한 화면에 출력되는 게시글의 수를 저장할 변수
        search_word - 검색어
        log_type - 상세 검색 타입(사용자 아이디/사용 내역/IP 주소/접속 시간) 중 하나
        searchMap - 상세 검색어(사용자 아이디/사용 내역/IP 주소/접속 시간) 값을 담고 있는 Map
        Returns:
        룰 로그 테이블
      • getPrevRuleVersionList

        public ResponseData getPrevRuleVersionList​(int bottom_level_id,
                                                   java.lang.String function_name,
                                                   int current_page_no,
                                                   int count_per_page,
                                                   int count_per_list,
                                                   java.lang.String search_word)
        해당되는 룰의 버전 관리 목록을 페이징 처리하여 가져옴
        Specified by:
        getPrevRuleVersionList in interface RuleService
        Parameters:
        bottom_level_id - 룰 소분류 아이디
        function_name - 페이지의 번호를 클릭했을 때 호출되는 자바스크립트 함수명 또는 게시글 조회를 요청하는 함수명을 저장할 변수
        current_page_no - 현재 화면에 출력되고 있는 페이지 번호 또는 페이지의 번호를 클릭했을 때에 번호를 저장할 변수
        count_per_page - 한 화면에 출력되는 페이지의 수를 저장할 변수
        count_per_list - 한 화면에 출력되는 게시글의 수를 저장할 변수
        search_word - 검색어
        Returns:
        해당되는 룰의 버전 관리 목록
      • getRuleChange

        public java.util.List<Rule> getRuleChange​(int bottom_level_id,
                                                  int prev_bottom_level_id)
        룰의 버전별 변화(수정 전/수정 후)를 가져옴
        Specified by:
        getRuleChange in interface RuleService
        Parameters:
        bottom_level_id - 룰 소분류 아이디
        prev_bottom_level_id - 룰 버전 관리 목록 아이디
        Returns:
        룰의 버전별 변화(수정 전/수정 후)
      • getAllRuleLogDetailByUsingLogNo

        public java.util.List<RuleLog> getAllRuleLogDetailByUsingLogNo​(int using_log_no)
        사용 기록 번호로 디테일한 룰 로그 목록을 가져옴
        Specified by:
        getAllRuleLogDetailByUsingLogNo in interface RuleService
        Parameters:
        using_log_no - 사용 기록 번호
        Returns:
        디테일한 룰 로그 목록
      • registerRule

        public int registerRule​(java.lang.String level,
                                Rule rule)
        대분류/중분류/소분류를 DB에 등록함
        Specified by:
        registerRule in interface RuleService
        Parameters:
        level - 해당되는 분류(대분류/중분류/소분류)
        rule - DB 등록을 위한 Rule 객체
        Returns:
        DB에 등록한 row의 수
      • deleteRule

        public int deleteRule​(java.lang.String level,
                              Rule rule)
        대분류/중분류/소분류 아이디로 해당되는 항목을 삭제함
        Specified by:
        deleteRule in interface RuleService
        Parameters:
        level - 해당되는 분류(대분류/중분류/소분류)
        rule - 대분류/중분류/소분류 아이디
        Returns:
        DB에서 삭제한 row의 수
      • getRuleBottomLevel

        public Rule getRuleBottomLevel​(int bottom_level_id)
        bottom level id 로 룰 가져오기
        Specified by:
        getRuleBottomLevel in interface RuleService
        Parameters:
        bottom_level_id - 가져올 데이터의 bottom_level_id
        Returns:
        Rule
      • updateRuleContents

        public java.util.Map<java.lang.String,​java.lang.Object> updateRuleContents​(java.lang.String presentVersion,
                                                                                         Rule rule)
        사용자가 입력한 Rule 코드를 DB에 업데이트함
        Specified by:
        updateRuleContents in interface RuleService
        Parameters:
        rule - 코드 업데이트를 위한 Rule 객체
        presentVersion - 현재 룰 버전(버전을 수정했는지 검사할 때 사용)
        Returns:
        DB에 업데이트된 row의 수
      • runRuleCompiler

        public void runRuleCompiler​(java.util.List<Rule> list)
                             throws java.lang.Exception
        Rule 클래스 파일을 실행시킴
        Specified by:
        runRuleCompiler in interface RuleService
        Parameters:
        list - Rule 목록
        Throws:
        java.lang.Exception - 예외
      • getStringOfException

        public java.lang.String getStringOfException​(java.lang.Exception e)
        예외 발생시 예외를 문자열로 바꿔서 리턴함
        Parameters:
        e - 예외
        Returns:
        문자열로 변환된 예외
      • deleteJavaClassFile

        public void deleteJavaClassFile​(java.lang.String fileName)
        자바 파일과 클래스 파일을 삭제함(삭제하지 않으면 컴파일 오류시 이전에 컴파일 성공한 클래스 파일을 읽음)
        Parameters:
        fileName - 자바 및 클래스 파일명
      • getApiDesc

        public java.util.Map<java.lang.String,​java.lang.Object> getApiDesc​(int class_id)
        클래스 아이디로 클래스 정보, 필드 정보, 생성자 정보, 메소드 정보를 가져옴
        Specified by:
        getApiDesc in interface RuleService
        Parameters:
        class_id - DB 상의 클래스 아이디
        Returns:
        클래스에 관한 전반적인 정보를 담은 응답 객체
      • uploadCustomLibrary

        public void uploadCustomLibrary​(java.util.List<org.springframework.web.multipart.MultipartFile> customFile,
                                        java.lang.String class_package)
                                 throws java.lang.Exception
        사용자가 import하고자 하는 커스텀 라이브러리 파일을 업로드함
        Specified by:
        uploadCustomLibrary in interface RuleService
        Parameters:
        customFile - 사용자가 업로드한 커스텀 라이브러리 파일
        class_package - 커스텀 라이브러리 객체
        Throws:
        java.lang.Exception - 예외
      • registerCustomLibrary

        public java.lang.String registerCustomLibrary​(CustomLibrary customLibrary)
        사용자가 import하고자 하는 커스텀 라이브러리를 등록함
        Specified by:
        registerCustomLibrary in interface RuleService
        Parameters:
        customLibrary - 사용자가 업로드한 라이브러리
        Returns:
        DB에 추가된 row의 수
      • getAllCustomLibraryByCreator

        public java.util.List<CustomLibrary> getAllCustomLibraryByCreator​(java.lang.String creator)
        사용자 아이디로 사용자가 추가한 커스텀 라이브러리 목록을 가져옴
        Specified by:
        getAllCustomLibraryByCreator in interface RuleService
        Parameters:
        creator - 사용자 아이디
        Returns:
        사용자가 추가한 커스텀 라이브러리 목록
      • deleteCustomLibrary

        public int deleteCustomLibrary​(CustomLibrary customLibrary)
        해당되는 커스텀 라이브러리 파일을 삭제하고 DB에서도 삭제함
        Specified by:
        deleteCustomLibrary in interface RuleService
        Parameters:
        customLibrary - 삭제할 CustomLibrary 객체
        Returns:
        DB에서 삭제된 row의 수
      • closeThread

        public void closeThread​(java.util.concurrent.ExecutorService executor,
                                java.util.List<java.util.concurrent.Future<?>> futures)
        스레드 작업이 종료될 때까지 기다리고 Task를 종료함
        Parameters:
        executor - ExecutorService
        futures - Future 리스트