lastafluteMap.dfprop
- Lasta の dfprop とは?
- 基本プロパティ
- 環境プロパティ
- appMapプロパティ
- freeGenListプロパティ
- propertiesHtmlListプロパティ
- 規約の微調整 (overrideMap)
- 区分値の自動生成
Lasta の dfprop とは?
LastaFluteの規約をDBFluteに適用させる dfprop です。
例えば、FreeGenの設定、PropertiesHTMLの設定など、直接 DBFlute に設定すると dfprop が膨張して管理が煩雑になってしまいますが、LastaFluteの規約をDBFluteに組み込み、簡易な設定で反映させられるようにしています。
e.g. Maihamaプロジェクトの lastafluteMap.dfprop @lastafluteMap.dfprop
map:{
# your service name, camel case, initial uncapitalised
; serviceName = maihama
# package for your domain name, e.g. com.example
; domainPackage = org.docksidestage
# settings for common project of all web applications
; commonMap = map:{
; path = ..
; freeGenList = list:{ env ; config ; label ; message ; mail ; template ; doc ; namedcls }
; propertiesHtmlList = list:{ env ; config ; label ; message }
}
# settings for web applications
; appMap = map:{
; dockside = map:{
; path = ../../maihama-dockside
; freeGenList = list:{ env ; config ; label ; message ; mail ; template ; html ; doc ; appcls ; namedcls }
; propertiesHtmlList = list:{ env ; config ; label ; message }
}
; hangar = map:{
; path = ../../maihama-hangar
; freeGenList = list:{ env ; config ; label ; message ; mail ; template ; doc ; appcls ; namedcls }
; propertiesHtmlList = list:{ env ; config ; label ; message }
}
}
# you can override (several) default settings like this:
#; overrideMap = map:{
# ; dockside.freeGen.mail.targetDir = ./playsql/data/mail
#}
}
基本プロパティ
- serviceName
- プロジェクト全体のサービス名、Maihamaプロジェクトなら maihama
- domainPackage
- サービスのドメイン部分を表すパッケージ (この直下に app や mylasta など)
環境プロパティ
- environmentList
- デプロイ環境のリスト、結合と本番の二つなら integration ; production
- isUseLastaEnv
- LastaEnvスタイルか? (Exampleテンプレートではtrue)
もし、デプロイ環境が増えたら、environmentList に環境を追加します。
Maven の Profile 機能などを使って環境切り替えを実現する場合は、isUseLastaEnv を false にしますが。LastaFluteのやり方としては、true がオススメです。
appMapプロパティ
ここでは、アプリごとの FreeGen や PropertiesHTML の設定などをしていきます。
e.g. Maihamaプロジェクトの lastafluteMap.dfprop @lastafluteMap.dfprop
map:{
# settings for common project of all web applications
; commonMap = map:{
; path = ..
; freeGenList = list:{ env ; config ; label ; message ; mail ; template ; doc ; namedcls }
; propertiesHtmlList = list:{ env ; config ; label ; message }
}
# settings for web applications
; appMap = map:{
; dockside = map:{
; path = ../../maihama-dockside
; freeGenList = list:{ env ; config ; label ; message ; mail ; template ; html ; doc ; appcls ; namedcls }
; propertiesHtmlList = list:{ env ; config ; label ; message }
}
; hangar = map:{
; path = ../../maihama-hangar
; freeGenList = list:{ env ; config ; label ; message ; mail ; template ; doc ; appcls ; namedcls }
; propertiesHtmlList = list:{ env ; config ; label ; message }
}
}
マルチプロジェクトの場合は、commonMap も含みます。そのまま commonプロジェクトの設定をします。 path は、DBFluteクライアントが common にあれば一個上に行くだけなので ".." です。
appMapの方は、アプリ名 (maihama-dockside なら dockside) を map のキーにします。path は、DBFluteクライアントからの相対パスでそのアプリのプロジェクトルートまで少し旅に出ます。
freeGenListプロパティ
そのアプリで、FreeGenで自動生成するものを指定します。
- env
- [app]_env.propertiesのインターフェース自動生成
- config
- [app]_config.propertiesのインターフェース自動生成
- label
- [app]_label.propertiesのインターフェース自動生成
- message
- [app]_message.propertiesのインターフェース自動生成
- MailFlute の Postcard クラスの自動生成 (src/main/resources/mail配下のdfmail)
- template
- 汎用テンプレート対応のクラスの自動生成 (src/main/resources配下のdfpm)
- jsp @ *
- JSPのパス定義の自動生成 (web-INF/view配下の .jsp と.html)
- html @ *
- HTMLテンプレートのパス定義の自動生成 (web-INF/view配下の .html)
- doc
- LastaDocの自動生成 (dbflute_[app]db/output/lasta配下に出力)
- appcls
- アプリ区分値の自動生成 (AppCDefとして出力、アプリプロジェクトのみ)
- namedcls
- 名前付き区分値の自動生成 ([Named]CDefとして出力、commonでも可能)
"@" (あっとまーく) の付いているものは、commonプロジェクトでは不要です。
"*" の付いているものは、どちらか一つ、もしくは、JSON API なら両方とも不要です。
基本、それ以外はすべて指定しておきましょう。例えば、mail や template などは仮に使わないとしても、対象となるファイルを作らなければいいだけです。
propertiesHtmlListプロパティ
そのアプリで、PropertiesHTMLの対象とするものを指定します。
- env
- [app]_env.propertiesのインターフェース自動生成
- config
- [app]_config.propertiesのインターフェース自動生成
- label
- [app]_label.propertiesのインターフェース自動生成
- message
- [app]_message.propertiesのインターフェース自動生成
基本、すべて指定しましょう。
規約の微調整 (overrideMap)
DBFluteにて組み込まれている規約をちょっと違うものにしたい場合...
例えば、"MailFluteのメールテンプレートをDB管理にしたいけど、テストデータをXLSやTSVで管理するのはつらいので、ReplaceSchemaで外部ファイル読み込みで .dfmail ファイルののままで管理したいけど、置き場所が違うので自動生成できなくなっちゃう" というような場合、overrideMap を使うことで置き場所を変更できます。
まず、置き場所を例えば playsql/data/ut/mail にしたとします。
e.g. Maihamaプロジェクトの lastafluteMap.dfprop @Directory
dbflute_maihamadb
|-playsql
| |-data
| | |-ut
| | | |-mail
| | | | |-welcome_to_sea.dfmail
| | | | |-welcome_to_land.dfmail
| | | |-...
| | |-...
| |-...
|-...
そして、ReplaceSchema の方の設定で、XLSやTSVからそれらの.dfmailのテキスト内容をDBに登録するようにします。 (loadingControlMap.dataprop で largeTextFileMap を定義して、XLSやTSVでパス指定)
でもって、lastafluteMap.dfprop にて overrideMap を指定します。mail のディレクトリを指定するプロパティは、[app].freeGen.mail.targetDir です。
e.g. lastafluteMap.dfprop で overrideMap を定義、メールの場所を変更 @lastafluteMap.dfprop
# settings for web applications
; appMap = map:{
; dockside = map:{
; path = ../../maihama-dockside
; freeGenList = list:{ env ; config ; label ; message ; mail ; template ; html ; doc ; appcls ; namedcls }
; propertiesHtmlList = list:{ env ; config ; label ; message }
}
; hangar = map:{
; path = ../../maihama-hangar
; freeGenList = list:{ env ; config ; label ; message ; mail ; template ; doc ; appcls ; namedcls }
; propertiesHtmlList = list:{ env ; config ; label ; message }
}
}
; overrideMap = map:{
; dockside.freeGen.mail.targetDir = ./playsql/data/ut/mail
}
ソースコード的には、DfLastaFluteFreeGenReflector です。
区分値の自動生成
freeGenList で、appcls や namedcls を指定することで、アプリ区分値 や 名前付き区分値 を自動生成することができます。