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