<commit_before>[![build status(available on GitLab only)](https://gitlab.com/pushmestudio/kcuc/badges/master/build.svg)](https://gitlab.com/pushmestudio/kcuc/commits/master)

# Overview
[IBM Knowledge Center REST API Documentation](https://www.ibm.com/support/knowledgecenter/v1-docs/#/)を利用し、Knowledge Centerに格納されているドキュメントの更新を確認するためのREST APIアプリケーション。

使用しているライブラリやミドルウェアの主要なものは次のとおり。

* Tomcat: Runtime Servlet Container(Tomcatを使用しない場合はservlet-apiなど、一部のライブラリを`build.gradle`に追加する必要がある)
* Cloudant: NoSQL DB
* JAX-RS: REST API Framework
* Swagger: API Document

デプロイされているものは[こちら](https://kcuc.mybluemix.net)から利用可能。

ローカル環境においては、Dockerを使用して環境構築する想定。使用するDockerイメージは[CentOS 7 + Java 8 + Tomcat 8](https://github.com/kirillF/centos-tomcat)としている。

# Quick Start

* Pre-requirement: Install Java8 or later

1. プロパティファイルの設置

    使用するプロパティファイルについては`${プロジェクトルート}/src/main/resources/jp/pushmestudio/credentials/`以下に`cloudant.properties`として配置し、以下の値を記載する。

    ```properties
    CLOUDANT_ACCOUNT=CloudantのアカウントID
    CLOUDANT_USER=DB接続用のユーザーID
    CLOUDANT_PW=DB接続用のユーザーIDに紐づくパスワード
    ```

    なお、プロパティファイルを用意せずに、同名の環境変数を用意している場合はそちらの変数の読み取りを優先する。

2. GradleでWar生成

    `./gradew build`にてビルドを実行しWarを生成する。`gradlew`コマンド初回実行時にこのプロジェクトで事前に定めたGradleがダウンロードされるため、事前にGradleのインストールなどは不要。

3. 生成されたWarのデプロイ

    `build/libs`以下に生成されたWarをデプロイする。なお、現行ではBluemix上にデプロイしており、標準的なビルドパックを使用している都合上、コンテキストルートは`/`とすることを前提にしている。そのため、Tomcatにデプロイする場合には`ROOT.war`にファイル名を変更してからデプロイする。

    事前想定のDockerなどを使用している場合(`/opt/tomcat/webapps/`ディレクトリがある場合)には、`./gradlew deploy`(or `./gradlew build deploy`)実行により、`ROOT.war`にリネーム + デプロイ可能。


# 開発環境セットアップ

* Requirement：Java8 or later
* Recommendation: Eclipse Mars or later(and install Eclipse Buildship Gradle Plugins), Docker

    EclipseのAll in oneパッケージであるPleiadesを利用する場合、Eclipse Mars(4.5)以降にはEclipse Buildshipは同梱されているので、Buildshipを個別に入れる必要はない。

## Eclipseへのプロジェクトのインポート
初回セットアップは、今後どのような方法で開発を実施したいかによって2種類に分かれる。

### Eclipse内で可能な限りコマンドラインを使わない(Eclipseで完結させる)方法((Recommended)

Eclipse起動後、`File` > `Import` > `Gradle`を選択。本プロジェクトのルートディレクトリを指した状態でImportを進める。途中、Gradleを選択する画面では、`Gradle Wrapper(Recommended)`のまま進めればOK。

この方法による場合、Eclipse上でGradleのコマンドが実行できるようになるので便利。また、実行しているGradleのタスクの実行状況が視覚的に把握しやすいのと、サーバーサイドプロジェクトにおいては基本的にオールインワンで済ませることができる点で優れる。


### コマンドラインとEclipseを併用する方法

Eclipse起動前に、プロジェクトトップディレクトリにて`./gradlew eclipse`を実行して事前準備する。(このコマンドにて、Eclipseが必要とする`.project`や`.classpath`が設定される。)

その後、Eclipseを起動し、`File` > `Import` > `General` > `Existing Project into Workspace`を選択。

この方法による場合、Eclipse上でGradleのコマンドは実行できないものの、Eclipse Luna等Gradleのプラグインが導入されていないマシンでも容易にセットアップできるのが利点。また、EclipseのGradleプラグインは比較的新しいが、その場合でもそこで発生するバグを回避できる点に優れる。

ここまでのセットアップが済んだら、EclipseがJS系のモジュールを理解できないために発生するエラー表示を抑制するための手続きおよびソースコード標準化のための`checkstyle`のセットアップを実施する。

**注意**：ライブラリを追加・削除した際には`./gradlew eclipse`を実行する必要がある。<commit_msg>Fix typo and change caution position of library adding/removing related<commit_after>[![build status(available on GitLab only)](https://gitlab.com/pushmestudio/kcuc/badges/master/build.svg)](https://gitlab.com/pushmestudio/kcuc/commits/master)

# Overview
[IBM Knowledge Center REST API Documentation](https://www.ibm.com/support/knowledgecenter/v1-docs/#/)を利用し、Knowledge Centerに格納されているドキュメントの更新を確認するためのREST APIアプリケーション。

使用しているライブラリやミドルウェアの主要なものは次のとおり。

* Tomcat: Runtime Servlet Container(Tomcatを使用しない場合はservlet-apiなど、一部のライブラリを`build.gradle`に追加する必要がある)
* Cloudant: NoSQL DB
* JAX-RS: REST API Framework
* Swagger: API Document

デプロイされているものは[こちら](https://kcuc.mybluemix.net)から利用可能。

ローカル環境においては、Dockerを使用して環境構築する想定。使用するDockerイメージは[CentOS 7 + Java 8 + Tomcat 8](https://github.com/kirillF/centos-tomcat)としている。

# Quick Start

* Pre-requirement: Install Java8 or later

1. プロパティファイルの設置

    使用するプロパティファイルについては`${プロジェクトルート}/src/main/resources/jp/pushmestudio/credentials/`以下に`cloudant.properties`として配置し、以下の値を記載する。

    ```properties
    CLOUDANT_ACCOUNT=CloudantのアカウントID
    CLOUDANT_USER=DB接続用のユーザーID
    CLOUDANT_PW=DB接続用のユーザーIDに紐づくパスワード
    ```

    なお、プロパティファイルを用意せずに、同名の環境変数を用意している場合はそちらの変数の読み取りを優先する。

2. GradleでWar生成

    `./gradew build`にてビルドを実行しWarを生成する。`gradlew`コマンド初回実行時にこのプロジェクトで事前に定めたGradleがダウンロードされるため、事前にGradleのインストールなどは不要。

3. 生成されたWarのデプロイ

    `build/libs`以下に生成されたWarをデプロイする。なお、現行ではBluemix上にデプロイしており、標準的なビルドパックを使用している都合上、コンテキストルートは`/`とすることを前提にしている。そのため、Tomcatにデプロイする場合には`ROOT.war`にファイル名を変更してからデプロイする。

    事前想定のDockerなどを使用している場合(`/opt/tomcat/webapps/`ディレクトリがある場合)には、`./gradlew deploy`(or `./gradlew build deploy`)実行により、`ROOT.war`にリネーム + デプロイ可能。


# 開発環境セットアップ

* Requirement：Java8 or later
* Recommendation: Eclipse Mars or later(and install Eclipse Buildship Gradle Plugins), Docker

    EclipseのAll in oneパッケージであるPleiadesを利用する場合、Eclipse Mars(4.5)以降にはEclipse Buildshipは同梱されているので、Buildshipを個別に入れる必要はない。

## Eclipseへのプロジェクトのインポート
初回セットアップは、今後どのような方法で開発を実施したいかによって2種類に分かれる。

### Eclipse内で可能な限りコマンドラインを使わない(Eclipseで完結させる)方法(Recommended)

Eclipse起動後、`File` > `Import` > `Gradle`を選択。本プロジェクトのルートディレクトリを指した状態でImportを進める。途中、Gradleを選択する画面では、`Gradle Wrapper(Recommended)`のまま進めればOK。

この方法による場合、Eclipse上でGradleのコマンドが実行できるようになるので便利。また、実行しているGradleのタスクの実行状況が視覚的に把握しやすいのと、サーバーサイドプロジェクトにおいては基本的にオールインワンで済ませることができる点で優れる。


### コマンドラインとEclipseを併用する方法

Eclipse起動前に、プロジェクトトップディレクトリにて`./gradlew eclipse`を実行して事前準備する。(このコマンドにて、Eclipseが必要とする`.project`や`.classpath`が設定される。)

その後、Eclipseを起動し、`File` > `Import` > `General` > `Existing Project into Workspace`を選択。

この方法による場合、Eclipse上でGradleのコマンドは実行できないものの、Eclipse Luna等Gradleのプラグインが導入されていないマシンでも容易にセットアップできるのが利点。また、EclipseのGradleプラグインは比較的新しいが、その場合でもそこで発生するバグを回避できる点に優れる。

**注意**：併用している場合でライブラリを追加・削除した際には`./gradlew eclipse`を実行する必要がある。


ここまでのセットアップが済んだら、EclipseがJS系のモジュールを理解できないために発生するエラー表示を抑制するための手続きおよびソースコード標準化のための`checkstyle`のセットアップを実施する。
{'fraction_non_alphanumeric': 0.09942034076936589, 'fraction_numerical': 0.004215703495520815, 'mean_word_length': 9.13167259786477, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 13, 'https://': 10, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '545301', 'n_tokens_mistral': 3696, 'n_tokens_neox': 3354, 'n_words': 222}