2014年1月12日日曜日

backlog4jでプロジェクト一覧を取得してみる

Backlogというプロジェクト管理ツールのAPIを使用して、自分が参加しているプロジェクト一覧を取得してみました。

Perl、PHP、Pythonからでも取得できますが、今回はJavaで取得することにします。

JavaでBacklog APIにアクセスする為のクライアントライブラリが用意されていますので、
hakuraiさまのbacklog4jをプロジェクトに取り込んで使用します。


まず、一般ユーザのクライアントを生成します。
BacklogConfigureBuilder builder = new BacklogConfigureBuilder();
BacklogConfigure config = builder.buildBacklogConfigure();
config.setSpaceId(mySpaceId);
config.setUsername(myUsername);
config.setPassword(myPassword); 
BacklogClient client = new BacklogClientFactory(config).newBacklogClient(); 
mySpaceIdは、プロジェクトURL(https://ourSpace.backlog.jp/)のourSpaceに当たる部分です。myUsernameとmyPasswordは、一般ユーザとしてログインする時に入力するユーザ名とパスワードです。MalformedURLExceptionをスローできるようにしておきましょう。



それでは自分のプロジェクトを取得してみます。
GetProject getProject = backlogClient.getProject();
getProject.setProjectKey("PJT_x");
Project project = getProject.execute();
LOGGER.info(project.getName());

実行結果
Xプロジェクト
プロジェクトキーとは、課題のURL(https://ourSpace.backlog.jp/projects/PJT_x)のPJT_xに当たる部分です。このケースでは、PJT_xに対するプロジェクト名が取得できます。


続いて自分のプロジェクト(複数)を取得してみます。
GetProjects getProjects = client.getProjects();
ProjectList projectList = getProjects.execute();
Iterator<Project> it = projectList.iterator();
while (it.hasNext()) {
Project myProject = it.next();
LOGGER.info(myProject.getId()+" "+myProject.getName());
}
実行結果
PJT_x Xプロジェクト
PJT_y Yプロジェクト
PJT_z Zプロジェクト
プロジェクトIDとプロジェクト名が取得できました。

コードを確認しますと、
GetProjectsのインスタンスに、フィルタをセットして、executeするクエリ的に扱います。
Project以外にも、課題やコメント、課題の状態にも同じ方法で取ってきます。

キーがPJT_x-26の課題(issue)を取得してみます。
GetIssue getIssue = client.getIssue();
getIssue.setIssueKey("PJT_x-26");
Issue issue = getIssue.execute();
LOGGER.info(issue.getSummary()); 
実行結果
PJT_x-26の課題のサマリが取得できました。


課題一覧を取得してみます。
FindIssue findIssue = client.findIssue();
findIssue.setProjectId(project.getId());
IssueList issueList = findIssue.execute();
Iterator<Issue> issues = issueList.iterator();
while (issues.hasNext()) {
Issue myIssue = issues.next();
LOGGER.info(myIssue.getId() + " "
+ myIssue.getStatus() + " " + myIssue.getSummary());
}
実行結果
1077583463 Status{name='処理済み'} 伝票番号欄が空欄になるバグ
1077346780 Status{name='未対応'} ファイルをアップロードする機能
1077204542 Status{name='処理中'} メニューから案件を選択する機能
1077580378 Status{name='未対応'} 決定ボタンをクリックすると画面が白くなる
1077583839 Status{name='完了'} 既存案件をアップロードするとエラーになる
findIssueは自分が閲覧できる全課題をとってきてます。
setProjectで単一プロジェクトでフィルタして取得してきています。


課題の状態(未対応・処理中・処理済み・完了)一覧を取得してみます。
GetStatuses getStatuses = backlogClient.getStatuses();
StatusList statusList = getStatuses.execute();
Iterator<Status> statuses = statusList.iterator();
while (statuses.hasNext()) {
Status myStatus = statuses.next();
LOGGER.info(myStatus.getId() + " " + myStatus.getName() + " " + myStatus.getCount());
}
実行結果
1 未対応 null
2 処理中 null
3 処理済 null
4 完了 null
課題の状態は静的フィールドかと思いきや、APIで取得しないと取れないものでした。
基本的に、Get****やFind****のオブジェクトにフィルタやソートをかけて、
executeした後に取れるオブジェクトが本体という仕様になっています。

次回は、コメントを追加します。

0 件のコメント:

コメントを投稿