以前環境設定をしたこのツールで実際にデータを作っていきます。
応用編もあります。
基礎データを作る
データを作る際はまず基本となるデータを入力してそれに何らかの計算をして最終的な数値として扱うと思います。
まずこの基礎データを作ります。
今回はひとまず敵のパラメータを例にとって以下の基礎データを入力します。
整数 | 文字列 | 小数 | 小数 |
---|---|---|---|
enemy_id | enemy_name | hp_rate | attack_rate |
1 | スライム | 1 | 1 |
2 | ゴブリン | 1.5 | 1.5 |
ではこれをDBに入力します。
テーブル作成
前回のテストデータ作成と同様にテーブルを作成します。
テーブル名は「master_enemy_data」にしました。
カラム数は上記の通り4つです。
カラムの設定も上の表のとおりにします。
INTが整数、TEXTが文字列、DECIMALが小数です。
DECIMALの右側には数値の桁数を指定します。
カンマの右側が小数点以下の桁数、左側が整数と小数を含めた全部の桁数です。
これで目当てのテーブルが出来上がります。
データ入力
上記テーブルのデータを入力していきます。
「insert」から行の追加が出来ます。
そのまま入力します。
入力が終わったら左上の「Browse」から入力したデータが確認できます。
ツールの方でも確認してみます。
変換ルールを作る
では基礎データをもとにマスターデータを作るための変換ルールを設定します。
ルールとしては、
- enemy_idとenemy_nameはそのまま利用する
- hp_rateは100倍して小数点以下を切り捨てた整数値をhpという名前で利用する
- attack_rateは10倍して小数点以下を切り捨てた整数値をattackという名前で利用する
とします。
テンプレから作る
まずはファイルを生成します。
ファイルは名前を「Table_【テーブル名】」として「plan.tables」に配置します。
上記ならテーブル名が「master_enemy_data」なので、ファイル名は「Table_master_enemy_data」です。
NetBeansで「ソース・パッケージ」→「plan.tables」を右クリックして「新規」→「Javaクラス」を選択します。
クラス名、場所、パッケージが間違ってないか確認して終了します。
次にツールのテーブル一覧から「テンプレート生成」を選択します。
テンプレートの内容をコピーして先ほど作ったJavaクラスファイルへペーストします。
Ctrl+sでファイルを保存して、プロジェクトを右クリックして「ビルド」→「デバッグ」の順に選択します。
この状態でツールを見ると変換後のデータが生成されています。
この「Table_master_enemy_data」クラスが、「master_enemy_data」の行のデータを変換してマスターデータにします。
先ほど決めた変換ルールをクラスに実装する
- enemy_idとenemy_nameはそのまま利用する
- hp_rateは100倍して小数点以下を切り捨てた整数値をhpという名前で利用する
- attack_rateは10倍して小数点以下を切り捨てた整数値をattackという名前で利用する
これを実装します。
enemy_idとenemy_nameは出来ているのでそのままです。
まず、hp_rateを変更します。
hp_rate
まず「100倍して」「小数点以下を切り捨て」て「整数」にします。
すでにある「get_hp_rate」メソッドを編集します。
/** * hp_rateカラムを生成する * * @return セルの中身 */ @ColumnOrder( 3 ) public double get_hp_rate() { return hp_rate; }
これを次のように変更します。
/** * hp_rateカラムを生成する * * @return セルの中身 */ @ColumnOrder( 3 ) public int get_hp_rate() { // 100倍 double bi100 = hp_rate * 100; // 切り捨て double floor = Math.floor( bi100 ); // 整数に int result = (int) floor; return result; }
注意点としては戻り値が整数であるintへ変更されています。(public int get_hp_rate)
次に名前は「hp_rate」から「hp」へ変更します。
/** * hp_rateカラムを生成する * * @return セルの中身 */ @ColumnOrder( 3 ) public int get_hp() { // 100倍 double bi100 = hp_rate * 100; // 切り捨て double floor = Math.floor( bi100 ); // 整数に int result = (int) floor; return result; }
メソッド名を「get_hp」に変更しただけですが、これだけで名前変更は終わりです。
この状態でまた、ビルドとデバッグをしてツールで確認してみてください。hp_rateが整数型のhpに変更されているはずです。
attack_rate
同じく「10倍」して「小数点以下を切り捨て」して「整数」にします。名前も「attack」へ。
/** * attack_rateカラムを生成する * * @return セルの中身 */ @ColumnOrder( 4 ) public int get_attack() { double bi100 = attack_rate * 10; double floor = Math.floor( bi100 ); int result = (int) floor; return result; }
仕組み
このツールではクラスやメソッドの名前やアノテーション(@から始まる目印)を解析して自動生成しています。
テーブルの定義
テーブルの定義は「Table_【テーブル名】」というクラスです。
このクラスと基礎データのテーブルの双方が存在すれば変換されます。
カラムの定義
変換後のテーブルのカラムの情報は変換クラス内の「get_」から始まるメソッドがカラムに割り当てられます。
「get_hoge」というメソッドが定義されている場合は、「hoge」カラムが生成されます。
元の基礎データのカラムを引き継ぐ必要はありません。基礎データからカラムが増えたり減ったり、変化しても問題ありません。
カラムの型
カラムの型は上記カラム用メソッドの返り値を解析して適切なものに設定されます。
基礎データの値
基礎データに設定された値はカラムと同じ名前のメンバ変数を定義すると自動で設定されます。
次回はこのツールの応用編です。