85
|
1 package alice.jungle.persistence;
|
|
2
|
|
3 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
|
|
4 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
|
|
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
|
|
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
|
|
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet;
|
|
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;
|
|
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.TreeContext;
|
|
13
|
|
14 public class PersistentJungleTree <T extends TreeNode<T>> implements JungleTree {
|
|
15 private final AtomicReservableReference<TreeContext<T>> repository;
|
|
16 private final String uuid;
|
|
17 private final String treeName;
|
88
|
18 private final ChangeListWriter writer;
|
85
|
19 private final TreeEditor editor;
|
|
20
|
88
|
21 public PersistentJungleTree(String _treeName, TreeContext<T> _tc,String _uuid, ChangeListWriter _writer,TreeEditor _editor)
|
85
|
22 {
|
|
23 treeName = _treeName;
|
|
24 repository = new AtomicReservableReference<TreeContext<T>>(_tc);
|
|
25 uuid = _uuid;
|
|
26 writer = _writer;
|
|
27 editor = _editor;
|
|
28 }
|
|
29
|
|
30 @Override
|
|
31 public JungleTreeEditor getTreeEditor()
|
|
32 {
|
|
33 TreeContext<T> tc = repository.get();
|
|
34 PersistentTransactionManager<T> txManager = new PersistentTransactionManager<T>(treeName, writer,tc,repository,uuid);
|
|
35 T root = tc.getTreeNode();
|
|
36 return new DefaultJungleTreeEditor<T>(root,txManager,editor);
|
|
37 }
|
|
38
|
|
39 @Override
|
|
40 public Node getRootNode()
|
|
41 {
|
|
42 TreeContext<T> tc = repository.get();
|
|
43 ChangeSet cs = tc.getChangeSet();
|
|
44 return cs.getRoot();
|
|
45 }
|
|
46
|
96
|
47 @Override
|
|
48 public JungleTreeEditor getLocalTreeEditor() {
|
|
49 return getTreeEditor();
|
|
50 }
|
|
51
|
85
|
52
|
|
53 }
|