# HG changeset patch # User one # Date 1415699872 -32400 # Node ID 3071b1a471fd242fa88f104ebed5f1ccbfe5b1c0 # Parent 99bda30ea72c835ce14d23314866f7bcb3f97d68 add getKeys diff -r 99bda30ea72c -r 3071b1a471fd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNodeAttributes.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNodeAttributes.java Fri Nov 07 02:20:31 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNodeAttributes.java Tue Nov 11 18:57:52 2014 +0900 @@ -2,6 +2,7 @@ import java.nio.ByteBuffer; +import fj.data.List; import fj.data.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Attributes; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; @@ -12,4 +13,5 @@ public Either delete(String key); public Either put(String key,ByteBuffer value); public TreeMap getAttributesAsRawMap(); + public List getKeys(); } diff -r 99bda30ea72c -r 3071b1a471fd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java Fri Nov 07 02:20:31 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java Tue Nov 11 18:57:52 2014 +0900 @@ -46,17 +46,6 @@ return new DefaultTreeNode(); } - /*public DefaultNode getWrap() - { - return wrap; - }*/ - - /*@Override - public Node getAsNode() - { - return getWrap(); - } - */ public DefaultTreeNode clone() { return new DefaultTreeNode(children,attrs); diff -r 99bda30ea72c -r 3071b1a471fd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeAttribute.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeAttribute.java Fri Nov 07 02:20:31 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeAttribute.java Tue Nov 11 18:57:52 2014 +0900 @@ -87,4 +87,9 @@ return new String(attribute.array()); return null; } + + @Override + public List getKeys() { + return attrs.keys(); + } } diff -r 99bda30ea72c -r 3071b1a471fd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/InterfaceTraverser.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/InterfaceTraverser.java Fri Nov 07 02:20:31 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/InterfaceTraverser.java Tue Nov 11 18:57:52 2014 +0900 @@ -8,6 +8,8 @@ import fj.data.Option; import fj.data.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NulIterator; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.PathNodeIterator; @@ -66,25 +68,25 @@ TreeMap>> innerIndex = this.index.get(key).some(); - Option>> opList = innerIndex.get(searchValue); + Option>> opList = innerIndex.get(searchValue); - if (opList.isNone()) - return null;// 空のIteratorを返す + if (opList.isNone()) + return new NulIterator>();// 空のIteratorを返す - List> list = opList.some(); - NodePath targetNodePath = subTree.right(); - List> filteredList = List.nil(); - - for (Pair pair : list) { - NodePath compareNodePath = pair.right(); - if (targetNodePath.compare(compareNodePath)) - filteredList = filteredList.cons(pair); - } - - return filteredList.iterator(); + List> list = opList.some(); + NodePath targetNodePath = subTree.right(); + List> filteredList = List.nil(); + + for (Pair pair : list) { + NodePath compareNodePath = pair.right(); + if (targetNodePath.compare(compareNodePath)) + filteredList = filteredList.cons(pair); + } + + return filteredList.iterator(); } else { - final PathNodeIterator itNode = new PathNodeIterator(subTree.left()); + final PathNodeIterator itNode = new PathNodeIterator(subTree); return new Iterator>() { private Pair matchPair = nextmatch(itNode); @@ -164,7 +166,7 @@ return filteredList.iterator(); } else { - final PathNodeIterator itNode = new PathNodeIterator(subTree.left()); + final PathNodeIterator itNode = new PathNodeIterator(subTree); return new Iterator>() { private Pair matchPair = nextmatch(itNode); @@ -210,14 +212,14 @@ Option>> opList = innerIndex.get(searchValue); if (opList.isNone()) - return null;// 空のIteratorを返す + return new NulIterator>();// 空のIteratorを返す final List> list = opList.some(); return list.iterator(); } else { - - final PathNodeIterator itNode = new PathNodeIterator(node); + Pair pair = new Pair(node, new DefaultNodePath()); + final PathNodeIterator itNode = new PathNodeIterator(pair); return new Iterator>() { private Pair matchPair = nextmatch(itNode); @@ -311,8 +313,8 @@ return valueList.iterator(); } else { - - final PathNodeIterator itNode = new PathNodeIterator(node); + Pair pair = new Pair(node, new DefaultNodePath()); + final PathNodeIterator itNode = new PathNodeIterator(pair); return new Iterator>() { private Pair matchPair = nextmatch(itNode); diff -r 99bda30ea72c -r 3071b1a471fd src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/PathNodeIterator.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/PathNodeIterator.java Fri Nov 07 02:20:31 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/PathNodeIterator.java Tue Nov 11 18:57:52 2014 +0900 @@ -25,9 +25,9 @@ * otherwise traverse tree and create index * * */ - public PathNodeIterator(TreeNode root) { - this.root = root; - path = new DefaultNodePath(); + public PathNodeIterator(Pair pair) { + this.root = pair.left(); + path = pair.right(); node = root; } diff -r 99bda30ea72c -r 3071b1a471fd src/test/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/index/AddChildrenIndexTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/index/AddChildrenIndexTest.java Fri Nov 07 02:20:31 2014 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/index/AddChildrenIndexTest.java Tue Nov 11 18:57:52 2014 +0900 @@ -59,7 +59,6 @@ InterfaceTraverser newIfTraverser = tree.getTraverser(); TreeMap>>> newIndex = newIfTraverser.getIndex(); - Assert.assertTrue(newIndex.get(key).some().get("<-1,0,0>").isNone()); Assert.assertEquals(newIndex.get(key).some().get("<-1,0,1>").some().head().right().toString(),"<-1,0,2>"); }