[Seasar-user:15130] Re: 【DBFlute】共通カラム機能を利用したコード生成について質問

kubo [E-MAIL ADDRESS DELETED]
2008年 7月 24日 (木) 00:43:48 JST


久保(jflute)です。

http://dbflute.sandbox.seasar.org/download/dbflute/dbflute-0.7.7.zip
にて、AccessContextに汎用的な値を格納できるプロパティを
追加しました。Map(Dictionary)形式で、キー値で自由に値を格納できます。

またわからないことがあったら聞いて下さい。
今後もよろしくお願いします。

2008/7/23 柴切 卓 <[E-MAIL ADDRESS DELETED]>:
>
> 柴切です。
>
> 共通カラム機能について、だいぶわかってきました!
>
> 丁寧に回答いただき、とても助かりました。
>
> ありがとうございました。
>
>
> kubo さんは書きました:
>> 久保(jflute)です。
>>
>>
>>> このあたりのAccessContextの定義は自分で記述しなければならないのでしょうか?
>>>
>>
>> AccessContextはある意味「値を運ぶための箱」
>> なわけですが、汎用的な入れ物しか用意していません。
>>
>>     protected String accessUser;
>>     protected String accessProcess;
>>     protected java.util.Date accessDate;
>>     protected java.sql.Timestamp accessTimestamp;
>>
>> 名前が付いていますが、制約はありません。
>> ただの箱だと思って下さい。
>>
>> 上記の合致しない独自のカラムに関しては、
>> AccessContextと同等のクラスをプロジェクトで
>> 独自に作成して下さい。(コピーして書き換える感じでOKです)
>> 要は、スレッドローカルで値を運べれば良いので、
>> 必ずAccessContextを使わなければならないというわけでは
>> ありません。AccessContextはあくまで汎用実装となります。
>>
>> その場合dfpropには
>>
>> ; ABCFlag= DokujiProject.DokujiContext.GetABCFlagOnThread()
>>
>> という感じで、フルネームで書きます。
>>
>>
>> #
>> # ただ、汎用的に使える領域を用意しても良いかもしれませんね。
>> # ; ABCFlag= $$AccessContext $$.GetValueOnThread("ABCFlag")
>> # みたいな感じで。。。
>> #
>>
>>
>> 2008/7/23 柴切 卓 <[E-MAIL ADDRESS DELETED]>:
>>
>>> 柴切です。
>>>
>>> 久保さん、返信ありがとうございます。
>>>
>>> 参考ページを踏まえて、
>>>
>>> map:{
>>> ; commonColumnMap = map:{
>>> ; ABCFlag=CHAR
>>> }
>>> ; beforeInsertMap = map:{
>>> ; ABCFlag= "A"
>>> }
>>> ; beforeUpdateMap = map:{
>>> ; ABCFlag= $$AccessContext$$.GetABCFlagOnThread()
>>> }
>>> }
>>>
>>> こんな感じでcommonColumnMap.dfpropファイルを設定してコード生成するのかと
>>> 思いました。
>>>
>>> 実際生成してみると、AccessContextクラスには
>>>
>>> 「String? AccessABCFlagプロパティ」 や 「String? GetABCFlagOnThread()
>>> メソッド」
>>>
>>> は定義されていませんでした。
>>>
>>> このあたりのAccessContextの定義は自分で記述しなければならないのでしょうか?
>>>
>>> 使い方が間違っているかもしれませんが、それを含めてアドバイスいただければ
>>> と思います。
>>>
>>> よろしくお願いします。
>>>
>>>
>>>
>>> kubo さんは書きました:
>>>
>>>> 久保(jflute)です。
>>>>
>>>> <A>であれば、
>>>>
>>>> http://dbflute.sandbox.seasar.org/contents/setup/commoncolumn.html
>>>>>>>> 「2. AccessContext(ThreadLocal)に値を格納」
>>>> を参考に
>>>> リクエスト開始時にAccessContextに判断した
>>>> 値を格納すればOKです。
>>>>
>>>> 2008/7/23 柴切 卓 <[E-MAIL ADDRESS DELETED]>:
>>>>
>>>>
>>>>> 柴切です。
>>>>>
>>>>> 久保さん、返信ありがとうございます。
>>>>>
>>>>> 私が質問した(1)(2)ともに、下記の<A>のような動作を行いたいと思って
>>>>> います。
>>>>>
>>>>> AccessContextを利用する場合、(1)や(2)を格納する変数が必要ですが、
>>>>> それを自動で生成することは可能でしょうか?
>>>>>
>>>>>
>>>>> kubo さんは書きました:
>>>>>
>>>>>
>>>>>> 久保(jfute)です。
>>>>>>
>>>>>> 柴切さん、こんばんわ
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Update時は 'B' or 'C'
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> この「B」なのか「C」なのかは、
>>>>>> 何で決定するのでしょうか?
>>>>>>
>>>>>> <A>
>>>>>> もし、WEB上のリクエスト時に決定するのであれば、
>>>>>> AccessContextに値を格納するタイミングで「B」or「C」を
>>>>>> 決定して格納すれば良いと思います。
>>>>>>
>>>>>> <B>
>>>>>> もし、指定されたEntityの別の値で決定するのであれば、
>>>>>> ちょっと強引ですが、commonColumnMap.dfpropにて
>>>>>> 以下のように記述できます。
>>>>>>
>>>>>> XXX_FLG = $entity.isLogicalDeleteFlgFalse() ? entity.setXxx('b') :
>>>>>> entity.setXxx('c')$$Semicolon$$
>>>>>>
>>>>>> ※ isLogicalDeleteFlgFalse()は区分値メソッド(or Extendedに作成した独自メソッド)
>>>>>>
>>>>>> 2008/7/22 柴切 卓 <[E-MAIL ADDRESS DELETED]>:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> 柴切と申します。
>>>>>>>
>>>>>>> お世話になります。
>>>>>>>
>>>>>>> DBflute 共通カラム機能を利用したコード生成について質問があり、メール致
>>>>>>> しました。
>>>>>>>
>>>>>>> ドキュメントを読んでみましたが、以下の2つのUpdate動作を自動生成で実現す
>>>>>>> る方法が導きだせませんでした。
>>>>>>>
>>>>>>> (1)Char型の共通カラムに
>>>>>>>
>>>>>>> Insert時は 'A'
>>>>>>> Update時は 'B' or 'C'
>>>>>>>
>>>>>>> (2)int型の共通カラムに
>>>>>>>
>>>>>>> Insert時は 0
>>>>>>> Update時は 1 or 2
>>>>>>>
>>>>>>>
>>>>>>> リアルタイムな値などと同じで、自由に値を格納したいのだから
>>>>>>> 「AccessContextを利用するんだな!」 とは思うのですがそこから止まってし
>>>>>>> まいました。
>>>>>>>
>>>>>>> 理解不足の面もあるかと思いますが、是非実現方法のアドバイス等いただけたら
>>>>>>> と思っております。
>>>>>>>
>>>>>>> よろしくお願いいたします。
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Seasar-user mailing list
>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> _______________________________________________
>>>>>> Seasar-user mailing list
>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> _______________________________________________
>>>>> Seasar-user mailing list
>>>>> [E-MAIL ADDRESS DELETED]
>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>
>>>>>
>>>>>
>>>> _______________________________________________
>>>> Seasar-user mailing list
>>>> [E-MAIL ADDRESS DELETED]
>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>
>>>>
>>>>
>>>>
>>> _______________________________________________
>>> Seasar-user mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>
>>>
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>>
>>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


Seasar-user メーリングリストの案内