Mercurial > hg > Members > tatsuki > bench > jungle-core
annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java @ 132:ba5370090393
index commit Prototype
author | one |
---|---|
date | Sun, 19 Oct 2014 09:15:38 +0900 |
parents | 1c3c3300716c |
children | f46a6e0e4594 |
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; |
45 | 23 |
82 | 24 |
86 | 25 public class DefaultJungleTree implements JungleTree |
45 | 26 { |
86 | 27 private final AtomicReservableReference<TreeContext> repository; |
45 | 28 private final String uuid; |
29 private final ChangeListWriter writer; | |
54 | 30 private final TreeEditor editor; |
103 | 31 |
104 | 32 public DefaultJungleTree(TreeContext tc,String uuid,ChangeListWriter writer,TreeEditor editor) |
45 | 33 { |
104 | 34 this.repository = new AtomicReservableReference<TreeContext>(tc); |
35 this.uuid = uuid; | |
36 this.writer = writer; | |
37 this.editor = editor; | |
45 | 38 } |
39 | |
40 @Override | |
54 | 41 public JungleTreeEditor getTreeEditor() |
45 | 42 { |
86 | 43 TreeContext tc = repository.get(); |
44 DefaultTransactionManager txManager = new DefaultTransactionManager(writer,tc,repository,uuid); | |
81 | 45 TreeNode root = tc.getTreeNode(); |
103 | 46 return new DefaultJungleTreeEditor(root,txManager,editor); |
45 | 47 } |
104 | 48 |
49 @Override | |
126 | 50 public IndexJungleTreeEditor getIndexTreeEditor() |
104 | 51 { |
52 TreeContext tc = repository.get(); | |
53 DefaultTransactionManager txManager = new DefaultTransactionManager(writer,tc,repository,uuid); | |
54 TreeNode root = tc.getTreeNode(); | |
117
74723b26ad96
add IndexJungleTreeEditr and remove DefaultJungleIndexTreeEditor
one
parents:
111
diff
changeset
|
55 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> newIndex = getIndex(); |
74723b26ad96
add IndexJungleTreeEditr and remove DefaultJungleIndexTreeEditor
one
parents:
111
diff
changeset
|
56 return new IndexJungleTreeEditor(root,txManager,editor,newIndex); |
104 | 57 } |
58 | |
45 | 59 |
60 @Override | |
61 | 61 public JungleTreeEditor getLocalTreeEditor() |
62 { | |
63 return getTreeEditor(); | |
64 } | |
65 | |
66 @Override | |
81 | 67 public TreeNode getRootNode() |
45 | 68 { |
86 | 69 TreeContext tc = repository.get(); |
81 | 70 ChangeSet cs = tc.getChangeSet(); |
54 | 71 return cs.getRoot(); |
45 | 72 } |
100 | 73 |
74 @Override | |
75 public InterfaceTraverser getTraverser() { | |
132 | 76 AtomicReservableReference<TreeContext>.Reservation reservation = repository.getReservation(); |
77 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index = getIndex(); | |
124 | 78 if (index != null) |
132 | 79 return new InterfaceTraverser(getRootNode(), index, reservation); |
80 return new InterfaceTraverser(getRootNode(),reservation); | |
101 | 81 } |
82 | |
83 @Override | |
111 | 84 public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() { |
104 | 85 TreeContext tc = repository.get(); |
86 ChangeSet cs = tc.getChangeSet(); | |
87 return cs.getIndex(); | |
100 | 88 } |
127 | 89 |
90 @Override | |
91 public int getLogSize(){ | |
92 TreeContext tc = repository.get(); | |
93 ChangeSet cs = tc.getChangeSet(); | |
94 ChangeList cl = cs.getChangeList(); | |
95 return cl.getLogSize(); | |
96 } | |
97 | |
98 @Override | |
99 public Iterable<TreeOperation> getLog() { | |
100 TreeContext tc = repository.get(); | |
101 ChangeSet cs = tc.getChangeSet(); | |
102 return cs.getOperations(); | |
103 } | |
104 | |
45 | 105 } |