[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 メーリングリストの案内