Mercurial > hg > Members > tatsuki > bench > jungle-core
comparison src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/InterfaceTraverser.java @ 134:f46a6e0e4594
add deleteIndexEditor
author | one |
---|---|
date | Tue, 21 Oct 2014 19:47:25 +0900 |
parents | ba5370090393 |
children | 0f68cd7b2838 |
comparison
equal
deleted
inserted
replaced
133:c4846688f635 | 134:f46a6e0e4594 |
---|---|
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor; | 19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor; |
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext; | 20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext; |
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; | 21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; |
22 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.PathNodeIterator; | 22 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.PathNodeIterator; |
23 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.Query; | 23 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.Query; |
24 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexManager; | |
24 | 25 |
25 public class InterfaceTraverser { | 26 public class InterfaceTraverser { |
26 | 27 |
27 //InterfaceTraverser traverser; | 28 //InterfaceTraverser traverser; |
28 TreeNode node; | 29 TreeNode node; |
29 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index; | 30 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index; |
30 AtomicReservableReference<TreeContext>.Reservation reservation; | 31 IndexManager indexManager; |
31 | 32 |
32 public InterfaceTraverser(TreeNode _root, AtomicReservableReference<TreeContext>.Reservation reservation) { | 33 public InterfaceTraverser(TreeNode _root, IndexManager indexManager) { |
33 this.node = _root; | 34 this.node = _root; |
34 this.index = TreeMap.empty(Ord.stringOrd); | 35 this.index = TreeMap.empty(Ord.stringOrd); |
35 this.reservation = reservation; | 36 this.indexManager = indexManager; |
36 } | 37 } |
37 | 38 |
38 public InterfaceTraverser( | 39 public InterfaceTraverser( |
39 TreeNode _root, | 40 TreeNode _root, |
40 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index, | 41 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index, |
41 AtomicReservableReference<TreeContext>.Reservation reservation) { | 42 IndexManager indexManager) { |
42 this.node = _root; | 43 this.node = _root; |
43 this.index = index; | 44 this.index = index; |
44 this.reservation = reservation; | 45 this.indexManager = indexManager; |
45 } | 46 } |
46 | 47 |
47 public void commitIndex(){ | 48 public void commitIndex(){ |
48 TreeContext tc = reservation.get(); | 49 indexManager.commit(index); |
49 ChangeSet cs = tc.getChangeSet(); | |
50 TreeNode root = cs.getRoot(); | |
51 ChangeSet prev = cs.prev(); | |
52 ChangeList cl = cs.getChangeList(); | |
53 String uuid = cs.uuid(); | |
54 String treeName = cs.getTreeName(); | |
55 long revision = cs.revision(); | |
56 ChangeSet newCs = new DefaultChangeSet(root, prev,cl, uuid, treeName, revision, index); | |
57 TreeContext newTc = new DefaultTreeContext(root, newCs); | |
58 reservation.set(newTc); | |
59 } | 50 } |
60 | 51 |
61 public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() { | 52 public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() { |
62 return index; | 53 return index; |
63 } | 54 } |
78 this.node = root; | 69 this.node = root; |
79 } | 70 } |
80 | 71 |
81 | 72 |
82 | 73 |
83 public Iterator<Pair<TreeNode, NodePath>> find(final Query query, String key, String searchValue) { | 74 public Iterator<Pair<TreeNode, NodePath>> find(Query query, String key, String searchValue) { |
84 | 75 |
85 if (index.get(key).isSome()) { | 76 if (index.get(key).isSome()) { |
86 | 77 |
87 TreeMap<String, List<Pair<TreeNode, NodePath>>> innerIndex = this.index.get(key).some(); | 78 TreeMap<String, List<Pair<TreeNode, NodePath>>> innerIndex = this.index.get(key).some(); |
88 Option<List<Pair<TreeNode, NodePath>>> opList = innerIndex.get(searchValue); | 79 Option<List<Pair<TreeNode, NodePath>>> opList = innerIndex.get(searchValue); |
105 | 96 |
106 for (; itNode.hasNext();) { | 97 for (; itNode.hasNext();) { |
107 Pair<TreeNode, NodePath> pathNode = itNode.next(); | 98 Pair<TreeNode, NodePath> pathNode = itNode.next(); |
108 String value = pathNode.left().getAttributes().getString(key); | 99 String value = pathNode.left().getAttributes().getString(key); |
109 Option<TreeMap<String, List<Pair<TreeNode, NodePath>>>> innerIndexOp = index.get(key); | 100 Option<TreeMap<String, List<Pair<TreeNode, NodePath>>>> innerIndexOp = index.get(key); |
110 System.out.println("value = "+ value); | |
111 | 101 |
112 if (value != null) { | 102 if (value != null) { |
113 if (innerIndexOp.isNone()) { | 103 if (innerIndexOp.isNone()) { |
114 | 104 |
115 TreeMap<String, List<Pair<TreeNode, NodePath>>> innerIndex = TreeMap.empty(Ord.stringOrd); | 105 TreeMap<String, List<Pair<TreeNode, NodePath>>> innerIndex = TreeMap.empty(Ord.stringOrd); |