除外テーブルで指定したパターンの一部を除外しない。

わかりにくいでしょうか??


たとえばマスタテーブルとして、
M_始まりのテーブルがあったとします。
マスタは生成しなくていいや。って時に、


除外テーブルとして、
prefix:M_
を指定するんだけど、
事情により、M_MUSTテーブルは生成したい。


といったような話。もちろん、除外するM_のみを完全一致で書いていくってのもいいでしょうし、逆に対象のみをすべてリストアップでもいいとは思いますが、
どちらもあまり芳しくないような場合についてです。


除外については
JDBCタスク時の除外テーブルを指定する(まとめ) - mokkouyou2001の日記
を参照


試行1

table.target.list.dfprop
もしくは、ビルドファイルに、torque.table.target.list
を除外と同じように、
生成したいテーブルを記述すればいいかと思ったが、

このリストは、
空(何も指定しない)だと、すべてのテーブルを対象にして、
そこから除外指定されたテーブルを除くといった動作をするが、


何かを指定した場合は、それのみを生成対象とする
といった動作をします。(全般的なルールっぽい)


なので、今回のような
除外から除外したいものを明示的に指定するという用途には使えない。


ただし、prefixなどが使えるのもtable.except.list
と同じなので、
前述の通り、生成したい方が多いのか、除外したい方が多いのか?
生成対象をすべて指定する。などでもよいかも。


ただし、指定した場合、table.except.listの指定は無視されます。
対象リスト-除外リスト=生成対象
ではなく、
対象リスト=生成対象
となるので注意が必要。

試行2

んじゃぁ・・・まぁdbfluteに手を入れるかい?
というわけで、ソースをひっぱってきて調べてみる。


どうやら、
DfNameHintUtil
に対して、
たとえば、
excludesPrefix
excludesSuffix
excludesContain
excludes
などを用意して、
ちょいちょいとロジック加えればよいようです。


ちょいと今日はテストまでかけないので一応予想で終了。
テーブルのところだけではなく、
カラムのあたりでも使用しているし、
ちょいと巻き込む範囲が大きい気もするけどね。


というよりも、対象にするリストでも、対照にしないリストでも
利用しているため、一律同じロジックでいいの??
という整理がつかないというのもあります。夜は駄目だね(^^;


ちなみに、結構わかりやすいのでソース読んでみるのもお勧めです。
きっとVelocity周りは大変だろうけど・・・


一応追記しました。
続)生成除外指定の例外指定 - mokkouyou2001の日記