パッケージJava製品開発担当の大です。こんにちは。

前回に引き続き、「シーオーリポーツIDEプラグイン for Eclipse」の解説をします。
今回は、帳票クラスウィザードを使用して作成した帳票アプリケーションの基本部分を、目的の動作をするように変更していきます。

出力結果イメージ

出力結果イメージ(クリックで拡大)

前回のサンプルプロジェクトを引き続き使用します。ここで、今回作成する帳票アプリケーションの仕様を確認しておきましょう。

  • サンプルは、保険の契約書の「ご契約者様控」を出力するアプリケーションです。
  • CSVファイルから契約者のデータを1行づつ読み込み、ページの出力を行います。データが終わったら帳票出力を終了します。
  • 各ページ出力時に、項目「特定期間」の指定のため、「はい」または「いいえ」の丸を動的に描きます。

CSVファイルを読み込む

シーオーリポーツには、データアクセスを行う機能は用意されていません。「シンプル」テンプレートを使用した場合は、動作確認用の簡易的なデータアクセスクラス「SimpleRecordSet」が作成されますが、今回はCSVから読み込みたいため、CSV読み込み用のレコードセットクラスを作成します。もともとサンプルに入っていたtestパッケージのSimpleCSVRecordSetクラスを、作業中のtest2パッケージにコピーし、HokenSampleReportクラスの中のSimpleRecordSetを使用している部分のコードを、SimpleCSVRecordSetを使用するように変更しましょう。

変更前:

// レコードセットのインスタンスを生成します
SimpleRecordSet recordSet = new SimpleRecordSet();
// ダミーデータを作成します
recordSet.createDummyData();
// 帳票を作成します
report.create(recordSet);

変更後:

// レコードセットのインスタンスを生成します
SimpleCSVRecordSet recordSet =
    new SimpleCSVRecordSet("HokenSample.csv");
// 帳票を作成します
report.create(recordSet);

SimpleCSVRecordSetクラスとSimpleCSVRecordSetクラスはどちらもIRecordSetインタフェースを実装しており、同じようにHokenSampleReportクラスから扱うことができます。同様に、データがXML形式だったり、DBを参照するものであっても、IRecordSetインタフェースを実装したクラスを用意すれば同じように扱えます。サンプルに入っているSimpleCSVRecordSetはごく単純な作りになっていますので、実運用には耐えられませんが、インタフェース実装の参考にしてみてください。

余談ですが、シーオーリポーツ 帳票クリエータにはデータアクセス機能も備わっており、GUIでデータとのマッピングを行うこともできるツールも付属しています。データアクセス部分の実装が面倒な方は、こちらも是非試してみてください。

動的なオブジェクトの描画

シーオーリポーツでは、フォームファイル上に無いオブジェクトを、帳票出力時に動的に追加することができます。
ここでは、円オブジェクトのインスタンスを作成し、条件によって位置を変えながら描画します。
testパッケージのHokenSampleReportFormクラスを見ながら、作業中の同ファイルを編集しましょう。

動的なオブジェクトの描画

動的なオブジェクトの描画

完成

サンプルと同じ動きができるようになったでしょうか?
次回は、帳票クラスウィザードをより使いやすくするために、動作をカスタマイズしていきます。

[/sourcecode]
  • 2009/09/10 修正: コードの表示がおかしくなっていたのでタグを修正。