Eclipse BIRTを使ってみる (4) - Scripted DataSetを使う -
例えば、データベースを利用しないでデータセットにJavaオブジェクトからの実行結果(List<Object>)をバインドしたい場合、Scripted DataSetを使う事でJavaオブジェクトを介した結果をデータセットにバインド出来る模様。なのでやってみた
データソースの作成
データソース作成時にScripted DataSoruceを選択する
データセットを作成
データセットを作成時にScripted DataSourceをベースに作る。んで上記のように出力例なウィザードでカラムを定義しておく
データセットスクリプトを定義 (open)
データセットスクリプトのopenイベントでスクリプトを定義する。スクリプトはJavaScriptになってる模様
count = 0
// Javaパッケージのsample.Sampleクラスのインスタンスを生成
sample = new Packages.sample.Sample();
// sample.SampleクラスのgetSamplesメソッドを実行した結果(List<Sample>)を取得する
samples = sample.getSamples();
データセットスクリプトを定義 (fetch)
fetchイベントでスクリプトを定義する
if (count < samples.size()) {
row["columnId"] = samples.get(count).getId();
row["columnName"] = samples.get(count).getName();
count++;
return true;
}
return false;
厳密的な情報が不明なので微妙ですが、trueを返す事でイベントループを継続、falseを返すとイベントループを終了っていう感じなのかも。まぁあとはデータセットのRowオブジェクトに設定したカラム名に基準されるデータを設定していくっていう感じかも
Sample.java
package sample;
import java.util.ArrayList;
import java.util.List;
public class Sample {
private int id;
private String name;
public int getId() {
return id;
}
public String getName() {
return name;
}
public List<Sample> getSamples() {
List<Sample> samples = new ArrayList<Sample>();
Sample sample1 = new Sample();
sample1.id = 1;
sample1.name = "hoge";
Sample sample2 = new Sample();
sample2.id = 2;
sample2.name = "fuga";
Sample sample3 = new Sample();
sample3.id = 3;
sample3.name = "foobar";
samples.add(sample1);
samples.add(sample2);
samples.add(sample3);
return samples;
}
}
このクラスのgetSamplesをScripted DataSetのスクリプトを介してアクセスして結果を取得する。でその結果をレポートとして作成出来る。で、実際にレポートと出力してみると