annotate src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/jungleTreeEditor/DefaultDifferenceJungleTreeEditor.java @ 265:b3a04bc21b23 Implementation_of_communication

add UnDefineNode
author tatsuki
date Tue, 13 Dec 2016 03:16:12 +0900
parents cac88cf813f1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
263
tatsuki
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor;
tatsuki
parents:
diff changeset
2
265
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
3 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode;
263
tatsuki
parents:
diff changeset
4 import jp.ac.u_ryukyu.ie.cr.jungle.store.logger.DefaultTreeOperationLog;
tatsuki
parents:
diff changeset
5 import jp.ac.u_ryukyu.ie.cr.jungle.store.logger.LoggingNode;
265
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.jungle.store.logger.OperationLog;
263
tatsuki
parents:
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.jungle.store.logger.TreeOperationLog;
tatsuki
parents:
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath;
265
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.DefaultTreeOperation;
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.NodeOperation;
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.TreeOperation;
263
tatsuki
parents:
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.jungle.store.trasnformer.AppendChildAt;
tatsuki
parents:
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.jungle.store.trasnformer.NodeEditor;
tatsuki
parents:
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.TransactionManager;
tatsuki
parents:
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.treeEditor.TreeEditor;
tatsuki
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.jungle.util.DefaultEither;
tatsuki
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
tatsuki
parents:
diff changeset
18 import jp.ac.u_ryukyu.ie.cr.jungle.util.Error;
265
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
19 import jp.ac.u_ryukyu.ie.cr.jungle.util.IterableConverter;
263
tatsuki
parents:
diff changeset
20
tatsuki
parents:
diff changeset
21 import java.nio.ByteBuffer;
tatsuki
parents:
diff changeset
22
tatsuki
parents:
diff changeset
23 import static jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.Error.TreeEditorError.NOT_USE_METHOD;
tatsuki
parents:
diff changeset
24
tatsuki
parents:
diff changeset
25 /**
tatsuki
parents:
diff changeset
26 * Created by e115731 on 2016/12/11.
tatsuki
parents:
diff changeset
27 */
tatsuki
parents:
diff changeset
28 public class DefaultDifferenceJungleTreeEditor implements JungleTreeEditor {
tatsuki
parents:
diff changeset
29
tatsuki
parents:
diff changeset
30 private final TransactionManager txManager;
tatsuki
parents:
diff changeset
31 private final TreeNode root;
tatsuki
parents:
diff changeset
32 private final TreeEditor editor;
tatsuki
parents:
diff changeset
33 private final TreeOperationLog log;
tatsuki
parents:
diff changeset
34
tatsuki
parents:
diff changeset
35 public DefaultDifferenceJungleTreeEditor(TreeNode _root, TransactionManager _txManager, TreeEditor _editor) {
tatsuki
parents:
diff changeset
36 this(_root, _txManager, _editor, new DefaultTreeOperationLog());
tatsuki
parents:
diff changeset
37 }
tatsuki
parents:
diff changeset
38
tatsuki
parents:
diff changeset
39
tatsuki
parents:
diff changeset
40 public DefaultDifferenceJungleTreeEditor(TreeNode newNode, TransactionManager _txManager, TreeEditor _editor, TreeOperationLog _log) {
tatsuki
parents:
diff changeset
41 this.root = newNode;
tatsuki
parents:
diff changeset
42 this.txManager = _txManager;
tatsuki
parents:
diff changeset
43 this.editor = _editor;
tatsuki
parents:
diff changeset
44 this.log = _log;
tatsuki
parents:
diff changeset
45 }
tatsuki
parents:
diff changeset
46
tatsuki
parents:
diff changeset
47 private Either<Error, JungleTreeEditor> _edit(final NodePath _path, NodeEditor _e) {
tatsuki
parents:
diff changeset
48 Either<Error, LoggingNode> either = editor.edit(root, _path, _e);
265
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
49 if(either.isA()){
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
50 return DefaultEither.newA(either.a());
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
51 }
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
52
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
53 LoggingNode newLogging = either.b();
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
54 OperationLog newLog = newLogging.getOperationLog();
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
55 TreeNode newNode = newLogging.getWrap();
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
56
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
57 IterableConverter.Converter<TreeOperation,NodeOperation> converter = new IterableConverter.Converter<TreeOperation,NodeOperation>(){
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
58 @Override
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
59 public TreeOperation conv(NodeOperation _b){
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
60 return new DefaultTreeOperation(_path,_b);
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
61 }
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
62 };
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
63
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
64 Iterable<TreeOperation> iterable = new IterableConverter<>(newLog,converter);
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
65 DefaultTreeOperationLog treeOperationLog = new DefaultTreeOperationLog(iterable,newLog.length());
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
66 TreeOperationLog newTreeOpLog = log.append(treeOperationLog);
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
67
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
68 JungleTreeEditor newEditor = new DefaultDifferenceJungleTreeEditor(newNode,txManager,editor,newTreeOpLog);
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
69 return DefaultEither.newB(newEditor);
263
tatsuki
parents:
diff changeset
70 }
tatsuki
parents:
diff changeset
71
tatsuki
parents:
diff changeset
72
tatsuki
parents:
diff changeset
73 @Override
tatsuki
parents:
diff changeset
74 public Either<Error, JungleTreeEditor> addNewChildAt(NodePath path, int pos) {
tatsuki
parents:
diff changeset
75 AppendChildAt appendChildAt = new AppendChildAt(pos);
tatsuki
parents:
diff changeset
76 return _edit(path,appendChildAt);
tatsuki
parents:
diff changeset
77 }
tatsuki
parents:
diff changeset
78
tatsuki
parents:
diff changeset
79 @Override
tatsuki
parents:
diff changeset
80 public Either<Error, JungleTreeEditor> deleteChildAt(NodePath path, int pos) {
tatsuki
parents:
diff changeset
81 return null;
tatsuki
parents:
diff changeset
82 }
tatsuki
parents:
diff changeset
83
tatsuki
parents:
diff changeset
84 @Override
tatsuki
parents:
diff changeset
85 public Either<Error, JungleTreeEditor> putAttribute(NodePath path, String key, ByteBuffer value) {
tatsuki
parents:
diff changeset
86 return null;
tatsuki
parents:
diff changeset
87 }
tatsuki
parents:
diff changeset
88
tatsuki
parents:
diff changeset
89 @Override
tatsuki
parents:
diff changeset
90 public Either<Error, JungleTreeEditor> deleteAttribute(NodePath path, String key) {
tatsuki
parents:
diff changeset
91 return null;
tatsuki
parents:
diff changeset
92 }
tatsuki
parents:
diff changeset
93
tatsuki
parents:
diff changeset
94 @Override
tatsuki
parents:
diff changeset
95 public Either<Error, JungleTreeEditor> replaceNewRootNode() {
tatsuki
parents:
diff changeset
96 return null;
tatsuki
parents:
diff changeset
97 }
tatsuki
parents:
diff changeset
98
tatsuki
parents:
diff changeset
99 @Override
tatsuki
parents:
diff changeset
100 public Either<Error, JungleTreeEditor> edit(NodePath path, NodeEditor editor) {
tatsuki
parents:
diff changeset
101 return null;
tatsuki
parents:
diff changeset
102 }
tatsuki
parents:
diff changeset
103
tatsuki
parents:
diff changeset
104 @Override
tatsuki
parents:
diff changeset
105 public Either<Error, JungleTreeEditor> success() {
tatsuki
parents:
diff changeset
106 return null;
tatsuki
parents:
diff changeset
107 }
tatsuki
parents:
diff changeset
108
tatsuki
parents:
diff changeset
109 @Override
tatsuki
parents:
diff changeset
110 public Either<Error, JungleTreeEditor> flushSuccess() {
tatsuki
parents:
diff changeset
111 return null;
tatsuki
parents:
diff changeset
112 }
tatsuki
parents:
diff changeset
113
tatsuki
parents:
diff changeset
114 @Override
tatsuki
parents:
diff changeset
115 public Either<Error, JungleTreeEditor> moveChild(NodePath path, int childNum, String move) {
tatsuki
parents:
diff changeset
116 return DefaultEither.newA(NOT_USE_METHOD);
tatsuki
parents:
diff changeset
117 }
tatsuki
parents:
diff changeset
118 }