annotate src/treecms/memory/OnMemoryForest.java @ 2:4a5ee88f02cf

added OnMemoryForest
author shoshi
date Wed, 16 Feb 2011 21:08:32 +0900
parents
children 5fa718b63cd5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
1 package treecms.memory;
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
2
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
3 import java.util.Random;
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
4 import java.util.UUID;
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
5 import java.util.concurrent.ConcurrentHashMap;
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
6
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
7 import treecms.api.Forest;
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
8 import treecms.api.Node;
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
9 import treecms.api.NodeID;
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
10 import treecms.tree.id.RandomNodeID;
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
11
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
12 public class OnMemoryForest implements Forest
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
13 {
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
14 ConcurrentHashMap<NodeID,OnMemoryNode> m_table;
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
15
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
16 public OnMemoryForest()
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
17 {
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
18 m_table = new ConcurrentHashMap<NodeID,OnMemoryNode>();
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
19 }
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
20
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
21 public OnMemoryNode createNode(NodeID _id)
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
22 {
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
23 if(_id == null){
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
24 return new OnMemoryNode(this,createID());
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
25 }
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
26 return new OnMemoryNode(this,_id);
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
27 }
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
28
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
29 NodeID createID()
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
30 {
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
31 return new RandomNodeIDImpl(null);
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
32 }
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
33
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
34 @Override
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
35 public Node get(NodeID _id)
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
36 {
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
37 return m_table.get(_id);
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
38 }
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
39
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
40 @Override
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
41 public Node create()
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
42 {
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
43 return createNode(null);
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
44 }
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
45
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
46 class RandomNodeIDImpl extends RandomNodeID
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
47 {
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
48 String m_uuid;
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
49 long m_version;
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
50
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
51 public RandomNodeIDImpl(String _uuid)
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
52 {
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
53 if(_uuid != null){
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
54 m_uuid = _uuid;
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
55 }else{
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
56 m_uuid = UUID.randomUUID().toString();
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
57 }
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
58 m_version = (new Random()).nextLong();
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
59 }
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
60
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
61 @Override
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
62 public NodeID create()
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
63 {
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
64 return new RandomNodeIDImpl(null);
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
65 }
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
66
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
67 @Override
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
68 public NodeID update()
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
69 {
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
70 return new RandomNodeIDImpl(m_uuid);
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
71 }
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
72
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
73 @Override
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
74 public String getUUID()
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
75 {
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
76 return m_uuid;
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
77 }
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
78
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
79 @Override
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
80 public String getVersion()
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
81 {
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
82 return Long.toHexString(m_version);
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
83 }
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
84 }
4a5ee88f02cf added OnMemoryForest
shoshi
parents:
diff changeset
85 }