[Seasar-user:21663] Re: S2JDBC の AutoSelect への includes() と excludes() 実装
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2013年 7月 14日 (日) 16:30:58 JST
小林 (koichik) です.
乙です!
API 仕様から想定できる動作に対しては
問題なさそうに見えます。
ループの中と外で同じチェックをしているので、
+ String propertyName = propertyMeta.getName();
+ if (joinMeta != null) {
+ propertyName = joinMeta.getName() + "." + propertyName;
+ }
+ int index = propertyName.length();
+ while (index != -1) {
+ propertyName = propertyName.substring(0, index);
+ if (includesProperties.contains(propertyName)) {
+ return true;
+ }
+ if (excludesProperties.contains(propertyName)) {
+ return false;
+ }
+ index = propertyName.lastIndexOf(".");
+ }
という感じでまとめるともっといいかなと思いました。
最後もスッキリと
+ return includesProperties.isEmpty();
でいいかなとか。
it も乙でした!
On Sun, 14 Jul 2013 15:24:52 +0900, Jun Futagawa <jfut @ integ.jp> wrote:
> ふたがわ (jfut) です。
>
> On 2013/07/14 8:11, Koichi Kobayashi wrote:
>
> > startsWith() の使い方そのものは変わってないんですね。
> > 大丈夫なのかなー?
>
> ダメですねー。
>
> > なので、先に書いたように、aaa.bbb.ccc.ddd の
> > 方を基準として、
> >
> > aaa.bbb.ccc.ddd
> > aaa.bbb.ccc
> > aaa.bbb
> > aaa
> >
> > の順番で includes/excludes に含まれてるか
> > チェックする方が確実なんじゃないかと思うのですが
> > どうでしょう?
>
> 判り易いダメなケースの説明をありがとうございます。
>
> 指摘していただいたように関連のチェックは、チェック対象の
> プロパティ名をベースに長い方からチェックするようにしてみました。
>
> また、s2jdbc-it のテストケースを書いてみたのでそちらも添付します。
> H2、HSQLDB、PostgreSQL、MySQL では
> テストが成功することを確認しました。
>
> まだ不十分なところがあったらすいません。
>
> --
> Jun Futagawa
--
{
name: "Koichi Kobayashi",
mail: "koichik @ improvement.jp",
blog: "http://d.hatena.ne.jp/koichik/",
twitter: "@koichik"
}
Seasar-user メーリングリストの案内