Skip to content

Commit

Permalink
KOMORANAdmin을 KOMORAN repository로 통합 (#106)
Browse files Browse the repository at this point in the history
* initial commit

* migrated from 9bow/DictAdmin

* GitHub 이슈 템플릿 추가

* README 개선

* URL 수정

* README 개선

* KOMORAN 버전 수정

* 누락된 css/js 파일 추가

* 에러 메시지 출력 방법 개선 및 입력값 검증 추가 related #5 & #4

* Exception 메시지 변경

* 파일 업로드 시 문제 해결 방법 변경 related #2

* 에러 메시지 노출

* 테이블 이름 대소문자 구분

* 사용자 사전 관리 기능 추가 closes #6

* 저장소 경로를 변경합니다.

* ID 생성 방법 통일

* 띄어쓰기 수정

* DicWord 테스트 정리

* DicUser 테스트 추가

* 예외 케이스 추가

* 오타 및 품사 표시 방법 수정

* .gitignore 업데이트

* grammar.in 관리기능 추가

* GrammarIn 테스트 코드 추가

* 메뉴 정리

* 메뉴 정리, favicon 변경

* 품사 빈도 관리(GrammarIn) 오류 수정

* 페이지 상단 사용법 설명 변경

* Analyze 기능 추가 closes #12

* KOMORAN 관리도구 설명 초안 추가 related #11

* 사용하지 않는 lib 정리

* 기분석 사전(fwd.user) 관리 기능 추가 related #7

* FULL 모델 제거 closes #16

* 보정 메뉴 내의 순서 변경 closes #17

* 모든 컬럼이 수정 가능하도록 변경 closes #20

* KOMORAN의 master 브랜치를 가져오도록 수정

* 사용자 모델 추가 related #14

* grammar.in 변경사항이 적용된 별도 KOMORAN.jar 관리 related #14 & #56

* 품사 빈도 파싱 규칙 수정 related #9

* 품사 변경 내용 적용 및 중복 품사 삭제한 기본 품사 빈도 파일 업데이트 related #9, #14

* 사용자 모델 생성 및 생성된 모델 목록 조회 기능 추가 related #14

* 사용자 모델 생성에 필요한 기본 사전 데이터 추가 로직 변경 related #14

* 형태소 분석 비교 메뉴 추가 closes #13

* 사용하지 않는 CSS 정리

* 오타 수정

* 사용하지 않는 코드 / 파일 제거

* 모델 관리 메뉴 추가 (모델 삭제 및 배포 기능) closes #15 #24

* 코드 정리 등

* 코드 정리 및 설명 수정 등

* 사용하지 않는 코드 정리

* 좌측 메뉴 숨김 시 테이블 다시 그리기 closes #23

* 오타 수정

* README 갱신 relate #27

* Apache 2.0 라이선스 적용 related #29

* 사용자 모델 목록 제공 시 유효성 검사 추가 related #28

* Log Level 변경

* Log Level 변경

* 사용자 모델 관련 테스트 추가 related #14 #15 #24

* FAQ 및 라이선스 추가 related #31

* 로그 레벨 변경 및 로컬 환경에서만 접근 가능하도록 수정 related #32

* 접근 포트를 8888에서 3579로 변경 related #33

* 명시적으로 인코딩 지정 related #18 #35

* FAQ 내용 추가 및 별도 문서로 분리 related #31

* Log Level 조정 related #37
(TODO: Profile 분리)

* KOMORAN 실행 완료 안내 문구 추가 related #36

* 1.0 릴리즈를 위한 버전 변경

* 최신 버전의 KOMORAN을 사용하도록 변경 related #38 #18 #14

* 페이지 로딩 시 동작 일부 변경

* FAQ 내용 일부 수정 related #31 #34

* 분석 메뉴에 모델을 선택하여 분석할 수 있도록 기능 추가 related #42

* 사용자 모델에 대한 유효성 검사를 담당하는 컴포넌트를 새로 만들고, 해당 컴포넌트를 사용하여 유효성을 검사 related #39

* 잘못 삭제한 parseModelName() 함수 복원

* 오타 수정 및 모델 생성 시 기본 디렉토리 생성 코드 복구

* 사용자 모델의 유효성 검사시 corpus_build/ 디렉토리 및 하위 파일들에 대한 유효성 검사 추가 #39
- corpus_build/ 디렉토리 유효성 검사 추가
- corpus_build/ 디렉토리 하위의 dic.word, dic.irregular, grammar.in 파일 유효성 검사 추가

* 아래 메뉴들에 Enter 키를 이용한 Form Submit 기능 적용 #41
- 기본 형태소 분석 메뉴 (analyze.html)
- 형태소 분석 비교 메뉴 (compare.html)

* 띄어쓰기, 공백 정리 등

* 보정 메뉴들에 Enter 키를 이용한 Form Submit 기능 추가 related #41

* 사용자 모델 선택 변경 시에도 형태소 분석 진행 related #41

* KOMORAN 버전을 3.3.5로 지정

* 분석 메뉴를 문장 단위와 파일 단위로 분리 related #44, #45

* KOMORAN 3.3.5 이상 지원을 명시

* 여러 문장의 형태소 분석 지원 related #45

* init commit

* implementation compare file page based on form

* 파일 비교 페이지 개발

* Komoran project를 module로 변경

Co-authored-by: Junghwan Park <[email protected]>
  • Loading branch information
shin285 and 9bow authored Apr 6, 2020
1 parent 36f59cf commit 490c9c7
Show file tree
Hide file tree
Showing 1,766 changed files with 272,180 additions and 63 deletions.
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/BUG_REPORTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ _정상적인 상황에서는 어떻게 동작해야 한다고 생각하세요?_
## 환경 정보
_어떤 환경에서 이 문제가 발생하였나요?_
* OS 종류 / 버전:
* 브라우저 종류 및 버전:
* Komoran 버전:
* Java 버전:

Expand Down
33 changes: 24 additions & 9 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,9 @@ analyze_result.txt
.classpath
.project
.settings
.classpath
.project
SpeedValidation.java
StdinTest.java
/bin/
*.class

# Mobile Tools for Java (J2ME)
.mtj.tmp/
Expand All @@ -34,23 +31,17 @@ gradle-app.setting
# Cache of project
.gradletasknamecache


*.class

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
#*.jar
*.war
*.ear

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

# Gradle
# ------
.gradle
/build

# IDEA
Expand Down Expand Up @@ -99,3 +90,27 @@ hs_err_pid*
.DS_Store


### STS ###
.apt_generated
.factorypath
.springBeans
.sts4-cache

### IntelliJ IDEA ###
*.iws
*.iml
*.ipr
/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

AdminDB.*.db
bin/
uploads/
models/
diff_logs/
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright {yyyy} {name of copyright owner}
Copyright 2019 Shineware

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
97 changes: 97 additions & 0 deletions admin/FAQ.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# 자주 묻는 질문과 답변 (FAQ)

## 형태소 분석기 관련 FAQ

* **질문(이하 Q)**: KOMORAN은 무엇인가요?
* **답변(이하 A)**: [KOMORAN](https://github.com/shin285/KOMORAN)[신준수](https://github.com/shin285)님께서 [2013년](https://shineware.tistory.com/entry/KOMORAN-ver-05-자바-한글-형태소-분석기)부터 개발해온 한국어 형태소 분석기입니다. 더 자세한 내용은 [홈페이지](https://www.shineware.co.kr/products/komoran/?utm_source=komoran-admin&utm_medium=Referral&utm_campaign=admin-github)를 참고해주세요.

* **Q**: KOMORAN 외에 다른 형태소 분석기도 사용할 수 있나요?
* **A**: KOMORAN 관리도구는 KOMORAN을 위해 개발되어 다른 형태소 분석기에서는 사용이 어렵습니다. 하지만, 사전의 형태가 동일하다면 사전 보정을 위해서는 사용할 수 있습니다.

## 사전 관련 FAQ

* **Q**: 사전 데이터는 어디에 저장되나요?
* **A**: 사전 데이터는 H2 Database에 저장되며, AdminDB.mv.db라는 파일로 존재합니다. SQL을 사용할 줄 아신다면 [H2 콘솔](http://localhost:3579/console)에서도 살펴보실 수 있습니다.

* **Q**: 사전 데이터를 파일로 받고 싶어요.
* **A**: 개별 사전을 파일 형태로 다운로드 받으시려면 각 사전 보정 메뉴 상단의 '내려받기'를 이용해주세요.

* **Q**: 형태소 분석 결과 비교를 위해 임시로 일부 단어를 사전에서 제외하고 싶습니다. 삭제 / 등록 외에 방법이 있나요?
* **A**: 사용자 사전과 기분석 사전은 단어가 `#` 문자로 시작하는 경우 해당 단어를 형태소 분석 시에 인식하지 않습니다. 단어 빈도와 품사 빈도에서는 사용할 수 없는 기능이니 참고해주세요.

* **Q**: 사전 파일들은 어떤 형식으로 되어 있나요?
* **A**: 각 사전 파일들의 형식은 다음과 같습니다.

| 사전명 | 파일 규칙 | 예시(행) | 예시(파일) | 비고 |
| ------------------------ | ------------------------------------ | ------------------------------- | ------------------------------------------------------------------------------------ | ----------------------------- |
| 단어 빈도 (`dic.word`) | `단어\t품사:빈도` | `감사원 NNG:40` | [예시 파일](https://github.com/shin285/KOMORAN/blob/master/corpus_build/dic.word) | - |
| 품사 빈도 (`grammar.in`) | `이전품사\t다음품사1:빈도,다음품사2:빈도,...` | `VCN EF:1874,EP:785,EC:4037` | [예시 파일](https://github.com/shin285/KOMORAN/blob/master/corpus_build/grammar.in) | - |
| 사용자 사전 (`dic.user`) | `단어\t품사` | `바람과 함께 NNG` | [예시 파일](https://github.com/shin285/KOMORAN/blob/master/user_data/dic.user) | 단어가 `#`으로 시작 시 무시함 |
| 기분석 사전 (`fwd.user`) | `기분석어절\t형태소1/품사1 형태소2/품사2 ...` | `감기는 감/NNG 기는/NNG` | [예시 파일](https://github.com/shin285/KOMORAN/blob/master/user_data/fwd.user) | 기분석 어절이 `#`으로 시작 시 무시함 |

## 품사 관련 FAQ

* **Q**: 품사의 종류는 어떻게 되나요? 어떤 품사들을 사용하나요?
* **A**: KOMORAN 형태소 분석기와 KOMORAN 관리도구는 `21세기 세종계획`의 품사 기준을 따르고 있습니다. 개별 품사들의 목록은 [KOMORAN 문서](http://docs.komoran.kr/?utm_source=komoran-admin&utm_medium=Referral&utm_campaign=admin-github)[품사표(PoS Table)](http://docs.komoran.kr/firststep/postypes.html?utm_source=komoran-admin&utm_medium=Referral&utm_campaign=admin-github)을 참고해주세요.

* **Q**: 품사 빈도에는 품사표에 없는 품사가 있습니다. 어떤 품사인가요?
* **A**: 품사 빈도에는 품사표에 존재하는 품사들 외에 어절의 시작(`BOE`)과 끝(`EOE`)을 표시하는 별도의 품사가 존재합니다.

## 모델 관련 FAQ

* **Q**: 모델은 어디에 저장되나요?
* **A**: 프로젝트 디렉토리 바로 아래에 `models/`라는 이름의 디렉토리 아래에 저장됩니다. 각 하위 디렉토리 하나가 모델 하나를 포함하고 있으며, 디렉토리명이 모델의 생성 시각입니다.

* **Q**: 모델 디렉토리에는 어떤 내용들이 포함되어 있나요?
* **A**: 모델 디렉토리 내에는 2개의 디렉토리(`corpus_build/`, `model/`)와 2개의 파일(`dic.user`, `fwd.user`)이 존재합니다. 각 내용은 다음과 같습니다.

```sh
.
├── corpus_build # 사용자 모델을 생성하기 위한 기초 데이터
│   ├── dic.irregular # 불규칙 사전
│   ├── dic.word # 단어 빈도 사전
│   └── grammar.in # 품사 빈도 사전
├── dic.user # 사용자 단어 사전
├── fwd.user # 기분석 사전
└── model # 위 corpus_build/ 디렉토리 내의 데이터로 생성한 사용자 모델
├── irregular.model
├── observation.model
├── pos.table
└── transition.model
````

* **Q**: 모델 생성 시 사전을 확인하라는 메시지와 함께 모델 생성이 실패합니다.
* **A**: 모델 생성 시 실패 원인은 사전 데이터에 있을 확률이 높습니다. 특히 품사 사전에 빠트린 품사 쌍이 있는지 확인해주세요.

## 기타 사용 관련 FAQ

* **Q**: 모델 생성 시간이 다르게 표시됩니다.
* **A**: 모델 생성 시의 시간은 시스템 시간을 사용합니다. 모델 생성 시간이 다르게 표시된다면 KOMORAN 관리도구가 실행 중인 시스템의 시간을 확인해주세요.

## 실행 환경 및 설정 관련 FAQ

* **Q**: 다른 컴퓨터에서도 KOMORAN 관리도구에 접근할 수 있게 하고 싶습니다.
* **A**: application.yaml 파일의 2번째줄의 `address: 127.0.0.1``address: 0.0.0.0`으로 변경하면 외부에서도 접속이 가능합니다.

* **Q**: Oracle JDK 외에 다른 JDK도 지원하나요?
* **A**: 네, Oracle Java 1.8 외에 OpenJDK 1.8에서도 정상적으로 실행이 가능한 것을 확인하였습니다. 만약 사용 중 문제가 발생한다면 이슈를 남겨주세요.

* **Q**: 최신 버전의 Java도 지원하나요?
* **A**: 2019년 9월 현재 Oracle Java 12에서 정상적으로 실행이 가능한 것을 확인하였습니다. 만약 사용 중 문제가 발생한다면 이슈를 남겨주세요.

* **Q**: 1GB 이하의 적은 메모리에서도 사용이 가능한가요?
* **A**: 다음과 같이 설정하여 512MB의 가용 메모리에서 실행 가능한 것을 확인하였습니다. (단, Gradle Daemon은 별도입니다.)

* **Q**: 메모리가 부족하여 메모리 사용량을 512MB로 제한하고 싶습니다.
* **A**: gralde.properties 파일의 첫 번째 줄의 설정을 다음과 같이 변경해주세요. `org.gradle.jvmargs=-Xmx256m -Xmx3g -XX:MaxPermSize=256m -Dfile.encoding=UTF-8`

## KOMORAN 관리도구 활용 관련 FAQ

* **Q**: KOMORAN 관리도구를 회사에서 사용하고 싶습니다.
* **A**: KOMORAN 관리도구는 Apache License 2.0으로 배포되고 있습니다. 따라서 절차 없이 영리 또는 비영리 목적으로 사용하실 수 있습니다.

* **Q**: KOMORAN 관리도구의 소스코드를 변경하였습니다. 반드시 공개해야 하나요?
* **A**: 변경한 코드는 공개하지 않으셔도 됩니다. 하지만 다른 분들께도 필요한 내용이라면 [Pull Request](https://github.com/shineware/KOMORANAdmin/pulls)를 보내주시기를 부탁드립니다.

* **Q**: KOMORAN 관리도구를 개선하는데 기여하고 싶습니다.
* **A**: 감사합니다! KOMORAN 관리도구 저장소에 [Pull Request](https://github.com/shineware/KOMORANAdmin/pulls)를 보내주세요.
103 changes: 103 additions & 0 deletions admin/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# KOMORAN 관리도구

## 소개

* KOMORAN 관리도구는 [한국어 형태소 분석기 KOMORAN](https://github.com/shin285/KOMORAN)의 사용을 돕기 위한 도구입니다.
* KOMORAN의 사용자 모델을 만드는데 필요한 사전들을 관리하고, 해당 사전들이 적용된 사용자 모델을 만들고 적용 방법을 알 수 있습니다.

## 주요 기능

### 메뉴 소개

KOMORAN 관리도구는 크게 4가지 기능을 제공하는 메뉴들로 구성되어 있습니다.

* 분석
* KOMORAN 기본 모델(`LIGHT`)로 형태소 분석을 할 수 있습니다.
* 보정
* 사용자 모델을 만드는데 필요한 사전들을 관리합니다.
* 비교
* 사용자 모델을 생성하고, 기본 모델과 생성한 모델들 중 2가지를 선택하여 형태소 분석 결과를 비교할 수 있습니다.
* 배포
* 사용자 모델을 생성 / 삭제할 수 있으며, 사용자 모델을 배포할 수 있는 방법을 안내합니다.

### 화면 소개

각 메뉴들은 다음과 같은 화면들로 구성되어 있습니다.

| 분석 메뉴 | 보정 메뉴 |
| --------- | --------- |
| ![분석 메뉴](https://raw.githubusercontent.com/shineware/KOMORANAdmin/master/src/main/resources/static/demo/ScreenShot01_Analyze.png) | ![보정 메뉴](https://raw.githubusercontent.com/shineware/KOMORANAdmin/master/src/main/resources/static/demo/ScreenShot02_ManageDict.png) |

| 비교 메뉴 | 배포 메뉴 |
| --------- | --------- |
| ![비교 메뉴](https://raw.githubusercontent.com/shineware/KOMORANAdmin/master/src/main/resources/static/demo/ScreenShot03_CompareResults.png) | ![배포 메뉴](https://raw.githubusercontent.com/shineware/KOMORANAdmin/master/src/main/resources/static/demo/ScreenShot04_DeployModel.png) |

## 설치 및 실행

### 필요 환경

* Java 1.8 이상
* `java -version` 명령어로 현재 버전을 확인할 수 있습니다.
* Chrome 브라우저
* 최신 버전의 Safari, Firefox 등에서도 동작합니다.
* KOMORAN 3.3.5 이상
* 별도로 설치하실 필요는 없습니다.
* 단, 본 관리도구에서 생성한 사전 및 모델은 3.3.5 이상 버전에서 사용 가능합니다.

### 설치 방법

* 아래와 같이 Git을 이용하여 KOMORAN 관리도구를 복제합니다.
* 또는 [배포 메뉴](https://github.com/shineware/KOMORANAdmin/releases)에서 최신 소스코드를 다운로드 받을 수 있습니다.

```sh
git clone https://github.com/shineware/KOMORANAdmin
```

### 실행 방법

* 위에서 복제 또는 다운로드받은 소스 코드가 위치하는 디렉토리로 이동합니다.

```sh
cd KOMORANAdmin
```

* KOMORAN 관리도구를 실행합니다.
* (처음 실행 시에는 필요한 라이브러리들을 내려받는데 다소 시간이 소요됩니다.)

```sh
# macOS 및 Linux 사용 시 아래와 같이 실행합니다.
./gradlew bootRun
# Windows 사용 시 아래와 같이 실행합니다.
gradlew.bat bootRun
# 실행이 완료되면 아래와 같은 메시지가 출력됩니다.
# ##### KOMORAN Admin has just started. #####
```

* Chrome 브라우저를 열고 [http://localhost:3579/](http://localhost:3579/) 에 접속합니다.

## 자주 묻는 질문과 답변

* [자주 묻는 질문과 답변](https://github.com/shineware/KOMORANAdmin/blob/master/FAQ.md) 문서를 참조해주세요.

## 기여

* KOMORAN 관리도구와 관련한 소스 코드나 버그 리포트, 오타 수정 등 어떠한 기여도 환영합니다.
* 저장소에 [이슈](https://github.com/shineware/KOMORANAdmin/issues)를 남겨주시거나, [Pull Request](https://github.com/shineware/KOMORANAdmin/pulls)를 보내주세요.
* [KOMORAN Slack](https://komoran.slack.com/) 또한 열려있습니다. ([초대 링크](http://goo.gl/T1d3Ia))
* 단, 기여해주신 모든 내용은 [Apache License 2.0](https://github.com/shineware/KOMORANAdmin/blob/master/LICENSE)으로 공개되므로, 이에 동의하시는 경우에만 참여해주시기 바랍니다.

## 라이선스

* KOMORAN 및 KOMORAN 관리도구는 [Apache License 2.0](https://github.com/shineware/KOMORANAdmin/blob/master/LICENSE)을 따릅니다.
* 누구든 KOMORAN 관리도구의 일부 또는 전체를 개인적 또는 상업적 목적으로 사용할 수 있습니다.
* SHINEWARE 및 이 저장소의 기여자(들)은 KOMORAN 관리도구를 사용하는 것에 대해 어떠한 권리도 주장하지 않습니다.
* SHINEWARE 및 이 저장소의 기여자(들)은 KOMORAN 관리도구를 사용함에 따라 발생하는 어떠한 책임도 지지 않습니다.
* 단, KOMORAN 관리도구에서 사용한 아래 라이브러리들은 각자의 라이선스를 따릅니다.
* [Tabulator 3.5](https://github.com/olifolkerd/tabulator/blob/3.5/LICENSE) ([MIT License](https://opensource.org/licenses/MIT))
* [AdminLTE 2.4.2 및 이에 포함된 라이브러리들](https://adminlte.io/docs/2.4/license) ([MIT License](https://opensource.org/licenses/MIT))
* [Spring Boot 2.1.2 및 이에 포함된 라이브러리들](https://github.com/spring-projects/spring-boot/blob/2.1.x/LICENSE.txt) ([Apache License 2.0](https://opensource.org/licenses/Apache-2.0))
* [json-simple 1.1.1](https://code.google.com/archive/p/json-simple/) ([Apache License 2.0](https://opensource.org/licenses/Apache-2.0))
* [java-diff-utils 4.0](https://github.com/java-diff-utils/java-diff-utils/blob/java-diff-utils-4.0/LICENSE) ([Apache License 2.0](https://opensource.org/licenses/Apache-2.0))
* [Zip4j 2.1.3](https://github.com/srikanth-lingala/zip4j/blob/v2.1.3/LICENSE) ([Apache License 2.0](https://opensource.org/licenses/Apache-2.0))
* [Java Hamcrest 1.3](https://github.com/hamcrest/JavaHamcrest/blob/hamcrest-java-1.3/LICENSE.txt) ([BSD License](https://opensource.org/licenses/BSD-3-Clause))
* [H2 Database](https://www.h2database.com/html/license.html) ([Mozilla Public License 2.0](https://opensource.org/licenses/MPL-2.0) / [Eclipse Public License 1.0](https://opensource.org/licenses/eclipse-1.0.php))
52 changes: 52 additions & 0 deletions admin/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
buildscript {
ext {
springBootVersion = '2.1.2.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'kr.co.shineware.nlp.komoran'
version = '1.0.0-SNAPSHOT'
sourceCompatibility = '1.8'

compileJava.options.encoding = "UTF-8"
compileTestJava.options.encoding = "UTF-8"

configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

repositories {
mavenCentral()
maven { url "https://jitpack.io" }
}

dependencies {
// use latest KOMORAN
compile 'com.github.shin285:KOMORAN:3.3.8'

compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.boot:spring-boot-starter-data-jpa'
compile 'com.googlecode.json-simple:json-simple:1.1.1'

// for morph results comparison
compile 'io.github.java-diff-utils:java-diff-utils:4.0'

// for Serving user model
compile 'net.lingala.zip4j:zip4j:2.1.3'

runtimeOnly 'com.h2database:h2'

testCompile 'org.springframework.boot:spring-boot-starter-test'
testCompile 'org.hamcrest:hamcrest-all:1.3'
}

2 changes: 2 additions & 0 deletions admin/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
org.gradle.jvmargs=-Dfile.encoding=UTF-8
systemProp.file.encoding=UTF-8
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package kr.co.shineware.nlp.komoran.admin;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.core.task.TaskExecutor;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

@SpringBootApplication
@EnableAsync
public class KOMORANAdminApplication {
private static final Logger logger = LoggerFactory.getLogger(KOMORANAdminApplication.class);

public static void main(String[] args) {
SpringApplication.run(KOMORANAdminApplication.class, args);
logger.info("##### KOMORAN Admin has just started! #####");
}

@Bean("threadPoolTaskExecutor")
public TaskExecutor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(20);
executor.setMaxPoolSize(1000);
executor.setWaitForTasksToCompleteOnShutdown(true);
executor.setThreadNamePrefix("Async-");

return executor;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package kr.co.shineware.nlp.komoran.admin.config;

import org.hibernate.dialect.H2Dialect;
import org.hibernate.dialect.function.StandardSQLFunction;
import org.hibernate.type.StringType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CustomH2Dialect extends H2Dialect {
private static final Logger logger = LoggerFactory.getLogger(CustomH2Dialect.class);

public CustomH2Dialect() {
super();
this.registerFunction("GROUP_CONCAT", new StandardSQLFunction("group_concat", StringType.INSTANCE));
this.registerFunction("CONCAT", new StandardSQLFunction("concat", StringType.INSTANCE));
logger.debug("CustomFunctions have been registered");
}
}
Loading

0 comments on commit 490c9c7

Please sign in to comment.