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 を指定することで、アプリ区分値 や 名前付き区分値 を自動生成することができます。
