annotate src/alice/jungle/datasegment/store/operations/DefaultTreeOperationLogContainer.java @ 36:1255ae20d52e

remove msgpack.register in DefaultTreeOperation unconvert method
author one
date Thu, 04 Jul 2013 20:04:12 +0900
parents bf696a6334b2
children 12d87bb4b84d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31
190f6a3bdab2 rename some packages
one
parents: 28
diff changeset
1 package alice.jungle.datasegment.store.operations;
7
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;
34
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
28 String treeName;
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
29 String uuid;
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
30
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
31 public static void main(String[] args) throws IOException {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
32 String key = "hoge";
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
33 ByteBuffer b = ByteBuffer.wrap("messagepack value".getBytes());
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
34 PutAttributeOperation putOp = new PutAttributeOperation(key, b);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
35 DefaultNodePath nodePath = new DefaultNodePath();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
36 nodePath = nodePath.add(1).add(2).add(3);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
37 TreeOperation op = new DefaultTreeOperation(nodePath, putOp);
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
38 List<TreeOperation> list = new LinkedList<TreeOperation>();
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 list.add(op);
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
41 list.add(op);
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
42 DefaultTreeOperationLog log = new DefaultTreeOperationLog(list, list.size());
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
43
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
44 DefaultTreeOperationLogContainer logContainer = new DefaultTreeOperationLogContainer();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
45 logContainer.unconvert(log);
34
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
46 logContainer.setUUID("uuid");
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
47 logContainer.setTreeName("treeName");
9
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
48
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
49 MessagePack msgpack = new MessagePack();
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
50 Value logContainerValue = msgpack.unconvert(logContainer);
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
51 DefaultTreeOperationLogContainer convertedLogContainer = msgpack.convert(logContainerValue,
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
52 DefaultTreeOperationLogContainer.class);
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
53
9
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
54 TreeOperationLog convertedLog = convertedLogContainer.convert();
34
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
55 System.out.println("uuid = "+ convertedLogContainer.getUUID());
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
56 System.out.println("treeName = "+ convertedLogContainer.getTreeName());
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
57 for (TreeOperation treeOp : convertedLog) {
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
58 NodePath path = treeOp.getNodePath();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
59 NodeOperation nodeOp = treeOp.getNodeOperation();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
60 Command c = nodeOp.getCommand();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
61 String str = "";
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
62 switch (c) {
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
63 case PUT_ATTRIBUTE:
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
64 String k = nodeOp.getKey();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
65 ByteBuffer value = nodeOp.getValue();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
66 if (value.limit() < 100) {
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
67 str = String.format("key:%s,value:%s", k,
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
68 new String(value.array()));
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
69 } else {
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
70 str = String.format("key:%s,value:%d", k, value.limit());
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 break;
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
73 case DELETE_ATTRIBUTE:
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
74 str = String.format("key:%s", nodeOp.getKey());
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
75 break;
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
76 case APPEND_CHILD:
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
77 str = String.format("pos:%d", nodeOp.getPosition());
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
78 break;
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
79 case DELETE_CHILD:
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
80 str = String.format("pos:%d", nodeOp.getPosition());
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
81 break;
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
82 }
9
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
83 System.out.println(String.format("[%s:%s:%s]", c, path, str));
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
84 for (int i: path ) {
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
85 System.out.println(i);
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
86 }
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
87
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
88 }
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
89 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
90
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
91 public DefaultTreeOperationLogContainer() {
34
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
92 logValue = null;
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
93 treeName = "";
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
94 uuid = "";
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
95 }
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
96
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
97 public void setTreeName(String _treeName) {
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
98 treeName = _treeName;
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
99 }
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
100
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
101 public void setUUID(String _uuid) {
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
102 uuid = _uuid;
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
103 }
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
104
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
105 public String getUUID() {
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
106 return uuid;
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
107 }
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
108
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
109 public String getTreeName() {
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
110 return treeName;
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
111 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
112
33
afccf06c4063 modified DefaultTreeOperationlogContainer
one
parents: 31
diff changeset
113 public void unconvert(Iterable<TreeOperation> _log) throws IOException {
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
114 MessagePack msgpack = new MessagePack();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
115 List<Value> list = new LinkedList<Value>();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
116 for(TreeOperation op : _log) {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
117 NodeOperation nOp = op.getNodeOperation();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
118 NodePath nodePath = op.getNodePath();
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
119 DefaultTreeOperation treeOp = new DefaultTreeOperation(nodePath, nOp);
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
120 DefaultTreeOperationContainer container = new DefaultTreeOperationContainer();
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
121 container.unconvert(treeOp);
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
122 Value v = msgpack.unconvert(container);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
123 list.add(v);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
124 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
125 Value listValue = msgpack.unconvert(list);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
126 logValue = listValue;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
127 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
128
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
129 public DefaultTreeOperationLog convert() throws IOException {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
130 MessagePack msgpack = new MessagePack();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
131 msgpack.register(List.class, new ListTemplate(ValueTemplate.getInstance()));
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
132 List<Value> listValue = msgpack.convert(logValue, List.class);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
133 List<TreeOperation> logList = new LinkedList<TreeOperation>();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
134 for(Value v: listValue) {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
135 DefaultTreeOperationContainer container = msgpack.convert(v, DefaultTreeOperationContainer.class);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
136 logList.add(container.convert());
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
137 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
138 DefaultTreeOperationLog log = new DefaultTreeOperationLog(logList, logList.size());
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
139 return log;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
140 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
141
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
142
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
143
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
144 }