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

柴切 卓 [E-MAIL ADDRESS DELETED]
2008年 7月 24日 (木) 10:33:58 JST


柴切です。

dbflute_0.7.7を落として、追加機能を使ってみました。

map:{
; commonColumnMap = map:{
; reg_staff_id=NUMERIC
}
; beforeInsertMap = map:{
; reg_staff_id = 1
}
; beforeUpdateMap = map:{
; reg_staff_id = $$AccessContext $$.GetAccessValueOnThread("RegStaffId")
}
}

このように設定して、C#コードを生成すると

AbstructBehaviorWritable.cs内

protected virtual void SetupCommonColumnOfUpdateIfNeeds(Entity
targetEntity) {
if (!IsEntityDefinedCommonColumn(targetEntity)) {
return;
}
EntityDefinedCommonColumn entity = (EntityDefinedCommonColumn)targetEntity;
if (!entity.CanCommonColumnAutoSetup()) {
return;
}
if (_log.IsDebugEnabled) {
_log.Debug("...Filtering entity of UPDATE about the column columns of "
+ this.TableDbName);
}

$AccessContext $$.GetAccessValueOnThread("RegStaffId")
}

こんな感じで、まだうまく生成できていないようです。

設定の仕方が間違っていたらすみません。

確認していただければと思います。

よろしくお願いします。

kubo さんは書きました:
> 久保(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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
>   




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