Mercurial > hg > Members > shoshi > TreeCMSv2
annotate src/treecms/memory/OnMemoryForest.java @ 6:12604eb6b615
added javadoc
author | shoshi |
---|---|
date | Mon, 14 Mar 2011 23:24:38 +0900 |
parents | f5ed85be5640 |
children | fc19e38b669b |
rev | line source |
---|---|
2 | 1 package treecms.memory; |
2 | |
6 | 3 import java.util.Map; |
2 | 4 import java.util.Random; |
5 import java.util.UUID; | |
6 import java.util.concurrent.ConcurrentHashMap; | |
7 import treecms.api.Forest; | |
8 import treecms.api.Node; | |
4
f5ed85be5640
finished treecms.cassandra.v1 implementation (not tested yet)
shoshi
parents:
3
diff
changeset
|
9 import treecms.api.NodeData; |
2 | 10 import treecms.api.NodeID; |
6 | 11 import treecms.tree.id.AbstractRandomNodeID; |
2 | 12 |
13 public class OnMemoryForest implements Forest | |
14 { | |
6 | 15 Map<NodeID,OnMemoryNode> m_table; |
16 Map<String,OnMemoryNode> m_tipTable; | |
2 | 17 |
18 public OnMemoryForest() | |
19 { | |
20 m_table = new ConcurrentHashMap<NodeID,OnMemoryNode>(); | |
6 | 21 m_tipTable = new ConcurrentHashMap<String,OnMemoryNode>(); |
2 | 22 } |
23 | |
4
f5ed85be5640
finished treecms.cassandra.v1 implementation (not tested yet)
shoshi
parents:
3
diff
changeset
|
24 public OnMemoryNode createNode(NodeID _id,NodeData _newData) |
2 | 25 { |
4
f5ed85be5640
finished treecms.cassandra.v1 implementation (not tested yet)
shoshi
parents:
3
diff
changeset
|
26 NodeID newID = (_id != null) ? _id : createID(); |
f5ed85be5640
finished treecms.cassandra.v1 implementation (not tested yet)
shoshi
parents:
3
diff
changeset
|
27 NodeData newData = (_newData != null) ? _newData : new NodeData(); |
f5ed85be5640
finished treecms.cassandra.v1 implementation (not tested yet)
shoshi
parents:
3
diff
changeset
|
28 OnMemoryNode newNode = new OnMemoryNode(this,newID,newData); |
6 | 29 |
4
f5ed85be5640
finished treecms.cassandra.v1 implementation (not tested yet)
shoshi
parents:
3
diff
changeset
|
30 m_table.put(newID,newNode); |
6 | 31 m_tipTable.put(newID.getUUID(),newNode); |
32 | |
3
5fa718b63cd5
finished treecms.memory basic implementation ( not tested yet. )
shoshi
parents:
2
diff
changeset
|
33 return newNode; |
2 | 34 } |
35 | |
36 NodeID createID() | |
37 { | |
6 | 38 return new RandomNodeID(null); |
2 | 39 } |
40 | |
41 @Override | |
42 public Node get(NodeID _id) | |
43 { | |
44 return m_table.get(_id); | |
45 } | |
46 | |
47 @Override | |
48 public Node create() | |
49 { | |
4
f5ed85be5640
finished treecms.cassandra.v1 implementation (not tested yet)
shoshi
parents:
3
diff
changeset
|
50 return createNode(null,null); |
2 | 51 } |
52 | |
6 | 53 class RandomNodeID extends AbstractRandomNodeID |
2 | 54 { |
55 String m_uuid; | |
56 long m_version; | |
57 | |
6 | 58 public RandomNodeID(String _uuid) |
2 | 59 { |
60 if(_uuid != null){ | |
61 m_uuid = _uuid; | |
62 }else{ | |
63 m_uuid = UUID.randomUUID().toString(); | |
64 } | |
65 m_version = (new Random()).nextLong(); | |
66 } | |
67 | |
68 @Override | |
69 public NodeID create() | |
70 { | |
6 | 71 return new RandomNodeID(null); |
2 | 72 } |
73 | |
74 @Override | |
75 public NodeID update() | |
76 { | |
6 | 77 return new RandomNodeID(m_uuid); |
2 | 78 } |
79 | |
80 @Override | |
81 public String getUUID() | |
82 { | |
83 return m_uuid; | |
84 } | |
85 | |
86 @Override | |
87 public String getVersion() | |
88 { | |
89 return Long.toHexString(m_version); | |
90 } | |
91 } | |
92 } |