11
|
1 package treecms.memory;
|
23
|
2 import java.util.concurrent.ConcurrentHashMap;
|
11
|
3
|
21
|
4 import java.util.concurrent.ConcurrentMap;
|
|
5
|
11
|
6 import treecms.api.MonotonicTree;
|
15
|
7 import treecms.api.MonotonicTreeNode;
|
21
|
8 import treecms.api.Node;
|
22
|
9 import treecms.api.NodeID;
|
23
|
10 import treecms.api.NodeTable;
|
22
|
11 import treecms.tree.util.NodeData;
|
23
|
12 import treecms.tree.util.NodeTableImpl;
|
11
|
13
|
|
14 public class OnMemoryMonotonicTree implements MonotonicTree
|
|
15 {
|
22
|
16 private final OnMemoryMonotonicTree m_tree;
|
23
|
17 private final NodeTable m_table;
|
|
18 private final OnMemoryMonotonicTreeNode m_root;
|
21
|
19
|
22
|
20 private OnMemoryMonotonicTree(OnMemoryNode _root,OnMemoryMonotonicTree _tree)
|
11
|
21 {
|
22
|
22 m_tree = _tree;
|
23
|
23 m_table = new NodeTableImpl();
|
|
24
|
|
25 NodeID id = _root.getID();
|
|
26 String fid = id.getFamilyID();
|
|
27 m_root = new OnMemoryMonotonicTreeNode(fid,null,m_table);
|
21
|
28 }
|
|
29
|
22
|
30 public static OnMemoryMonotonicTree createInstance(OnMemoryNode _root,OnMemoryMonotonicTree _tree)
|
|
31 {
|
|
32 OnMemoryMonotonicTree tree = new OnMemoryMonotonicTree(_root,_tree);
|
|
33 tree.m_root = new OnMemoryMonotonicTreeNode(_root.getID().getFamilyID(),null,tree);
|
|
34 return tree;
|
|
35 }
|
|
36
|
|
37 public OnMemoryNode get(String _fid)
|
21
|
38 {
|
22
|
39 return m_members.get(_fid);
|
11
|
40 }
|
22
|
41
|
|
42 public OnMemoryNode createNode(NodeID _id,NodeData<Node> _data)
|
|
43 {
|
|
44 OnMemoryNode newNode = new OnMemoryNode(_id,_data);
|
|
45 m_members.put(_id.getFamilyID(),newNode);
|
|
46 return newNode;
|
|
47 }
|
|
48
|
11
|
49 @Override
|
|
50 public boolean commit(boolean _force)
|
|
51 {
|
22
|
52 if(m_tree == null){
|
|
53 return true;
|
|
54 }
|
|
55
|
21
|
56 return true;
|
11
|
57 }
|
|
58
|
|
59 @Override
|
|
60 public boolean pull()
|
|
61 {
|
16
|
62 return true;
|
11
|
63 }
|
|
64
|
|
65 @Override
|
|
66 public boolean check()
|
|
67 {
|
23
|
68 if(m_tree != null){
|
|
69
|
|
70 }
|
22
|
71 return m_tree.getRoot().getNode().equals(m_root.getNode());
|
11
|
72 }
|
|
73
|
|
74 @Override
|
15
|
75 public void merge()
|
|
76 {
|
11
|
77 }
|
|
78
|
|
79 @Override
|
15
|
80 public MonotonicTreeNode getRoot()
|
|
81 {
|
21
|
82 return m_root;
|
11
|
83 }
|
|
84 }
|