JavaのコードからBIRTのレポートに対して動的にフィルタを指定する

BIRTは深いところに入ろうとすると、英語の情報源から探さないといけない点が辛い今日この頃。
Javaのコードから動的にフィルタリングを指定するには、以下のようなコードで可能。



// コンフィグ設定
EngineConfig config = new EngineConfig();
config.setEngineHome(BIRTエンジンのホームディレクトリ);

// デザイン生成
ReportEngine engine = new ReportEngine(config);
IReportRunnable design = engine.openReportDesign(レポートファイルへのパス);

// フィルタ条件生成とデザインへの追加
FilterCondition condition = new FilterCondition();
condition.setExpr("row['rowid']"); // カラムの指定
condition.setOperator(DesignChoiceConstants.MAP_OPERATOR_EQ); // 条件の指定(※定数で色々用意されている)
condition.setValue1("1"); // 条件値の指定
( (ReportDesignHandle)design.getDesignHandle() ).findDataSet("データセット").addFilter(condition);

ここまで調べるのに半日以上かかってしまった。。。もっと調べ方も上手くならねば。
本当はデータセット内のSQLを動的に変更したかったが…その方法は調べきれず時間切れ。
#データセットに対してアクセスできるんだから、できてもよさそうな気はするけど。
プレースホルダー指定でパラメータ渡しはできるけど、Where句条件等の動的な加減方法は不明。。
案としてデータセットをストアド呼び出しにして、ストアドでデータを組み立てるってのもあるが…
ストアドは保守性が悪い(※私の個人的な感覚ですけど)ので、使いたくない。
ただ、フィルタ方式だとデータセットからの取得件数が多い時に、パフォーマンス面で厳しい気がするなぁ。

まあ、今日のところはこれで満足しときますか。