Mercurial > hg > Members > shoshi > TreeCMSv2
comparison src/treecms/memory/OnMemoryForest.java @ 15:22cd920986c5
commit
author | misaka |
---|---|
date | Tue, 17 May 2011 21:25:17 +0900 |
parents | 85061e874775 |
children | bb9760760744 |
comparison
equal
deleted
inserted
replaced
14:8bf59f161b23 | 15:22cd920986c5 |
---|---|
3 import java.util.Map; | 3 import java.util.Map; |
4 import java.util.Random; | 4 import java.util.Random; |
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; | |
9 import treecms.api.NodeData; | 8 import treecms.api.NodeData; |
10 import treecms.api.NodeID; | 9 import treecms.api.NodeID; |
10 import treecms.api.SingleNode; | |
11 import treecms.api.Tree; | 11 import treecms.api.Tree; |
12 import treecms.api.MonotonicTree; | 12 import treecms.api.MonotonicTree; |
13 import treecms.tree.id.AbstractRandomNodeID; | 13 import treecms.tree.id.AbstractRandomNodeID; |
14 | 14 |
15 /** | 15 /** |
41 * 新しくNodeを作成します | 41 * 新しくNodeを作成します |
42 * @param _id Nodeに適用されるNodeID | 42 * @param _id Nodeに適用されるNodeID |
43 * @param _newData Nodeが保持するNodeData | 43 * @param _newData Nodeが保持するNodeData |
44 * @return 作成されたOnMemoryNode | 44 * @return 作成されたOnMemoryNode |
45 */ | 45 */ |
46 public OnMemoryNode createNode(NodeID _id,NodeData _newData) | 46 public OnMemoryNode createNode(NodeID _id,NodeData<SingleNode> _newData) |
47 { | 47 { |
48 NodeID newID = (_id != null) ? _id : createID(); | 48 NodeID newID = (_id != null) ? _id : createID(); |
49 NodeData newData = (_newData != null) ? _newData : new NodeData(); | 49 NodeData<SingleNode> newData = (_newData != null) ? _newData : new NodeData<SingleNode>(); |
50 | 50 |
51 //newIDとnewDataを元にOnMemoryNodeを生成する. | 51 //newIDとnewDataを元にOnMemoryNodeを生成する. |
52 OnMemoryNode newNode = new OnMemoryNode(this,newID,newData); | 52 OnMemoryNode newNode = new OnMemoryNode(this,newID,newData); |
53 | 53 |
54 //登録 | 54 //登録 |
70 /** | 70 /** |
71 * NodeIDに対応するNodeを取得します | 71 * NodeIDに対応するNodeを取得します |
72 * @return NodeIDに対応するNode | 72 * @return NodeIDに対応するNode |
73 */ | 73 */ |
74 @Override | 74 @Override |
75 public Node get(NodeID _id) | 75 public SingleNode get(NodeID _id) |
76 { | 76 { |
77 return m_table.get(_id); | 77 return m_table.get(_id); |
78 } | 78 } |
79 | 79 |
80 /** | 80 /** |
81 * あるNodeをルートとしてTreeのオブジェクトを取得します。 | 81 * あるNodeをルートとしてTreeのオブジェクトを取得します。 |
82 * @param _id 木のルートとなるNodeのNodeID | 82 * @param _id 木のルートとなるNodeのNodeID |
83 * @return Tree | 83 * @return Tree |
84 */ | 84 */ |
85 @Override | 85 @Override |
86 public Tree getTree(Node _node) | 86 public Tree getTree(SingleNode _node) |
87 { | 87 { |
88 Forest forest = _node.getForest(); | 88 Forest forest = _node.getForest(); |
89 if(forest != this){ | 89 if(forest != this){ |
90 throw new IllegalArgumentException(); | 90 throw new IllegalArgumentException(); |
91 } | 91 } |
97 * あるNodeをルートとしたTreeを非破壊的に編集するTreeEditorを取得します。 | 97 * あるNodeをルートとしたTreeを非破壊的に編集するTreeEditorを取得します。 |
98 * @param _id 木のルートとなるNodeのNodeID | 98 * @param _id 木のルートとなるNodeのNodeID |
99 * @return TreeEditor | 99 * @return TreeEditor |
100 */ | 100 */ |
101 @Override | 101 @Override |
102 public MonotonicTree getMonotonicTree(Tree _tree) | 102 public MonotonicTree getMonotonicTree(SingleNode _node) |
103 { | 103 { |
104 Forest forest = _tree.getRoot().getNode().getForest(); | 104 Forest forest = _node.getForest(); |
105 if(forest != this){ | 105 if(forest != this){ |
106 throw new IllegalArgumentException(); | 106 throw new IllegalArgumentException(); |
107 } | 107 } |
108 | 108 |
109 return new OnMemoryMonotonicTree((OnMemoryTree)_tree); | 109 return new OnMemoryMonotonicTree((OnMemoryNode)_node); |
110 } | 110 } |
111 | 111 |
112 /** | 112 /** |
113 * 新しくNodeを作成します. | 113 * 新しくNodeを作成します. |
114 * @return 新しいNode | 114 * @return 新しいNode |
115 */ | 115 */ |
116 @Override | 116 @Override |
117 public Node create() | 117 public SingleNode create() |
118 { | 118 { |
119 return createNode(null,null); | 119 return createNode(null,null); |
120 } | 120 } |
121 | 121 |
122 /** | 122 /** |
123 * NodeDataを保持した新しいNodeを作成します | 123 * NodeDataを保持した新しいNodeを作成します |
124 * @return NodeDataを保持した新しいNode | 124 * @return NodeDataを保持した新しいNode |
125 */ | 125 */ |
126 @Override | 126 @Override |
127 public Node create(NodeData _data) | 127 public SingleNode create(NodeData<SingleNode> _data) |
128 { | 128 { |
129 return createNode(null,_data); | 129 return createNode(null,_data); |
130 } | 130 } |
131 | 131 |
132 /** | 132 /** |
133 * 最新のNodeを取得します. | 133 * 最新のNodeを取得します. |
134 * @return UUIDに対応する最新のNode | 134 * @return UUIDに対応する最新のNode |
135 */ | 135 */ |
136 @Override | 136 @Override |
137 public Node getTip(String _uuid) | 137 public SingleNode getTip(String _uuid) |
138 { | 138 { |
139 return m_tipTable.get(_uuid); | 139 return m_tipTable.get(_uuid); |
140 } | 140 } |
141 | 141 |
142 /** | 142 /** |