Mercurial > hg > Members > shoshi > TreeCMSv2
diff 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 |
line wrap: on
line diff
--- a/src/treecms/api/Node.java Fri May 06 00:42:57 2011 +0900 +++ b/src/treecms/api/Node.java Wed May 11 03:34:01 2011 +0900 @@ -1,12 +1,20 @@ package treecms.api; +import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Set; import java.nio.ByteBuffer; /** * 木構造の基本のデータ単位であるNodeを示します.Nodeは子供のリストとデータのマップを保持します.また,クライアントはノードが保持しているデータをNodeDataとして * 取得することが出来ます. + * + * NodeはSingleLinkで子供Nodeへのパスしか保持していません、どのNodeが親かどうか判断するのは不可能です. + * このようにしたのは,非破壊的木構造を実装するに当たり,編集対象のNodeの親を検索するのが困難であるからです. + * DoubleLinkな実装はTree/MonotonicTreeで行います. + * + * また,重複した子供を追加することは出来ません,このインターフェイスを実装するクラスはそのように実装します. * @author shoshi */ public interface Node @@ -19,6 +27,7 @@ /** * Nodeが保持するデータを取得します.クライアントはこのメソッドを用いて取得されるNodeDataを用いてNodeの内容を<b>変更できません</b>。 + * 変更を加えた場合は無視されるか、例外が発生します. * @return Nodeが保持するNodeData */ public NodeData getData(); @@ -29,17 +38,10 @@ */ public Forest getForest(); - /** - * 子供Nodeのリストを取得します.. - * @return 子供Nodeのリスト + /* + * 属性関連のメソッド + * get,getAll,put,putAll,remove,removeAll,clear */ - public List<Node> children(); - - /** - * このNodeが保持するデータをマップとしてすべて取得します. - * @return Nodeが保持するすべてのデータのマップ - */ - public Map<ByteBuffer,ByteBuffer> getAll(); /** * このNodeが保持する値の中で指定されたキーと対応する値を取得します. @@ -49,28 +51,10 @@ public ByteBuffer get(ByteBuffer _key); /** - * 指定されたリストに含まれるNodeを,すべて子供Nodeとして追加します. - * @param _children 追加される子供Nodeを保持するリスト - */ - public void addAll(List<Node> _children); - - /** - * 指定されたNodeを子供Nodeとして追加します. - * @param _child + * このNodeが保持するデータをマップとしてすべて取得します. + * @return Nodeが保持するすべてのデータのマップ */ - public void add(Node _child); - - /** - * 指定されたNodeを削除します。 - * @param _child - */ - public void remove(Node _child); - - /** - * 指定した子供を全て削除します. - * @param _children 削除される子供 - */ - public void removeAll(List<Node> _children); + public Map<ByteBuffer,ByteBuffer> getAll(); /** * キーとそれに対応する値を保存します.キーが重複した場合は上書きされます. @@ -80,14 +64,66 @@ public void put(ByteBuffer _key,ByteBuffer _value); /** + * キーとそれに対応する値を複数保持するマップを引数としてとり,マップが保持する値をすべて追加します. + * @param _map 追加される値のマップ + */ + public void putAll(Map<ByteBuffer,ByteBuffer> _map); + + /** * キーとそれに対応する値を削除します。 * @param _key キー */ public void remove(ByteBuffer _key); /** - * キーとそれに対応する値を複数保持するマップを引数としてとり,マップが保持する値をすべて追加します. - * @param _map 追加される値のマップ + * Keyの集合すべてを削除します. + * @param _key + */ + public void removeAll(Set<ByteBuffer> _key); + + /** + * Keyの集合全てを削除します. + */ + public void clear(); + + /* + * 子供関連 + * getChildren,addChild,addChildren,removeChild,removeChildren,clearChildren + */ + + /** + * 子供のIteratorを取得します.このIteratorは編集するためのメソッドは実装しません. + * 呼び出した場合は例外は発生します. + * @return 子供NodeのIterator + */ + public Iterator<Node> getChildren(); + + /** + * 指定されたNodeを子供Nodeとして追加します. + * @param _child */ - public void putAll(Map<ByteBuffer,ByteBuffer> _map); -} \ No newline at end of file + public void addChild(Node _child); + + /** + * 指定されたリストに含まれるNodeを,すべて子供Nodeとして追加します. + * @param _children 追加される子供Nodeを保持するリスト + */ + public void addChildren(List<Node> _children); + + /** + * 指定されたNodeを削除します。 + * @param _child + */ + public void removeChild(Node _child); + + /** + * 指定した子供を全て削除します. + * @param _children 削除される子供 + */ + public void removeChildren(List<Node> _children); + + /** + * 全ての子供を削除します. + */ + public void clearChildren(); +}