0
|
1 package treecms.api;
|
|
2
|
7
|
3 import treecms.tree.util.PathNotFoundException;
|
|
4
|
6
|
5 /**
|
|
6 * 木構造を非破壊的に更新する機能を提供します.TreeEditorはTreeを非破壊的に更新していき,commitすることでTreeに更新を適用します.
|
|
7 * TreeEditor.getRootはcommitされていない状態のRootNodeを取得します.
|
|
8 * この機能は分散リポジトリを参考に考案されました.
|
|
9 * @author shoshi
|
|
10 */
|
7
|
11 public interface TreeEditor
|
0
|
12 {
|
6
|
13 /**
|
|
14 * 非破壊的に更新した木構造を適用します.
|
|
15 * 更新する際に他の方法により木構造がすでに更新されていた場合,commitは失敗します。_forceがtrueの場合,強制的に置き換えます.
|
|
16 * @param _force 強制コミットフラグ
|
|
17 * @return 成功した場合true,失敗した場合false
|
|
18 */
|
0
|
19 public boolean commit(boolean _force);
|
|
20
|
6
|
21 /**
|
|
22 * 監視している木構造をEditorにキャッシュします.
|
|
23 * @return キャッシュが成功した場合はtrue,失敗した場合はfalse
|
|
24 */
|
0
|
25 public boolean pull();
|
|
26
|
6
|
27 /**
|
|
28 * 監視されている木構造が更新されていないかチェックします.
|
|
29 * @return 更新されていた場合はture,されていない場合はfalse
|
|
30 */
|
0
|
31 public boolean check();
|
|
32
|
6
|
33 /**
|
|
34 * 監視している木構造をキャッシュにマージします.
|
|
35 */
|
0
|
36 public void merge();
|
6
|
37
|
|
38 /**
|
7
|
39 * この木構造のルートNodeを返します。
|
|
40 * @return この木構造のルートNode
|
|
41 */
|
|
42 public Node getRoot();
|
|
43
|
|
44 /**
|
|
45 * 木構造を非破壊的に更新します.変更の対象となるNodeが木構造内に見つからない場合,PathNotFoundExceptionがスローされます.
|
6
|
46 * @param _target 更新する対象のNode
|
|
47 * @param _newData 新しいNodeに割り当てられるNodeData
|
|
48 * @return 更新された新しいNode
|
7
|
49 * @throws PathNotFoundException パスが見つからない場合
|
6
|
50 */
|
7
|
51 public Node updateTree(Node _target,NodeData _newData) throws PathNotFoundException;
|
0
|
52 }
|