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

前回に引き続き、「シーオーリポーツIDEプラグイン for Eclipse」の解説をします。
今回は、テンプレートを編集して帳票クラスウィザードの動作をカスタマイズしていきます。

テンプレートでHello, World!

前回作成した、テンプレートの編集用のプロジェクトを開きます。

テンプレート・プロジェクト

テンプレート・プロジェクト

プロジェクトには、あらかじめ作成されているテンプレートがいくつか並んでいます。その中の「simple[シンプル]」テンプレートを開いて、Report.javaをダブルクリックしてください。

// <@template.note />
<#if packageName?exists>
package ${packageName};
</#if>
import java.util.ArrayList;
...(省略)

/**
 * シーオーリポーツを使用して帳票作成を行うクラスです。
 *
 */
public class ${report.className} implements IReport {
...(省略)

こんな風になっていると思います。これが帳票クラスのもととなるテンプレートファイルです。ためしにクラスコメントに1行「Hello, World!」を追加してみましょう。

保存して、早速適当なプロジェクトで帳票クラスウィザードを起動し、このテンプレートを使用してみます。以下のように出力されれば成功です!

Hello, World!

Hello, World!(クリックで拡大)

変数を使ってみる

今度は変数を使ってみましょう。

先ほどの「Hello, World!」を消して、替わりに「@author ${myName}」を追加してみます。 (@authorは、クラスの作成者を表すjavadocコメントのタグです。「myName」が変数です)。

これを実行してみると、以下のようにエラーが発生します。

エラー

エラー(クリックで拡大)


myName」が定義されていない、と言われていますね。

変数には、帳票クラスウィザードであらかじめ定義済みの変数と、ユーザ定義の変数があります。定義済みの変数の一覧は、「描画ライブラリ ユーザーズマニュアル」の「詳細/テンプレートのカスタマイズ」にありますので、ご覧ください。ユーザ定義の変数を作成する方法はいくつかありますが、ここでは「パラメータ」として作成します。

「simple[シンプル]」プロジェクトの中にある、template.xmlをダブルクリックしてください。以下のようにテンプレート・エディタが開きます。

テンプレート・エディタ 概要

テンプレート・エディタ 概要(クリックで拡大)

この画面の説明は次回しますので、とりあえず今は右下の「パラメータ」をクリックしてタブを開き、「新規」ボタンを押して「myName」を作成してください。

テンプレート・エディタ パラメータ

テンプレート・エディタ パラメータ(クリックで拡大)

説明文は適当に入力します。型は「文字列」、デフォルト値は空白にして保存してください。

さて、再度帳票クラスウィザードを実行してみます。

作成したパラメータ(クリックで拡大)

作成したパラメータ(クリックで拡大)

ウィザードの最後のページで、作成したパラメータが見えるようになりました。追加したパラメータをダブルクリックして、値を指定します。

作成したパラメータ

作成したパラメータ

ウィザードを終了すると、以下のように出力されます。

作成したパラメータ(クリックで拡大)

作成したパラメータ(クリックで拡大)

FreeMarker

帳票クラスウィザードは、テンプレートファイルをFreeMarkerというテンプレートエンジンを使用して処理します。今回作成した変数の「${myName}」という記述や、テンプレートファイル中の「<#if~>」などの記述は、FreeMarkerのテンプレート言語であるFTL(FreeMarker Template Language)のものです。FreeMarkerはThe Visigoth Software Societyによるプロダクトで、オープンソース(BSDスタイルのライセンス)により開発が行われています。

機会があれば、FreeMarkerの使い方やFTLについても解説しようと思います(未定ですが)。

次回は、テンプレートに含まれるそのほかのファイルと、テンプレートエディタについて解説します。