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