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);