view src/treecms/api/Forest.java @ 8:f96193babac0

changed byte[] to ByteBuffer added TreeEditor.updateTree(Node,NodeData,Node[]) for node path is known. added GUIEditor
author shoshi
date Thu, 31 Mar 2011 02:08:44 +0900
parents 12604eb6b615
children 17ed97ca9960
line wrap: on
line source

package treecms.api;

/**
 * ForestはNodeの集合で、集合に対するアクセスを提供します.クライアントはNodeIDを用いてNodeの取得や作成を行うことが出来ます.
 * @author shoshi
 */
public interface Forest
{
	/**
	 * NodeIDで示されるNodeを取得します.
	 * @param _id Nodeを示すNodeID.
	 * @return NodeIDと一致するNodeがある場合は,Nodeのインスタンスを返し,見つからない場合はnullを返します.
	 */
	Node get(NodeID _id);
	
	/**
	 * あるNodeをルートとしてTreeのオブジェクトを取得します。
	 * @param _id 木のルートとなるNodeのNodeID
	 * @return Tree
	 */
	Tree getAsTree(NodeID _id);
	
	/**
	 * あるNodeをルートとしたTreeを非破壊的に編集するTreeEditorを取得します。
	 * @param _id 木のルートとなるNodeのNodeID
	 * @return TreeEditor
	 */
	TreeEditor getAsTreeEditor(NodeID _id);
	
	/**
	 * 同じUUIDを持つNode中で最新のNodeを取得します.
	 * @param _uuid NodeIDのUUID
	 * @return UUIDと一致するNodeが見つからない場合はnullを返します.
	 */
	Node getTip(String _uuid);
	
	/**
	 * 新しいNodeを作成します.このメソッドで作成されるNodeは新しいUUIDを持ちます.
	 * @return 新しいNode
	 */
	Node create();
	
	/**
	 * NodeDataを保持する新しいNodeを作成します.このメソッドで作成されるNodeは新しいUUIDを持ちます.
	 * このメソッドはNodeDataをNodeに割り当てるとき防御的コピーを行います.
	 * @param _data 新しいNodeが保持するNodeData
	 * @return NodeDataを保持した新しいNode
	 */
	Node create(NodeData _data);
	
	/**
	 * このForestの現在の最新のMainTreeを取得します
	 * @return このForestのMainTree、最新版
	 */
	Tree getMainTree();
}