Mercurial > hg > Members > tatsuki > bench > jungle-core
annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java @ 124:75ba2f2d6ea3
searchQueryTest add index
author | one |
---|---|
date | Tue, 07 Oct 2014 22:45:52 +0900 |
parents | 74723b26ad96 |
children | f81ec544a155 |
rev | line source |
---|---|
45 | 1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle; |
2 | |
104 | 3 import fj.data.List; |
100 | 4 import fj.data.TreeMap; |
45 | 5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter; |
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; | |
110 | 7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; |
54 | 8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor; |
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; | |
45 | 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference; |
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultJungleTreeEditor; | |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTransactionManager; | |
117
74723b26ad96
add IndexJungleTreeEditr and remove DefaultJungleIndexTreeEditor
one
parents:
111
diff
changeset
|
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor; |
54 | 14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext; |
100 | 15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; |
110 | 16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; |
45 | 17 |
82 | 18 |
86 | 19 public class DefaultJungleTree implements JungleTree |
45 | 20 { |
86 | 21 private final AtomicReservableReference<TreeContext> repository; |
45 | 22 private final String uuid; |
23 private final ChangeListWriter writer; | |
54 | 24 private final TreeEditor editor; |
103 | 25 |
104 | 26 public DefaultJungleTree(TreeContext tc,String uuid,ChangeListWriter writer,TreeEditor editor) |
45 | 27 { |
104 | 28 this.repository = new AtomicReservableReference<TreeContext>(tc); |
29 this.uuid = uuid; | |
30 this.writer = writer; | |
31 this.editor = editor; | |
45 | 32 } |
33 | |
34 @Override | |
54 | 35 public JungleTreeEditor getTreeEditor() |
45 | 36 { |
86 | 37 TreeContext tc = repository.get(); |
38 DefaultTransactionManager txManager = new DefaultTransactionManager(writer,tc,repository,uuid); | |
81 | 39 TreeNode root = tc.getTreeNode(); |
103 | 40 return new DefaultJungleTreeEditor(root,txManager,editor); |
45 | 41 } |
104 | 42 |
43 @Override | |
44 public JungleTreeEditor getIndexTreeEditor() | |
45 { | |
46 TreeContext tc = repository.get(); | |
47 DefaultTransactionManager txManager = new DefaultTransactionManager(writer,tc,repository,uuid); | |
48 TreeNode root = tc.getTreeNode(); | |
117
74723b26ad96
add IndexJungleTreeEditr and remove DefaultJungleIndexTreeEditor
one
parents:
111
diff
changeset
|
49 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> newIndex = getIndex(); |
74723b26ad96
add IndexJungleTreeEditr and remove DefaultJungleIndexTreeEditor
one
parents:
111
diff
changeset
|
50 return new IndexJungleTreeEditor(root,txManager,editor,newIndex); |
104 | 51 } |
52 | |
45 | 53 |
54 @Override | |
61 | 55 public JungleTreeEditor getLocalTreeEditor() |
56 { | |
57 return getTreeEditor(); | |
58 } | |
59 | |
60 @Override | |
81 | 61 public TreeNode getRootNode() |
45 | 62 { |
86 | 63 TreeContext tc = repository.get(); |
81 | 64 ChangeSet cs = tc.getChangeSet(); |
54 | 65 return cs.getRoot(); |
45 | 66 } |
100 | 67 |
68 @Override | |
69 public InterfaceTraverser getTraverser() { | |
104 | 70 TreeContext tc = repository.get(); |
71 ChangeSet cs = tc.getChangeSet(); | |
124 | 72 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index = cs.getIndex(); |
73 if (index != null) | |
74 return new InterfaceTraverser(getRootNode(), index, getTreeEditor()); | |
75 return new InterfaceTraverser(getRootNode(),getTreeEditor()); | |
101 | 76 } |
77 | |
78 @Override | |
111 | 79 public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() { |
104 | 80 TreeContext tc = repository.get(); |
81 ChangeSet cs = tc.getChangeSet(); | |
82 return cs.getIndex(); | |
100 | 83 } |
45 | 84 } |