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