前回は基本的なデータ入力の方法を解説しました。
今回では応用編と言いますか、各種便利機能を解説します。
基礎データの値をそのまま利用する
基礎データの値をそのままマスターデータに利用する際は、基礎データをそのまま返すgetメソッドを用意しても良いのですが、@Decisionアノテーションを使う事で省略できます。
/** カラム「enemy_id」の値が入る */ @Decision protected int enemy_id;
@Decisionをメンバ変数の前に追記しました。これだけで、getメソッドを用意しなくても基礎データをそのまま利用できます。
※これを設定した場合はgetメソッドは定義しないでください。(サンプルの場合ならget_enemy_idメソッドは定義しない)
変換後のカラムの順番を指定する
テンプレートにも含まれていますが、@ColumnOrderアノテーションを使う事で指定できます。
@ColumOrder(数値)の形で、中の数値が小さいものがテーブルの左になり、大きいもの程右になります。
上記の@Decisionにも指定できます。
特定の行は無視する
特定の条件に合致した行を省く事が出来ます。
典型的な利用例は日付の古いものを省いたり、デバッグ用のデータを省いたりといった感じでしょうか。
これもテンプレートに含まれていますが、@ThinDownアノテーションがついたメソッドを定義します。
これの返り値がtrueとなる行は出力されません。
例えば、enemy_idが奇数なものを省くなら以下の通りです。
/** * ここのreturnの結果がtrueの行は出力されない。 * * @return trueなら行を間引く */ @ThinDown public boolean thindown() { // 2で割った余りが1なら奇数 return (enemy_id % 2) == 1; }
これでidが偶数な物しかマスターデータに含まれません。
特定の行をツールで見たときに目立たせたい
こちらは特定の条件に合致した行の色をツールで見たときに変更できます。
これには@ColorMarkerを利用します。
例えば奇数行の色を変更したいとき
/** * 奇数なら赤色にする * @return */ @ColorMarker( "#f00" ) public boolean colorMarker() { // 2で割った余りが1なら奇数 return (enemy_id % 2) == 1; }
@ColorMarkerのカッコの中が色の指定です。
これの指定方法はCSSの色指定と一緒です。
このColorMarkerは複数定義できます。
テーブル名を基礎テーブルから変換する
@TableNameアノテーションのカッコの中を変更するだけです。
別のテーブルの情報を利用する
対象のテーブルではない別のテーブルの情報を利用できます。
タイプ1:特定テーブルのすべての行を参照する
@Tableアノテーションを使います。
@Table( "テーブル名" ) private TableData 変数名;
これにより、指定の基礎テーブルの行をすべて参照できます。
この変数はfindを利用して行を検索できます。
// 定義 @Table( "master_enemy_data" ) private TableData table; // ある関数内 // enemy_idが1の行を検索 Row row = table.find( "enemy_id", 1 ); // 行からenemy_nameカラムの値を取得 String enemy_name = row.getColumnValue( "enemy_name" );
といった具合です。
タイプ2:特定の1行だけ参照する
@TableRowアノテーションを使います。
@TableRow( table="テーブル名", column="検索カラム", value="検索値" ) private Row 変数名;
指定のカラムの値が検索値と合致する行が自動で設定されます。
検索結果が複数行になる場合は型をRowからList<Row>にします。
@TableRow( table="テーブル名", column="検索カラム", value="検索値" ) private List<Row> 変数名;
タイプ3:ツール上で関連テーブルの行を表示する
少し毛色は違いますが、@Referenceアノテーションを利用する事でツール上の「参照」ボタン等から関連する行を表示する事が出来ます。
@TableRowと同様の指定をする事で、ツール上で見たときに参照としてリンクが表示されます。
変換後のテーブルにインデックスを指定する
これはDBの最適化の話ですが、DBにはインデックスという検索の高速化システムが搭載されています。
DDLで出力したときにこのインデックスを有効にできます。この設定はデータベースのエンジニアの方と相談して決める事をオススメします。
設定は簡単で@Decisionがついたメンバ、もしくは各getメソッドに@Indexアノテーションを設定するだけです。