Mercurial > hg > Members > shoshi > TreeCMSv2
comparison src/treecms/api/Node.java @ 12:fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
author | shoshi |
---|---|
date | Wed, 11 May 2011 03:34:01 +0900 |
parents | 85061e874775 |
children | c8601b0fa8a3 |
comparison
equal
deleted
inserted
replaced
11:85061e874775 | 12:fbbb7e414346 |
---|---|
1 package treecms.api; | 1 package treecms.api; |
2 | 2 |
3 import java.util.Iterator; | |
3 import java.util.List; | 4 import java.util.List; |
4 import java.util.Map; | 5 import java.util.Map; |
6 import java.util.Set; | |
5 import java.nio.ByteBuffer; | 7 import java.nio.ByteBuffer; |
6 | 8 |
7 /** | 9 /** |
8 * 木構造の基本のデータ単位であるNodeを示します.Nodeは子供のリストとデータのマップを保持します.また,クライアントはノードが保持しているデータをNodeDataとして | 10 * 木構造の基本のデータ単位であるNodeを示します.Nodeは子供のリストとデータのマップを保持します.また,クライアントはノードが保持しているデータをNodeDataとして |
9 * 取得することが出来ます. | 11 * 取得することが出来ます. |
12 * | |
13 * NodeはSingleLinkで子供Nodeへのパスしか保持していません、どのNodeが親かどうか判断するのは不可能です. | |
14 * このようにしたのは,非破壊的木構造を実装するに当たり,編集対象のNodeの親を検索するのが困難であるからです. | |
15 * DoubleLinkな実装はTree/MonotonicTreeで行います. | |
16 * | |
17 * また,重複した子供を追加することは出来ません,このインターフェイスを実装するクラスはそのように実装します. | |
10 * @author shoshi | 18 * @author shoshi |
11 */ | 19 */ |
12 public interface Node | 20 public interface Node |
13 { | 21 { |
14 /** | 22 /** |
17 */ | 25 */ |
18 public NodeID getID(); | 26 public NodeID getID(); |
19 | 27 |
20 /** | 28 /** |
21 * Nodeが保持するデータを取得します.クライアントはこのメソッドを用いて取得されるNodeDataを用いてNodeの内容を<b>変更できません</b>。 | 29 * Nodeが保持するデータを取得します.クライアントはこのメソッドを用いて取得されるNodeDataを用いてNodeの内容を<b>変更できません</b>。 |
30 * 変更を加えた場合は無視されるか、例外が発生します. | |
22 * @return Nodeが保持するNodeData | 31 * @return Nodeが保持するNodeData |
23 */ | 32 */ |
24 public NodeData getData(); | 33 public NodeData getData(); |
25 | 34 |
26 /** | 35 /** |
27 * Nodeが属するForestを取得します. | 36 * Nodeが属するForestを取得します. |
28 * @return Nodeが属するForest | 37 * @return Nodeが属するForest |
29 */ | 38 */ |
30 public Forest getForest(); | 39 public Forest getForest(); |
31 | 40 |
32 /** | 41 /* |
33 * 子供Nodeのリストを取得します.. | 42 * 属性関連のメソッド |
34 * @return 子供Nodeのリスト | 43 * get,getAll,put,putAll,remove,removeAll,clear |
35 */ | 44 */ |
36 public List<Node> children(); | |
37 | |
38 /** | |
39 * このNodeが保持するデータをマップとしてすべて取得します. | |
40 * @return Nodeが保持するすべてのデータのマップ | |
41 */ | |
42 public Map<ByteBuffer,ByteBuffer> getAll(); | |
43 | 45 |
44 /** | 46 /** |
45 * このNodeが保持する値の中で指定されたキーと対応する値を取得します. | 47 * このNodeが保持する値の中で指定されたキーと対応する値を取得します. |
46 * @param _key データに対応するキー | 48 * @param _key データに対応するキー |
47 * @return キーと対応する値,見つからない場合はnull | 49 * @return キーと対応する値,見つからない場合はnull |
48 */ | 50 */ |
49 public ByteBuffer get(ByteBuffer _key); | 51 public ByteBuffer get(ByteBuffer _key); |
50 | 52 |
51 /** | 53 /** |
52 * 指定されたリストに含まれるNodeを,すべて子供Nodeとして追加します. | 54 * このNodeが保持するデータをマップとしてすべて取得します. |
53 * @param _children 追加される子供Nodeを保持するリスト | 55 * @return Nodeが保持するすべてのデータのマップ |
54 */ | 56 */ |
55 public void addAll(List<Node> _children); | 57 public Map<ByteBuffer,ByteBuffer> getAll(); |
56 | |
57 /** | |
58 * 指定されたNodeを子供Nodeとして追加します. | |
59 * @param _child | |
60 */ | |
61 public void add(Node _child); | |
62 | |
63 /** | |
64 * 指定されたNodeを削除します。 | |
65 * @param _child | |
66 */ | |
67 public void remove(Node _child); | |
68 | |
69 /** | |
70 * 指定した子供を全て削除します. | |
71 * @param _children 削除される子供 | |
72 */ | |
73 public void removeAll(List<Node> _children); | |
74 | 58 |
75 /** | 59 /** |
76 * キーとそれに対応する値を保存します.キーが重複した場合は上書きされます. | 60 * キーとそれに対応する値を保存します.キーが重複した場合は上書きされます. |
77 * @param _key キー | 61 * @param _key キー |
78 * @param _value 値 | 62 * @param _value 値 |
79 */ | 63 */ |
80 public void put(ByteBuffer _key,ByteBuffer _value); | 64 public void put(ByteBuffer _key,ByteBuffer _value); |
81 | 65 |
82 /** | 66 /** |
67 * キーとそれに対応する値を複数保持するマップを引数としてとり,マップが保持する値をすべて追加します. | |
68 * @param _map 追加される値のマップ | |
69 */ | |
70 public void putAll(Map<ByteBuffer,ByteBuffer> _map); | |
71 | |
72 /** | |
83 * キーとそれに対応する値を削除します。 | 73 * キーとそれに対応する値を削除します。 |
84 * @param _key キー | 74 * @param _key キー |
85 */ | 75 */ |
86 public void remove(ByteBuffer _key); | 76 public void remove(ByteBuffer _key); |
87 | 77 |
88 /** | 78 /** |
89 * キーとそれに対応する値を複数保持するマップを引数としてとり,マップが保持する値をすべて追加します. | 79 * Keyの集合すべてを削除します. |
90 * @param _map 追加される値のマップ | 80 * @param _key |
91 */ | 81 */ |
92 public void putAll(Map<ByteBuffer,ByteBuffer> _map); | 82 public void removeAll(Set<ByteBuffer> _key); |
83 | |
84 /** | |
85 * Keyの集合全てを削除します. | |
86 */ | |
87 public void clear(); | |
88 | |
89 /* | |
90 * 子供関連 | |
91 * getChildren,addChild,addChildren,removeChild,removeChildren,clearChildren | |
92 */ | |
93 | |
94 /** | |
95 * 子供のIteratorを取得します.このIteratorは編集するためのメソッドは実装しません. | |
96 * 呼び出した場合は例外は発生します. | |
97 * @return 子供NodeのIterator | |
98 */ | |
99 public Iterator<Node> getChildren(); | |
100 | |
101 /** | |
102 * 指定されたNodeを子供Nodeとして追加します. | |
103 * @param _child | |
104 */ | |
105 public void addChild(Node _child); | |
106 | |
107 /** | |
108 * 指定されたリストに含まれるNodeを,すべて子供Nodeとして追加します. | |
109 * @param _children 追加される子供Nodeを保持するリスト | |
110 */ | |
111 public void addChildren(List<Node> _children); | |
112 | |
113 /** | |
114 * 指定されたNodeを削除します。 | |
115 * @param _child | |
116 */ | |
117 public void removeChild(Node _child); | |
118 | |
119 /** | |
120 * 指定した子供を全て削除します. | |
121 * @param _children 削除される子供 | |
122 */ | |
123 public void removeChildren(List<Node> _children); | |
124 | |
125 /** | |
126 * 全ての子供を削除します. | |
127 */ | |
128 public void clearChildren(); | |
93 } | 129 } |