comparison src/treecms/memory/OnMemoryForest.java @ 6:12604eb6b615

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