annotate src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/transaction/JungleUpdater.java @ 263:cac88cf813f1 Implementation_of_communication

tmp
author tatsuki
date Tue, 13 Dec 2016 00:00:18 +0900
parents faa9fa06ead1
children c62462c28807
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
223
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.jungleNetwork.transaction;
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
2
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
3
263
tatsuki
parents: 235
diff changeset
4 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor;
223
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
5 import jp.ac.u_ryukyu.ie.cr.jungle.store.Command;
263
tatsuki
parents: 235
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath;
223
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.NodeOperation;
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.TreeOperation;
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.jungle.util.Error;
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
11
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
12 import java.nio.ByteBuffer;
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
13
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
14 public class JungleUpdater {
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
15
235
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
16 public JungleUpdater() {
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
17
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
18 }
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
19
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
20 public static Either<Error, JungleTreeEditor> edit(JungleTreeEditor _editor, Iterable<TreeOperation> _log) {
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
21 JungleTreeEditor editor = _editor;
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
22 Either<Error, JungleTreeEditor> either = null;
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
23 for (TreeOperation op : _log) {
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
24 NodePath path = op.getNodePath();
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
25 NodeOperation nodeOp = op.getNodeOperation();
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
26 either = _edit(editor, path, nodeOp, nodeOp.getPosition());
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
27 if (either.isA()) {
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
28 return either;
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
29 }
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
30 editor = either.b();
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
31 }
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
32 return either;
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
33 }
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
34
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
35 /*
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
36 * This method decide node position by param.
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
37 */
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
38 public static Either<Error, JungleTreeEditor> edit(JungleTreeEditor _editor, Iterable<TreeOperation> _log, int pos) {
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
39 JungleTreeEditor editor = _editor;
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
40 Either<Error, JungleTreeEditor> either = null;
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
41 for (TreeOperation op : _log) {
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
42 NodePath path = op.getNodePath();
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
43 NodeOperation nodeOp = op.getNodeOperation();
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
44 either = _edit(editor, path, nodeOp, pos);
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
45 if (either.isA()) {
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
46 return either;
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
47 }
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
48 editor = either.b();
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
49 }
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
50 return either;
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
51 }
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
52
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
53
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
54 private static Either<Error, JungleTreeEditor> _edit(JungleTreeEditor editor, NodePath path, NodeOperation nodeOp, int pos) {//posはmergeの時に使う?
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
55 String key = "";
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
56 Command c = nodeOp.getCommand();
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
57 int num;
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
58 switch (c) {
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
59 case PUT_ATTRIBUTE:
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
60 key = nodeOp.getKey();
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
61 ByteBuffer value = nodeOp.getValue();
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
62 return editor.putAttribute(path, key, value);
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
63 case DELETE_ATTRIBUTE:
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
64 key = nodeOp.getKey();
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
65 return editor.deleteAttribute(path, key);
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
66 case APPEND_CHILD:
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
67 num = nodeOp.getPosition();
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
68 return editor.addNewChildAt(path, num);
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
69 case DELETE_CHILD:
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
70 num = nodeOp.getPosition();
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
71 return editor.deleteChildAt(path, num);
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
72 }
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
73 return null;
faa9fa06ead1 log export bug fix
tatsuki
parents: 231
diff changeset
74 }
223
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
75
f0cc848b9af6 merge jungle-network but test faild
tatsuki
parents:
diff changeset
76 }