annotate src/jungle/test/datasegment/store/operations/DefaultNodeOperationContainer.java @ 2:20498c88a70d

add Container
author one
date Sun, 09 Jun 2013 13:53:16 +0900
parents
children 3770d2be3e73
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
20498c88a70d add Container
one
parents:
diff changeset
1 package jungle.test.datasegment.store.operations;
20498c88a70d add Container
one
parents:
diff changeset
2
20498c88a70d add Container
one
parents:
diff changeset
3 import java.io.IOException;
20498c88a70d add Container
one
parents:
diff changeset
4 import java.nio.ByteBuffer;
20498c88a70d add Container
one
parents:
diff changeset
5
20498c88a70d add Container
one
parents:
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
20498c88a70d add Container
one
parents:
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.AppendChildAtOperation;
20498c88a70d add Container
one
parents:
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteAttributeOperation;
20498c88a70d add Container
one
parents:
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation;
20498c88a70d add Container
one
parents:
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
20498c88a70d add Container
one
parents:
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
20498c88a70d add Container
one
parents:
diff changeset
12
20498c88a70d add Container
one
parents:
diff changeset
13 import org.msgpack.MessagePack;
20498c88a70d add Container
one
parents:
diff changeset
14 import org.msgpack.annotation.Message;
20498c88a70d add Container
one
parents:
diff changeset
15 import org.msgpack.template.OrdinalEnumTemplate;
20498c88a70d add Container
one
parents:
diff changeset
16 import org.msgpack.template.Template;
20498c88a70d add Container
one
parents:
diff changeset
17 import org.msgpack.type.Value;
20498c88a70d add Container
one
parents:
diff changeset
18
20498c88a70d add Container
one
parents:
diff changeset
19 @Message
20498c88a70d add Container
one
parents:
diff changeset
20 public class DefaultNodeOperationContainer {
20498c88a70d add Container
one
parents:
diff changeset
21
20498c88a70d add Container
one
parents:
diff changeset
22 public int pos;
20498c88a70d add Container
one
parents:
diff changeset
23 public String key;
20498c88a70d add Container
one
parents:
diff changeset
24 public Value value;
20498c88a70d add Container
one
parents:
diff changeset
25 public Value commandValue;
20498c88a70d add Container
one
parents:
diff changeset
26
20498c88a70d add Container
one
parents:
diff changeset
27
20498c88a70d add Container
one
parents:
diff changeset
28 public DefaultNodeOperationContainer() {
20498c88a70d add Container
one
parents:
diff changeset
29
20498c88a70d add Container
one
parents:
diff changeset
30 }
20498c88a70d add Container
one
parents:
diff changeset
31
20498c88a70d add Container
one
parents:
diff changeset
32 public void unconvert(NodeOperation op) throws IOException {
20498c88a70d add Container
one
parents:
diff changeset
33 MessagePack msgpack = new MessagePack();
20498c88a70d add Container
one
parents:
diff changeset
34 pos = op.getPosition();
20498c88a70d add Container
one
parents:
diff changeset
35 key = op.getKey();
20498c88a70d add Container
one
parents:
diff changeset
36 value = null;
20498c88a70d add Container
one
parents:
diff changeset
37 if (op.getValue() != null) {
20498c88a70d add Container
one
parents:
diff changeset
38 ByteBuffer b = op.getValue();
20498c88a70d add Container
one
parents:
diff changeset
39 Value v = msgpack.unconvert(b);
20498c88a70d add Container
one
parents:
diff changeset
40 value = v;
20498c88a70d add Container
one
parents:
diff changeset
41 }
20498c88a70d add Container
one
parents:
diff changeset
42 Command c = op.getCommand();
20498c88a70d add Container
one
parents:
diff changeset
43 msgpack.register(c.getClass(), new OrdinalEnumTemplate(c.getClass()));
20498c88a70d add Container
one
parents:
diff changeset
44 Value cValue = msgpack.unconvert(c);
20498c88a70d add Container
one
parents:
diff changeset
45 commandValue = cValue;
20498c88a70d add Container
one
parents:
diff changeset
46 }
20498c88a70d add Container
one
parents:
diff changeset
47
20498c88a70d add Container
one
parents:
diff changeset
48 public NodeOperation convert() throws IOException{
20498c88a70d add Container
one
parents:
diff changeset
49 MessagePack msgpack = new MessagePack();
20498c88a70d add Container
one
parents:
diff changeset
50 Command c = msgpack.convert(commandValue, Command.class);
20498c88a70d add Container
one
parents:
diff changeset
51 ByteBuffer b = null;
20498c88a70d add Container
one
parents:
diff changeset
52 if (value != null) {
20498c88a70d add Container
one
parents:
diff changeset
53 b = msgpack.convert(value, ByteBuffer.class);
20498c88a70d add Container
one
parents:
diff changeset
54 }
20498c88a70d add Container
one
parents:
diff changeset
55 if (c == Command.PUT_ATTRIBUTE) {
20498c88a70d add Container
one
parents:
diff changeset
56 return new PutAttributeOperation(key, b);
20498c88a70d add Container
one
parents:
diff changeset
57 } else if (c == Command.APPEND_CHILD) {
20498c88a70d add Container
one
parents:
diff changeset
58 return new AppendChildAtOperation(pos);
20498c88a70d add Container
one
parents:
diff changeset
59 } else if (c == Command.DELETE_CHILD) {
20498c88a70d add Container
one
parents:
diff changeset
60 return new DeleteChildAtOperation(pos);
20498c88a70d add Container
one
parents:
diff changeset
61 } else if (c == Command.DELETE_ATTRIBUTE){
20498c88a70d add Container
one
parents:
diff changeset
62 return new DeleteAttributeOperation(key);
20498c88a70d add Container
one
parents:
diff changeset
63 }
20498c88a70d add Container
one
parents:
diff changeset
64 return null;
20498c88a70d add Container
one
parents:
diff changeset
65 }
20498c88a70d add Container
one
parents:
diff changeset
66
20498c88a70d add Container
one
parents:
diff changeset
67
20498c88a70d add Container
one
parents:
diff changeset
68 }