view src/treecms/api/NodeID.java @ 20:084de6909451

commit
author shoshi
date Wed, 01 Jun 2011 15:35:50 +0900
parents 12604eb6b615
children
line wrap: on
line source

package treecms.api;

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