Mercurial > hg > Members > shoshi > TreeCMSv2
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 } |