経理関係の資料などでマイナスの数値を「△100,000」のように表記するケースがあります。
Yellowfinでは カスタムフォーマッター を使えばこのような表示を実現することができます。
カスタムフォーマッター等の Yellowfinのプラグイン はJavaで開発します。
今回はEclipse(を日本語化した Pleiades)を用いています。
なお、開発方法はYellowfinのオンラインマニュアルに記載があります。
プラグイン開発の基礎
カスタムフォーマッターの作成
本記事では端折りながら進めていきますので、適宜マニュアルを参照してください。
Javaプロジェクトの作成
新規Javaプロジェクトを作成します。Javaのバージョンは7にせよとマニュアルに書かれているので、JREはjava7を選択しておきます。
「次へ」をクリックし、「デフォルト出力フォルダー」を <プロジェクト名>/ROOT/WEB-INF/classes に変更します。
<Yellowfinインストールディレクトリ>/appserver/webapps/ROOT に移動します。「ROOT」を選択し、「Open」をクリックします。
ROOT配下のすべてを選択し、「拡張」項目で「Create links in workspace(ワークスペース内にリンクを作成)」チェックボックスにチェックを入れます。
プロジェクトの構成
プロジェクトを右クリックし、メニューから「ビルド・パス」>「ビルド・パスの構成」を選択します。
「JARの追加」ボタンをクリックし、検索バーに「i4」と入力します。検索結果から「i4-core.jar」と「i4-mi.jar」を選択します。
srcフォルダー配下に、META-INF という名前で新規フォルダーを作成します。そのフォルダー配下に services という名前の新規フォルダーを作成します。
servicesフォルダー配下に、com.hof.mi.interfaces.CustomFormatter というファイルを作成します。
作成したファイルに com.company.yellowfin.formatters.SankakuFormatter
と記述します。これが作成するカスタムフォーマッターの完全修飾クラス名になります。
カスタムフォーマッターの作成
プロジェクトを右クリックし、「新規」>「パッケージ」を選択します。新規パッケージの名前は com.company.yellowfin.formatters とします。(先ほど設定した完全修飾クラス名と合わせます)
作成したパッケージを右クリックし、「新規」>「ファイル」を選択します。ファイル名は SankakuFormatter.java とします。(こちらも完全修飾クラス名と合わせておきます)
SankakuFormatter.javaに以下のコードを貼り付けます。
package com.company.yellowfin.formatters;
import java.text.NumberFormat;
import com.hof.mi.interfaces.CustomFormatter;
public class SankakuFormatter extends CustomFormatter {
public String getName() {
return "三角フォーマッター";
}
public boolean acceptsNativeType(int type) {
// We only handle numeric types
if (type == TYPE_NUMERIC) return true;
return false;
}
public String render(Object value, int renderType) throws Exception {
if (value == null) return null;
if (renderType == RENDER_LINK) {
// Return a generic version of the value
return value.toString();
}
// Create a String representing the value
NumberFormat nf = NumberFormat.getNumberInstance();
String mark = "";
String valStr = value.toString();
double valNum = Double.parseDouble(valStr);
double val = valNum;
if (valNum < 0 ) {
mark = "△";
val = Math.abs(val);
}
return mark + nf.format(val);
}
}

ちなみに、参考にしたコードの例がオンラインマニュアルにあります。
JARファイルの作成
.settingsとROOT以外 をすべて選択し、JARファイル名(ここでは SankakuFormatter.jar としました)を指定してエクスポートします。
Yellowfinに新規プラグイン追加
Yellowfinのプラグイン管理画面から、作成したJARファイルを新規プラグインとして追加します。
Yellowfinレポートでの使用例
今回作成したカスタムフォーマッターは 三角フォーマッター という名前にしています。名前はSankakuFormatter.java内の getName() の箇所で指定しています。
このフォーマッターを使うと、マイナスの数値を「△」の記号付きの書式にすることができます。
この数値に対して、書式で「三角フォーマッター」を指定します。
すると、マイナスの数値が三角記号で表示されるようになりました!
一見すると記号付きの文字列に改変されたように思えますが、実際は見かけの書式を変更しただけで、データ自体は数値型のままですので、条件付き書式を適用することも可能です。
おまけ:今回作ったJARファイル
作成したJARファイルをGithubに置いています。よろしければご利用ください!
https://github.com/hadatuna/SankakuFormatter