lastafluteMap.dfprop

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 に環境を追加します。

2. lastafluteMap.dfprop にて env を追加

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のインターフェース自動生成
mail
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 を指定することで、アプリ区分値名前付き区分値 を自動生成することができます。