# HG changeset patch # User one # Date 1414223432 -32400 # Node ID 0f68cd7b28386e1a3e2e9eacb9bfe7189c96e02f # Parent 6e9a8d26e0cf2bb110d14cd588da0b20ff3539d5 add Node Search diff -r 6e9a8d26e0cf -r 0f68cd7b2838 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 Oct 24 18:49:48 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/InterfaceTraverser.java Sat Oct 25 16:50:32 2014 +0900 @@ -71,7 +71,59 @@ - public Iterator> find(Query query, String key, String searchValue) { + public Iterator> find(Query query, TreeNode searchNode, String key, String searchValue) { + + final PathNodeIterator itNode = new PathNodeIterator(searchNode); + return new Iterator>() { + + private Pair matchPair = nextmatch(itNode); + + private Pair nextmatch( + PathNodeIterator itNode) { + + for (; itNode.hasNext();) { + Pair pathNode = itNode.next(); + if (query.condition(pathNode.left())) + return pathNode; + } + return null; + } + + @Override + public boolean hasNext() { + if (matchPair == null) { +// index = itNode.getIndex(); + return false; + } + return true; + } + + @Override + public Pair next() { + Pair currentPair = matchPair; + matchPair = nextmatch(itNode); + return currentPair; + } + + @Override + public void remove() { + // TODO Auto-generated method stub + + } + + }; + + } + + public Iterator> find(Query query) { + return find(query, node, null, null); + } + + public Iterator> find(Query query, TreeNode searchNode) { + return find(query, searchNode, null, null); + } + + public Iterator> find(Query query, String key, String searchValue) { if (index.get(key).isSome()) {