annotate src/alice/jungle/operations/NetworkNodeOperation.java @ 79:5b9708d9febc

Modified NetworkTreeOperationLog NetworkNodeOperation
author one
date Wed, 16 Oct 2013 19:25:02 +0900
parents 0055d917c796
children b3ccefdf2b43
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
77
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
1 package alice.jungle.operations;
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
2
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
3 import java.nio.ByteBuffer;
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
4
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
79
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.DeleteAttribute;
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.DeleteChildAt;
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.PutAttribute;
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
77
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
13
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
14 import org.msgpack.annotation.Message;
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
15
79
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
16 import alice.jungle.datasegment.store.transformer.NetworkAppendChildAt;
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
17
77
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
18 @Message
79
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
19 public class NetworkNodeOperation implements NodeOperation{
77
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
20
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
21 public int pos;
78
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
22 public String key;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
23 public ByteBuffer value;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
24 public int commandType;
77
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
25
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
26 public NetworkNodeOperation() {
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
27 pos = -2;
78
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
28 key = null;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
29 value = null;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
30 commandType = 0;
77
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
31 }
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
32
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
33 public NetworkNodeOperation(NodeOperation _op) {
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
34 pos = _op.getPosition();
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
35 key = _op.getKey();
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
36 value = _op.getValue();
78
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
37 commandType = getCommandType(_op.getCommand());
77
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
38 }
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
39
78
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
40 public static int getCommandType(Command c) {
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
41 switch(c) {
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
42 case PUT_ATTRIBUTE:
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
43 return 1;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
44 case APPEND_CHILD:
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
45 return 2;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
46 case DELETE_CHILD:
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
47 return 3;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
48 case DELETE_ATTRIBUTE:
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
49 return 4;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
50 default:
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
51 break;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
52 }
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
53 return 0;
77
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
54 }
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
55
78
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
56 public static Command getCommand(int num) {
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
57 switch(num) {
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
58 case 1:
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
59 return Command.PUT_ATTRIBUTE;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
60 case 2:
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
61 return Command.APPEND_CHILD;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
62 case 3:
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
63 return Command.DELETE_CHILD;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
64 case 4:
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
65 return Command.DELETE_ATTRIBUTE;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
66 default:
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
67 break;
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
68 }
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
69 return null;
77
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
70 }
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
71
78
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
72 public Command getCommand() {
0055d917c796 Modified NetworkNodeOperation
one
parents: 77
diff changeset
73 return getCommand(commandType);
77
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
74 }
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
75
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
76 public int getPosition() {
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
77 return pos;
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
78 }
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
79
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
80 public String getKey() {
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
81 return key;
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
82 }
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
83
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
84 public ByteBuffer getValue() {
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
85 return value;
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
86 }
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
87
79
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
88 @Override
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
89 public <T extends EditableNode<T>> Either<Error, T> invoke(T _target) {
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
90 switch(getCommand(commandType)) {
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
91 case PUT_ATTRIBUTE:
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
92 PutAttribute putAttribute = new PutAttribute(key,value);
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
93 return putAttribute.edit(_target);
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
94 case APPEND_CHILD:
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
95 NetworkAppendChildAt appendChildAt = new NetworkAppendChildAt(pos);
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
96 return appendChildAt.edit(_target);
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
97 case DELETE_CHILD:
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
98 DeleteChildAt deleteChildAt = new DeleteChildAt(pos);
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
99 return deleteChildAt.edit(_target);
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
100 case DELETE_ATTRIBUTE:
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
101 DeleteAttribute deleteAttribute = new DeleteAttribute(key);
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
102 return deleteAttribute.edit(_target);
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
103 default:
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
104 break;
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
105 }
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
106 return null;
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
107 }
5b9708d9febc Modified NetworkTreeOperationLog NetworkNodeOperation
one
parents: 78
diff changeset
108
77
2dba7e1cf9fa Added NetworknodeOperation and Test
one
parents:
diff changeset
109 }