0
|
1 package treecms.api;
|
|
2
|
6
|
3 /**
|
|
4 * Nodeに対応するNodeIDです.NodeIDはUUIDとバージョンから構成されており,同じUUIDを持つNodeIDはファミリーと定義します.
|
|
5 * 木構造で同じUUIDを持つNodeは同一のNodeと判断されます.また,一つの木構造に同じUUIDを持つNodeは存在しません.
|
|
6 * ファイルのバージョン管理と同じようなものと考えてください.その場合,UUIDがファイルのパスで,バージョンがファイルの更新日時です.
|
|
7 * @author shoshi
|
|
8 */
|
0
|
9 public interface NodeID
|
|
10 {
|
6
|
11 /**
|
|
12 * 新しいNodeIDを作成します.新しいNodeIDは異なるUUIDを持ちます.
|
|
13 * @return 新しいUUIDを持つNodeID
|
|
14 */
|
0
|
15 public NodeID create();
|
6
|
16
|
|
17 /**
|
|
18 * このNodeIDが保持するUUIDを継承した,自分とバージョンの異なるNodeIDを生成します.
|
|
19 * @return UUIDを継承した新しいNodeID
|
|
20 */
|
0
|
21 public NodeID update();
|
6
|
22
|
|
23 /**
|
|
24 * UUIDを取得します.
|
|
25 * @return NodeIDが保持しているUUID
|
|
26 */
|
0
|
27 public String getUUID();
|
6
|
28
|
|
29 /**
|
|
30 * このNodeIDのバージョンを取得します.
|
|
31 * @return NodeIDのバージョン
|
|
32 */
|
0
|
33 public String getVersion();
|
6
|
34
|
|
35 /**
|
|
36 * このNodeIDが同一なUUIDを保持しているか比較します.
|
|
37 * @param _id
|
|
38 * @return 同一な場合はtrue,異なる場合はfalse
|
|
39 */
|
|
40 public boolean isFamily(NodeID _id);
|
|
41
|
|
42 /**
|
|
43 * このNodeIDの文字列表現を返します.
|
|
44 * このメソッドを実装する際に,文字列の表現方法は<b>UUID@Version</b>を採用してください.
|
|
45 * @return
|
|
46 */
|
0
|
47 public String toString();
|
|
48
|
6
|
49 /**
|
|
50 * このNodeIDと指定されたNodeIDを比較します.
|
|
51 * @param _obj
|
|
52 * @return 同一な場合はtrue,異なる場合はfalse
|
|
53 */
|
|
54 public boolean equals(Object _obj);
|
|
55
|
|
56 /**
|
|
57 * このNodeIDのハッシュ値を返します.NodeIDはハッシュテーブルのキーとして使用されるとがあります.
|
|
58 * そのため,この関数は必ず実装してください.
|
|
59 * @return ハッシュ値
|
|
60 */
|
|
61 public int hashCode();
|
0
|
62 }
|