ListViewの拡張をやってみた2

昨日は、固定の文字を表示しただけなので、今回はちゃんとビルドを起動した契機を表示します。


まずは、column.jellyを変更します。

<j:jelly xmlns:j="jelly:core">
  <td>${it.getHTMLDescription(job)}</td> // ここを修正
</j:jelly>

この変更箇所の"it"は作成したCauseListViewColumnのインスタンスです。"job"は、表示する行のJobです。ListViewColumnのJavadocに、"The Item object is passed in the "job" variable. "と書いてあります。
つまり、"${it.getHTMLDescription(job)}"は、CauseListViewColumn#getHTMLDescriptionに今表示するJobを渡した結果になります。


次に、CauseListViewColumn#getHTMLDescriptionを実装します。このメソッドでは、

  1. 受け取ったJobの直近のビルドを取得
  2. そのビルドの起動契機(CauseAction)を取得
  3. CauseAction#getHTMLDescrptionの結果を返す

ようなことをします。CauseListViewColumn.javaに以下を追加します。

    public String getHTMLDescription(final Job job) {
        final Run r = job.getLastBuild();
        if (r == null) {
            return "N/A";
        }
        final CauseAction action = r.getAction(CauseAction.class);
        if (action == null) {
            return "N/A";
        }
        return action.getHTMLDescription();
    }

すると、

のように表示されます。日本語化されていませんが、これからコミットするので1.285では日本語で表示されます。


一応これで終わりですが、ジョブ一覧にあまり長い文章を表示するのもまずいので、起動契機を表すアイコンとユーザー名だけ表示とか、いろいろすることはありそうです。ジョブ一覧の拡張は、3ファイルぐらいの作成ですむので、試しに作ってみるのもいいでしょう。最新の変更(コミット履歴)へのショートカットとかは地味に便利かもしれません。


最後に、はてなキーワードに登録されるかどうかの試験です。Hudson Hudson hudson 以上。

やっぱり、されません。はてなキーワード八分か。