Mercurial > hg > Members > tatsuki > bench > jungle-core
comparison src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/BruteForceTraverser.java @ 99:92d0c6e4655c
refactoring to IteratorPathNode
author | one |
---|---|
date | Wed, 10 Sep 2014 18:54:52 +0900 |
parents | 95000ff9064d |
children |
comparison
equal
deleted
inserted
replaced
98:95000ff9064d | 99:92d0c6e4655c |
---|---|
3 import java.util.Iterator; | 3 import java.util.Iterator; |
4 | 4 |
5 import fj.data.List; | 5 import fj.data.List; |
6 import fj.data.TreeMap; | 6 import fj.data.TreeMap; |
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; | 7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; |
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children; | |
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; | 8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; |
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; | |
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; | 9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; | |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; | |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; | 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; |
15 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.IteratorPathNode; | 11 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.PathNodeIterator; |
16 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.IteratorPathNodeImpl; | |
17 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.Query; | 12 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.Query; |
18 | 13 |
19 public class BruteForceTraverser { | 14 public class BruteForceTraverser { |
20 BruteForceTraverser traverser; | 15 BruteForceTraverser traverser; |
21 TreeNode node; | 16 TreeNode node; |
22 TreeMap<String,TreeNode> nodeIndex; | 17 TreeMap<String,TreeNode> nodeIndex; |
23 TreeMap<String,String> attributeIndex; | 18 TreeMap<String,String> attributeIndex; |
24 | 19 |
25 public BruteForceTraverser(TreeNode _root){ | 20 public BruteForceTraverser(TreeNode _root) { |
26 node = _root; | 21 node = _root; |
27 //pathNodes = this.traverse(_root,new DefaultNodePath(),-1); | 22 //pathNodes = this.traverse(_root,new DefaultNodePath(),-1); |
28 } | 23 } |
29 | 24 |
30 public BruteForceTraverser getTraverser(JungleTree tree){ | 25 public BruteForceTraverser getTraverser(JungleTree tree) { |
31 return new BruteForceTraverser(tree.getRootNode()); | 26 return new BruteForceTraverser(tree.getRootNode()); |
32 } | 27 } |
33 | 28 |
34 | 29 |
35 /*public IteratorPathNode traverse(TreeNode _node ,NodePath _path ,int _pos){ | 30 /*public IteratorPathNode traverse(TreeNode _node ,NodePath _path ,int _pos){ |
58 | 53 |
59 public List<Pair<NodePath,TreeNode>> distinct(String _key ,String... _attribute){ | 54 public List<Pair<NodePath,TreeNode>> distinct(String _key ,String... _attribute){ |
60 return null; | 55 return null; |
61 } | 56 } |
62 */ | 57 */ |
63 public Iterator<Pair<TreeNode, NodePath>> find(Query _query){ | 58 public Iterator<Pair<TreeNode, NodePath>> find(final Query query) { |
64 IteratorPathNode itNode = new IteratorPathNodeImpl(node); | 59 final PathNodeIterator itNode = new PathNodeIterator(node); |
65 List<Pair<TreeNode, NodePath>> list = List.nil();; | 60 |
66 for(;itNode.hasNext();){ | 61 return new Iterator<Pair<TreeNode, NodePath>>() { |
67 Pair<TreeNode, NodePath> pathNode = itNode.next(); | 62 |
68 if(_query.condition(pathNode.left())) | 63 private Pair<TreeNode,NodePath> matchPair = nextmatch(itNode); |
69 list = list.cons(pathNode);//list.reverse();//= list.cons(); | 64 |
70 } | 65 private Pair<TreeNode, NodePath> nextmatch(PathNodeIterator itNode) { |
71 return list.iterator(); | 66 for (;itNode.hasNext();) { |
67 Pair<TreeNode, NodePath> pathNode = itNode.next(); | |
68 if (query.condition(pathNode.left())) | |
69 return pathNode; | |
70 } | |
71 return null; | |
72 } | |
73 | |
74 @Override | |
75 public boolean hasNext() { | |
76 // TODO Auto-generated method stub | |
77 return matchPair != null; | |
78 } | |
79 | |
80 @Override | |
81 public Pair<TreeNode, NodePath> next() { | |
82 Pair<TreeNode,NodePath> currentPair = matchPair; | |
83 matchPair = nextmatch(itNode); | |
84 return currentPair; | |
85 } | |
86 | |
87 @Override | |
88 public void remove() { | |
89 // TODO Auto-generated method stub | |
90 | |
91 } | |
92 | |
93 }; | |
94 | |
72 } | 95 } |
73 | 96 |
74 | 97 |
75 } | 98 } |