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

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