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 /**