view src/treecms/api/NodeID.java @ 14:8bf59f161b23

separete Node methods to NodeContext , NodeAttribute , NodeChildren
author misaka
date Tue, 17 May 2011 18:44:14 +0900
parents 12604eb6b615
children 084de6909451
line wrap: on
line source

package treecms.api;

/**
 * Nodeに対応するNodeIDです.NodeIDはUUIDとバージョンから構成されており,同じUUIDを持つNodeIDはファミリーと定義します.
 * 木構造で同じUUIDを持つNodeは同一のNodeと判断されます.また,一つの木構造に同じUUIDを持つNodeは存在しません.
 * ファイルのバージョン管理と同じようなものと考えてください.その場合,UUIDがファイルのパスで,バージョンがファイルの更新日時です.
 * @author shoshi
 */
public interface NodeID
{
	/**
	 * 新しいNodeIDを作成します.新しいNodeIDは異なるUUIDを持ちます.
	 * @return 新しいUUIDを持つNodeID
	 */
	public NodeID create();
	
	/**
	 * このNodeIDが保持するUUIDを継承した,自分とバージョンの異なるNodeIDを生成します.
	 * @return UUIDを継承した新しいNodeID
	 */
	public NodeID update();
	
	/**
	 * UUIDを取得します.
	 * @return NodeIDが保持しているUUID
	 */
	public String getUUID();
	
	/**
	 * このNodeIDのバージョンを取得します.
	 * @return NodeIDのバージョン
	 */
	public String getVersion();
	
	/**
	 * このNodeIDが同一なUUIDを保持しているか比較します.
	 * @param _id
	 * @return 同一な場合はtrue,異なる場合はfalse
	 */
	public boolean isFamily(NodeID _id);
	
	/**
	 * このNodeIDの文字列表現を返します.
	 * このメソッドを実装する際に,文字列の表現方法は<b>UUID@Version</b>を採用してください.
	 * @return
	 */
	public String toString();
	
	/**
	 * このNodeIDと指定されたNodeIDを比較します.
	 * @param _obj
	 * @return 同一な場合はtrue,異なる場合はfalse
	 */
	public boolean equals(Object _obj);
	
	/**
	 * このNodeIDのハッシュ値を返します.NodeIDはハッシュテーブルのキーとして使用されるとがあります.
	 * そのため,この関数は必ず実装してください.
	 * @return ハッシュ値
	 */
	public int hashCode();
}