【DBFlute.NET】区分値について

18 views
Skip to first unread message

cuted...@gmail.com

unread,
Apr 18, 2019, 2:26:36 AM4/18/19
to DBFluteユーザの集い
志水です。
こんにちは。

DBFlute.NET版の区分値について教えてください。
今まで区分値はさわり程度しか利用していなかったのですが
もう少し使いこなそうとして定義をしてみたのですが
下記の定義を行ってもスキーマ定義には表現されているのですが
実際のコードでは利用できない?ようなのですが
.NET版は未対応(泣)ということでしょうか?
・SubItem
・groupingMap 
・SisterCode

以上、ご教授お願いします。

kubo

unread,
Apr 18, 2019, 8:48:22 AM4/18/19
to DBFluteユーザの集い
jfluteです

志水さん、こんばんは

区分値のアドバンスな機能の利用ありがとうございます。
で、申し訳ないですが、そのようですね。。。

要は、CDef.vmnet での対応なので、
Java版の CDef.vm を参考に直接修正してしまえば利用はできるとは思います。
https://github.com/dbflute/dbflute-core/blob/a7977d4d87eb3cecdfbacca351b224370b06a450/dbflute-engine/embedded/templates/om/java/allcommon/CDef.vm

cuted...@gmail.com

unread,
Apr 18, 2019, 9:56:47 PM4/18/19
to DBFluteユーザの集い
志水です。

jfluteさん
おはようございます。
ご回答ありがとうございます。

あぁ~、やはりそうですか(泣)
投稿前に多分、CDef.vmnet なんだろうなぁとJava版と比較してみて
SisterとかGroupとかの単語がJava版にあるのにC#版には無いなぁと思ってました。
それに中身が結構難しそうだし、これを修正しただけでいいのかがわからず
エディタ閉じちゃってました(笑)
すぐに断念するかもですが
ちょっといじってみます。




2019年4月18日木曜日 21時48分22秒 UTC+9 jflute:

cuted...@gmail.com

unread,
Apr 19, 2019, 2:57:47 AM4/19/19
to DBFluteユーザの集い
志水です。
こんにちは。

少しCDef.vmnetをいじってみたのですが
私にはちょっと難易度が高いようです(泣)
いろいろと記述の仕方がよくわからない部分がありますが
適当なところで一旦generateしてみたのですが
結果を見ると
 $subItemMap.entrySet()にsubitemを設定した値が入ってきていない??ようです。

あとは以下の点でどうコーディングすればいいかがわからないです。。
★★★ javaの「static {」をC#では「void 名前()」入れないとエラーになるのですがどう書いていいのかわからない ★★★
         static {
            {
                Map<String, Object> subItemMap = new LinkedHashMap<String, Object>();
★★★ ここにentryの内容が展開されるとおもうのですけど・・・・ ★★★
                _subItemMapMap.put(SHINSAKU.Code, subItemMap);
            }
            {
                Map<String, Object> subItemMap = new LinkedHashMap<String, Object>();
★★★ ここにentryの内容が展開されるとおもうのですけど・・・・ ★★★
                _subItemMapMap.put(KAISYU.Code, subItemMap);
            }
        }

★★★ ClassificationMeta って何ですか? ★★★
 public ClassificationMeta meta() { return ${glCDef}.DefMeta.${classificationName}; }


どなたかお分かりになる方
ご教授お願いします。




2019年4月19日金曜日 10時56分47秒 UTC+9 cuted...@gmail.com:
CDef.vmnet

cuted...@gmail.com

unread,
Apr 19, 2019, 3:14:50 AM4/19/19
to DBFluteユーザの集い
志水です。

「javaの「static {」をC#では「void 名前()」入れないとエラーになるのですがどう書いていいのかわからない」
の部分ですが
コンストラクタでやればいいのかな?ということで移動させてみました。





2019年4月19日金曜日 15時57分47秒 UTC+9 cuted...@gmail.com:
CDef.vmnet

cuted...@gmail.com

unread,
Apr 19, 2019, 4:12:46 AM4/19/19
to DBFluteユーザの集い
志水です。
連投すいません。

どうやら、subItemの部分にClassificationMetaの部分は関係ないみたいですね。。
CDefのソースにentry部分を書き加えて動かしたらsubItemのデータは取れてきましたので
コンストラクタに移動しただけでいいみたいです。
あとは、entry.keyとentry.valueから値が何故とれないかの原因がわかれば
ひとまずsubItemは解決できそうですが・・・・
しかし、なぜとれないのでしょう??










2019年4月19日金曜日 16時14分50秒 UTC+9 cuted...@gmail.com:

kubo

unread,
Apr 19, 2019, 4:51:16 AM4/19/19
to DBFluteユーザの集い
jfluteです

志水さん、チャレンジありがとうございます。
素晴らしいです。

> あとは、entry.keyとentry.valueから値が何故とれないかの原因がわかれば
> ひとまずsubItemは解決できそうですが・・・・

切り分けのために...SchemaHTMLの方では、subItemMap表示されていますか?
(最初の投稿で表現されているということでしたが、念のためsubItemMapだけで確認)

表示されているのであれば、DBFlute Engine 自体は情報を持っているということになります。
(datamode.vm の buildSubItemExpForSchemaHtml() は効いているということに)
https://github.com/dbflute/dbflute-core/blob/a21ac5f9640fbad415206ac392e6a214132670fe/dbflute-engine/embedded/templates/doc/html/datamodel.vm#L685

#if ($classificationTop.hasSubItem())
<td>${classificationElement.buildSubItemExpForSchemaHtml()}</td>
#end

> 「javaの「static {」をC#では「void 名前()」入れないとエラーになるのですがどう書いていいのかわからない」
> の部分ですが
> コンストラクタでやればいいのかな?ということで移動させてみました。

一応、静的コンストラクター (Static Constructors) というものがあるようです。
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/static-constructors

cuted...@gmail.com

unread,
Apr 19, 2019, 7:39:30 AM4/19/19
to DBFluteユーザの集い
志水です。

>志水さん、チャレンジありがとうございます。 
>素晴らしいです。
ありがとうございます。
うまく出力できたのでうれしいです。

>切り分けのために...SchemaHTMLの方では、subItemMap表示されていますか? 
>(最初の投稿で表現されているということでしたが、念のためsubItemMapだけで確認) 
スキーマHTMLを抜粋したpngを添付しました。
みたところ、やはり出力はされているようです。
他にsistercodeやGroupingMapも定義していたときは
スキーマHTMLには出力されていました。






2019年4月19日金曜日 17時51分16秒 UTC+9 jflute:
hoge.png

kubo

unread,
Apr 19, 2019, 7:55:26 AM4/19/19
to DBFluteユーザの集い
jfluteです

> みたところ、やはり出力はされているようです。
> 他にsistercodeやGroupingMapも定義していたときは
> スキーマHTMLには出力されていました。

ありがとうございます。
したら DBFlute Engine 的にはちゃんと値を持ってますね。
あと少しのはずです。

試しに、datamodel.vm の方でやっている
${classificationElement.buildSubItemExpForSchemaHtml()}
をCDef.vmnetで使ってみたら、どう表示されます?
(そのbuildメソッドの中では、entrySet()使っているので)

また、修正したCDef.vmnetの該当箇所を見せて頂けます?
(メールに貼り付けちゃってもOKですし、vmnetまるごとでもOKです)

cuted...@gmail.com

unread,
Apr 19, 2019, 8:27:21 AM4/19/19
to DBFluteユーザの集い
志水です。

特にエラーにはならなかったです。
しかしsubitemデータのput部の吐き出しはされていませんでした。
状況変わらずです。


            static KOUZAIRYOU() {
                _codeValueMap.put(Skd11.Code.ToLower(), Skd11);
                _codeValueMap.put(Skh9.Code.ToLower(), Skh9);
                _codeValueMap.put(Sk.Code.ToLower(), Sk);
                _codeValueMap.put(Sks.Code.ToLower(), Sks);
                _codeValueMap.put(Scm435.Code.ToLower(), Scm435);


                Map<String, Object> subItemMap = new LinkedHashMap<String, Object>();
                subItemMap = new LinkedHashMap<String, Object>();
                _subItemMapMap.put(Skd11.Code, subItemMap);
                subItemMap = new LinkedHashMap<String, Object>();
                _subItemMapMap.put(Skh9.Code, subItemMap);
                subItemMap = new LinkedHashMap<String, Object>();
                _subItemMapMap.put(Sk.Code, subItemMap);
                subItemMap = new LinkedHashMap<String, Object>();
                _subItemMapMap.put(Sks.Code, subItemMap);
                subItemMap = new LinkedHashMap<String, Object>();
                _subItemMapMap.put(Scm435.Code, subItemMap);


            }



2019年4月19日金曜日 20時55分26秒 UTC+9 jflute:
CDef.vmnet

kubo

unread,
Apr 19, 2019, 9:03:23 AM4/19/19
to DBFluteユーザの集い
jfluteです

あっ、buildメソッドはentrySet()を戻すわけではなく、
SchemaHTML用のsubItem情報の文字列を戻すだけです。
なので...

#foreach ($entry in
$classificationElement.buildSubItemExpForSchemaHtml().entrySet())

ではなく、

$classificationElement.buildSubItemExpForSchemaHtml()

だけ書いて、subItemの値が表示されるかどうかを確認したいというところです。
DocタスクかGenerateタスクかの違いでsubItemの情報があるかどうかを切り分けるために。

...

一方で、Map<String, Object> subItemMap の宣言は出力されるということは、
#if ($database.hasClassificationSubItemMap($classificationName))
はtrueになっているわけですね。

_subItemMapMap.put...も表示されるということは、
#foreach ($classificationElement in
$classificationTop.classificationElementList)
のループも回っていると。

ん?

#set ($subItemMap = $classificationElement.name)

がおかしいような!?
$subItemMap変数にnameを入れてしまっています。

cuted...@gmail.com

unread,
Apr 19, 2019, 9:26:40 AM4/19/19
to DBFluteユーザの集い
志水です。

あれーーーーー??
すいませーーーんm(__)m
ごちゃごちゃさわっているうちに
上書きコピペしてしまってたみたいです。

直したら、subitemデータのput部の吐き出しできました。

ありがとうございましたーー。







2019年4月19日金曜日 22時03分23秒 UTC+9 jflute:

kubo

unread,
Apr 19, 2019, 10:44:16 AM4/19/19
to DBFluteユーザの集い
jfluteです

> 直したら、subitemデータのput部の吐き出しできました。

おおー、良かったですー。
最終的にできあがった、vmnetファイル、添付して頂けると嬉しいです。
他の人も使えますし、バックアップにもなりますしね。

cuted...@gmail.com

unread,
Apr 20, 2019, 1:04:01 AM4/20/19
to DBFluteユーザの集い
志水です。


>最終的にできあがった、vmnetファイル、添付して頂けると嬉しいです。 
>他の人も使えますし、バックアップにもなりますしね。 
了解です。
いろいろとお助け頂いて有難うございました。
もし使ってみて問題や改善点など
気づいた方居られましたら
ご連絡ください。。
私も、今回の案件で使う予定なので
何かあればまたご連絡します。。。

以上、宜しくお願い致します。






2019年4月19日金曜日 23時44分16秒 UTC+9 jflute:
CDef.vmnet
Reply all
Reply to author
Forward
0 new messages