annotate src/jungle/test/datasegment/store/operations/DefaultTreeOperationLogContainer.java @ 8:ee93e16d5a3f

implement unconvert and convert method in DefaultTreeOperationLog class
author one
date Tue, 11 Jun 2013 05:41:07 +0900
parents b7396f848d78
children 49c0eaa4dce2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
1 package jungle.test.datasegment.store.operations;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
2
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
3 import java.io.IOException;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
4 import java.nio.ByteBuffer;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
5 import java.util.LinkedList;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
6 import java.util.List;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DefaultTreeOperation;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
17
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
18 import org.msgpack.MessagePack;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
19 import org.msgpack.annotation.Message;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
20 import org.msgpack.template.ListTemplate;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
21 import org.msgpack.template.ValueTemplate;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
22 import org.msgpack.type.Value;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
23
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
24 @Message
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
25 public class DefaultTreeOperationLogContainer {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
26
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
27 Value logValue;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
28
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
29 public static void main(String[] args) throws IOException {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
30 String key = "hoge";
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
31 ByteBuffer b = ByteBuffer.wrap("messagepack value".getBytes());
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
32 PutAttributeOperation putOp = new PutAttributeOperation(key, b);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
33 DefaultNodePath nodePath = new DefaultNodePath();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
34 nodePath = nodePath.add(1).add(2).add(3);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
35 TreeOperation op = new DefaultTreeOperation(nodePath, putOp);
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
36 List<TreeOperation> list = new LinkedList<TreeOperation>();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
37 list.add(op);
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
38 list.add(op);
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
39 list.add(op);
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
40 DefaultTreeOperationLog log = new DefaultTreeOperationLog(list, list.size());
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
41
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
42 DefaultTreeOperationLogContainer logContainer = new DefaultTreeOperationLogContainer();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
43 logContainer.unconvert(log);
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
44
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
45 TreeOperationLog convertedLog = logContainer.convert();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
46 for (TreeOperation treeOp : convertedLog) {
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
47 NodePath path = treeOp.getNodePath();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
48 NodeOperation nodeOp = treeOp.getNodeOperation();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
49 Command c = nodeOp.getCommand();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
50 String str = "";
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
51 switch (c) {
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
52 case PUT_ATTRIBUTE:
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
53 String k = nodeOp.getKey();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
54 ByteBuffer value = nodeOp.getValue();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
55 if (value.limit() < 100) {
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
56 str = String.format("key:%s,value:%s", k,
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
57 new String(value.array()));
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
58 } else {
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
59 str = String.format("key:%s,value:%d", k, value.limit());
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
60 }
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
61 break;
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
62 case DELETE_ATTRIBUTE:
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
63 str = String.format("key:%s", nodeOp.getKey());
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
64 break;
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
65 case APPEND_CHILD:
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
66 str = String.format("pos:%d", nodeOp.getPosition());
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
67 break;
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
68 case DELETE_CHILD:
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
69 str = String.format("pos:%d", nodeOp.getPosition());
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
70 break;
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
71 }
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
72 System.out.println(String.format("[%s:%s:%s]", c, nodePath, str));
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
73 for (int i: nodePath ) {
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
74 System.out.println(i);
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
75 }
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
76
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
77 }
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
78
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
79
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
80 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
81
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
82 public DefaultTreeOperationLogContainer() {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
83
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
84 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
85
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
86 public void unconvert(DefaultTreeOperationLog _log) throws IOException {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
87 MessagePack msgpack = new MessagePack();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
88 List<Value> list = new LinkedList<Value>();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
89 for(TreeOperation op : _log) {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
90 NodeOperation nOp = op.getNodeOperation();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
91 NodePath nodePath = op.getNodePath();
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
92 DefaultTreeOperation treeOp = new DefaultTreeOperation(nodePath, nOp);
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
93 DefaultTreeOperationContainer container = new DefaultTreeOperationContainer();
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
94 container.unconvert(treeOp);
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
95 Value v = msgpack.unconvert(container);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
96 list.add(v);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
97 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
98 /* */
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
99 msgpack.register(List.class, new ListTemplate(ValueTemplate.getInstance()));
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
100 Value listValue = msgpack.unconvert(list);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
101 logValue = listValue;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
102 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
103
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
104 public DefaultTreeOperationLog convert() throws IOException {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
105 MessagePack msgpack = new MessagePack();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
106 msgpack.register(List.class, new ListTemplate(ValueTemplate.getInstance()));
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
107 List<Value> listValue = msgpack.convert(logValue, List.class);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
108 List<TreeOperation> logList = new LinkedList<TreeOperation>();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
109 for(Value v: listValue) {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
110 DefaultTreeOperationContainer container = msgpack.convert(v, DefaultTreeOperationContainer.class);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
111 logList.add(container.convert());
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
112 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
113 DefaultTreeOperationLog log = new DefaultTreeOperationLog(logList, logList.size());
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
114 return log;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
115 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
116
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
117
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
118
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
119 }