[Seasar-user:20765] Re: [Doma-Gen]useDelegateについて
Toshihiro Nakamura
[E-MAIL ADDRESS DELETED]
2011年 5月 19日 (木) 22:29:54 JST
中村(taedium)です。
> 固定で埋め込んで問題ないのですが、条件分岐をテンプレートにいれて
> 作る・作らないの判定を入れることができればと思ったしだいです。
Doma-Genが提供するAntタスクのGenクラスを
継承して新しいタスクを作成すれば、
比較的簡単にテンプレートから任意のデータにアクセスできます。
たとえば、今回の例に合わせると、次のようなコードを作成する
ことになります。
public class MyGen extends Gen {
@Override
protected void generateDao(DaoDesc daoDesc) {
// オリジナルを自前のオブジェクトでラップ
super.generateDao(new MyDaoDesc(daoDesc));
}
public class MyDaoDesc extends DaoDesc {
private DaoDesc daoDesc;
public MyDaoDesc(DaoDesc daoDesc) {
this.daoDesc = daoDesc;
}
// テンプレートからアクセスしたいデータをアクセサで公開
public boolean isUseDelegate() {
return daoConfig.isUseDelegate();
}
// 親のDaoDescのメソッドはすべてオーバーライドして
// daoDescインスタンスフィールドに委譲する
...
}
}
そして、build.xml の taskdef 要素ではGenクラスの代わりに独自に作成した
MyGenクラスを登録するようにします。
<taskdef name="gen"
classname="example.MyGen"
classpathref="classpath"
loaderref="genLoaderref" />
これでDaoのテンプレートから次の記述が有効になります。
<#if useDelegate></#if>
Genクラスはいろんなところがオーバーライドできるようになっているので
好きにカスタマイズできます。お試しください。
--
Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内