45
|
1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle;
|
|
2
|
100
|
3 import fj.data.HashMap;
|
|
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;
|
54
|
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
|
|
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
|
45
|
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference;
|
|
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultJungleTreeEditor;
|
|
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTransactionManager;
|
54
|
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext;
|
100
|
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
|
|
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
|
45
|
15
|
82
|
16
|
86
|
17 public class DefaultJungleTree implements JungleTree
|
45
|
18 {
|
86
|
19 private final AtomicReservableReference<TreeContext> repository;
|
45
|
20 private final String uuid;
|
|
21 private final ChangeListWriter writer;
|
54
|
22 private final TreeEditor editor;
|
100
|
23 Pair<TreeMap<String,TreeNode>,TreeMap<String,String>> index;
|
|
24 public DefaultJungleTree(TreeContext _tc,String _uuid,ChangeListWriter _writer,TreeEditor _editor, Pair<TreeMap<String,TreeNode>,TreeMap<String,String>> index)
|
45
|
25 {
|
100
|
26 this.repository = new AtomicReservableReference<TreeContext>(_tc);
|
|
27 this.uuid = _uuid;
|
|
28 this.writer = _writer;
|
|
29 this.editor = _editor;
|
|
30 this.index = index;
|
45
|
31 }
|
|
32
|
|
33 @Override
|
54
|
34 public JungleTreeEditor getTreeEditor()
|
45
|
35 {
|
86
|
36 TreeContext tc = repository.get();
|
|
37 DefaultTransactionManager txManager = new DefaultTransactionManager(writer,tc,repository,uuid);
|
81
|
38 TreeNode root = tc.getTreeNode();
|
100
|
39 return new DefaultJungleTreeEditor(root,txManager,editor, index);
|
45
|
40 }
|
|
41
|
|
42 @Override
|
61
|
43 public JungleTreeEditor getLocalTreeEditor()
|
|
44 {
|
|
45 return getTreeEditor();
|
|
46 }
|
|
47
|
|
48 @Override
|
81
|
49 public TreeNode getRootNode()
|
45
|
50 {
|
86
|
51 TreeContext tc = repository.get();
|
81
|
52 ChangeSet cs = tc.getChangeSet();
|
54
|
53 return cs.getRoot();
|
45
|
54 }
|
100
|
55
|
|
56 @Override
|
|
57 public InterfaceTraverser getTraverser() {
|
|
58 return new InterfaceTraverser(getRootNode());
|
|
59 }
|
45
|
60 }
|