comparison src/treecms/memory/OnMemoryForest.java @ 9:17ed97ca9960

commit
author shoshi
date Mon, 18 Apr 2011 01:07:27 +0900
parents f96193babac0
children 85061e874775
comparison
equal deleted inserted replaced
8:f96193babac0 9:17ed97ca9960
12 import treecms.api.TreeEditor; 12 import treecms.api.TreeEditor;
13 import treecms.tree.id.AbstractRandomNodeID; 13 import treecms.tree.id.AbstractRandomNodeID;
14 14
15 /** 15 /**
16 * Forestのオンメモリ上の実装. 16 * Forestのオンメモリ上の実装.
17 * このクラスはスレッドセーフだと思います.たぶん
18 * @author shoshi 17 * @author shoshi
19 */ 18 */
20 public class OnMemoryForest implements Forest 19 public class OnMemoryForest implements Forest
21 { 20 {
22 //Nodeのマップ 21 //Nodeのマップ
82 * あるNodeをルートとしてTreeのオブジェクトを取得します。 81 * あるNodeをルートとしてTreeのオブジェクトを取得します。
83 * @param _id 木のルートとなるNodeのNodeID 82 * @param _id 木のルートとなるNodeのNodeID
84 * @return Tree 83 * @return Tree
85 */ 84 */
86 @Override 85 @Override
87 public Tree getAsTree(NodeID _id) 86 public Tree getTree(Node _node)
88 { 87 {
89 return new OnMemoryTree((OnMemoryNode) get(_id)); 88 Forest forest = _node.getForest();
89 if(forest != this){
90 throw new IllegalArgumentException();
91 }
92
93 return new OnMemoryTree((OnMemoryNode)_node);
90 } 94 }
91 95
92 /** 96 /**
93 * あるNodeをルートとしたTreeを非破壊的に編集するTreeEditorを取得します。 97 * あるNodeをルートとしたTreeを非破壊的に編集するTreeEditorを取得します。
94 * @param _id 木のルートとなるNodeのNodeID 98 * @param _id 木のルートとなるNodeのNodeID
95 * @return TreeEditor 99 * @return TreeEditor
96 */ 100 */
97 @Override 101 @Override
98 public TreeEditor getAsTreeEditor(NodeID _id) 102 public TreeEditor getTreeEditor(Tree _tree)
99 { 103 {
100 return new OnMemoryTreeEditor((OnMemoryTree) getAsTree(_id)); 104 Forest forest = _tree.getForest();
105 if(forest != this){
106 throw new IllegalArgumentException();
107 }
108
109 return new OnMemoryTreeEditor((OnMemoryTree)_tree);
101 } 110 }
102 111
103 /** 112 /**
104 * 新しくNodeを作成します. 113 * 新しくNodeを作成します.
105 * @return 新しいNode 114 * @return 新しいNode