Eclipse BIRTを使ってみる (4) - Scripted DataSetを使う -

2012-11-12T00:00:00+00:00 Eclipse BIRT Java JavaScript

例えば、データベースを利用しないでデータセットに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のスクリプトを介してアクセスして結果を取得する。でその結果をレポートとして作成出来る。で、実際にレポートと出力してみると

FuelPHPをやってみる (11) - Smartyを使う - FuelPHPをやってみる (10) - ViewModelを使ってみる -