comparison src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/InterfaceTraverser.java @ 184:d2b710337eaa

change TreeMap
author tatsuki
date Sun, 29 Mar 2015 23:29:27 +0900
parents 066d9c5758dc
children 209df7faa37c
comparison
equal deleted inserted replaced
183:066d9c5758dc 184:d2b710337eaa
1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser; 1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser;
2 2
3 import java.util.Iterator; 3 import java.util.Iterator;
4 import java.util.Optional;
4 5
5 import fj.Ord; 6 import fj.Ord;
6 import fj.P2;
7 import fj.data.List; 7 import fj.data.List;
8 import fj.data.Option; 8 import jp.ac.u_ryukyu.ie.cr.tatsuki.TreeMap.TreeMap;
9 import fj.data.TreeMap;
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NulIterator; 9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NulIterator;
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeContext;
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
13 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.PathNodeIterator; 11 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.PathNodeIterator;
14 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.Query; 12 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.Query;
15 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexCreater; 13 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexCreater;
16 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; 14 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex;
22 ParentIndex parentIndex; 20 ParentIndex parentIndex;
23 boolean parentUpdateFlag; 21 boolean parentUpdateFlag;
24 boolean useIndex; 22 boolean useIndex;
25 23
26 public InterfaceTraverser(TreeNode root, boolean indexFlag) { 24 public InterfaceTraverser(TreeNode root, boolean indexFlag) {
27 this(root, TreeMap.empty(Ord.stringOrd), new ParentIndex(), indexFlag); 25 this(root, new TreeMap<>(), new ParentIndex(), indexFlag);
28 } 26 }
29 27
30 public InterfaceTraverser(TreeNode root, TreeMap<String, TreeMap<String, List<TreeNode>>> index, 28 public InterfaceTraverser(TreeNode root, TreeMap<String, TreeMap<String, List<TreeNode>>> index,
31 ParentIndex parentIndex, boolean useIndex) { 29 ParentIndex parentIndex, boolean useIndex) {
32 this.root = root; 30 this.root = root;
307 // }; 305 // };
308 // } 306 // }
309 // } 307 // }
310 308
311 public Iterator<TreeNode> get(String key, String value) { 309 public Iterator<TreeNode> get(String key, String value) {
312 310 Optional<TreeMap<String, List<TreeNode>>> indexOp = indexList.getLoop(key);
313 TreeMap<String, List<TreeNode>> index = indexList.getLoop(key); 311 if (!indexOp.isPresent())
314 if (index == null)
315 return null; 312 return null;
316 313
317 List<TreeNode> nodeList = index.getLoop(value); 314 Optional<List<TreeNode>> nodeListOp = indexOp.get().getLoop(value);
318 if (nodeList == null) 315 if (!nodeListOp.isPresent())
319 return new NulIterator<TreeNode>(); 316 return new NulIterator<TreeNode>();
320 return nodeList.iterator(); 317
318 return nodeListOp.get().iterator();
321 } 319 }
322 } 320 }