自動生成対象外でもReplaceSchemaでは扱う

http://d.hatena.ne.jp/jflute/20110405#c1302056414
のコメントに対する返答記事も兼ねて。

databaseInfoMap.dfprop の
objectTypeTargetList プロパティ、
これは、そのアプリケーションにおいて、テーブルとして
取り扱うデータベースオブジェクトは何か、の定義。
テーブルはもちろん、ビュー、シノニム、エリアスなど。
要は、自動生成対象のオブジェクトってことですね。
ですが、ReplaceSchema に関して言うと、
スキーマ初期化時のドロップ対象のオブジェクトと言えます。

本当は、自動生成の機能と ReplaceSchema とで、
独立したプロパティにすべきだったかもしれませんが、
ほとんどの場合そこは一致するので、特に問題もなく
現状はこのような仕様となっています。
 -> dfprop - objecttypetargetlist

さて、コメントにあった話ですが、とあるビュー、

o 自動生成では対象外にしたい
o ReplaceSchema では drop したい

という要件になるかと思います。
objectTypeTargetList からビュー(VIEW)を外すと、
ReplaceSchema で drop されません。
ビュー(VIEW)を入れると(デフォルト)、自動生成されて
しまいます。自動生成されても使わなければいいだけと
言えますが、使わないものはできれば自動生成したくない。
しかも今回は日本語テーブルということでなおさら。
三つ選択肢を挙げておきましょう。
{A}
自動生成したくないのがビュー全体なのか、
それとも、とあるビューだけなのか。
後者なら、そもそも objectTypeTargetList ではなく、
tableExceptList を利用すべきでしょう。
ビューが外したいんじゃなくて、そのオブジェクトが外したい。
 -> dfprop - tableExceptList

{B}
ビューをとにかく自動生成したくない、でも、ビューを
ReplaceSchemaとしては扱いたい、という状況であれば、
replaceSchemaDefinitionMap.dfprop の
additionalDropMapList を利用すると良いでしょう。
テーブル削除時に、追加的にテーブルを削除することができます。

本来は、別スキーマのテーブルを削除するための機能ですが、
同じスキーマを指定しても全然構いません。
こちらの設定でビューだけを削除するようにしておけばOK。
 -> dfprop - additionalDropMapList

{C}
さらには、自動生成と ReplaceSchema で参照する
databaseInfoMap.dfprop を別にしてしまうことも
できます。自動生成と ReplaceSchema であまりに
インフラ的な面での違いが発生するようであれば、
これが一番わかりやすい選択肢です。

環境変数で切り替えます。
replace-schema.bat(.sh) で ReplaceSchema 独自の
環境変数を定義して切り替えるようにしてしまえば良いでしょう。
 -> 環境タイプごとの dfprop

ただ、他の目的でも環境タイプによる切り替えを利用する場合に、
ちょっと設定がどうしても冗長してしまうかもしれませんね。
(まあ、でもこれら dfprop だけならたいしたことないかな)
ひとまずは、id:Hnoss さん、どうでしょう?
個人的には、「ビューが自動生成したくない」ではなく、
「アプリで使わないオブジェクトを自動生成したくない」
と言えると思うので、"A" が一番良いのかなとは思います。

かなり多くの要らないビューがあって、名前にも統一性がない、
ということで設定しづらい可能性はありますが、それなら、
改善するにしても、objectTypeTargetList よりも
tableExceptList をもっと柔軟なものにしていくのが
現実的なのかなと。

{追記}
まあ、ただ ReplaceSchema は独立した領域の機能ではあるので、
今後のためにも ReplaceSchema 専用の objectTypeTargetList を
環境タイプとか使わずに指定できるようにしてもいいかなぁ...

{追記}
SYNONYMとかのことを考えると、完全に独立するのが良いとは
言えないので、上書き形式で調整できるようにしました。
replaceSchemaDefinitionMap.dfprop にて、
objectTypeTargetList を指定することで、ReplaceSchema のみ
において有効なプロパティとなります。(0.9.8.2 より)

@DBFlute, Java, DBFlute.NET, C#