annotate src/alice/jungle/datasegment/store/operations/DefaultTreeOperationLogContainer.java @ 43:12d87bb4b84d

modified LogUpdateCodeSegment
author one
date Fri, 12 Jul 2013 09:13:54 +0900
parents 1255ae20d52e
children a89c3539bff2
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;
43
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
30 String serverName;
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
31 long revision;
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
32
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
33 public static void main(String[] args) throws IOException {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
34 String key = "hoge";
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
35 ByteBuffer b = ByteBuffer.wrap("messagepack value".getBytes());
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
36 PutAttributeOperation putOp = new PutAttributeOperation(key, b);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
37 DefaultNodePath nodePath = new DefaultNodePath();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
38 nodePath = nodePath.add(1).add(2).add(3);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
39 TreeOperation op = new DefaultTreeOperation(nodePath, putOp);
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
40 List<TreeOperation> list = new LinkedList<TreeOperation>();
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 list.add(op);
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
43 list.add(op);
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
44 DefaultTreeOperationLog log = new DefaultTreeOperationLog(list, list.size());
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
45
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
46 DefaultTreeOperationLogContainer logContainer = new DefaultTreeOperationLogContainer();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
47 logContainer.unconvert(log);
34
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
48 logContainer.setUUID("uuid");
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
49 logContainer.setTreeName("treeName");
9
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
50
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
51 MessagePack msgpack = new MessagePack();
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
52 Value logContainerValue = msgpack.unconvert(logContainer);
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
53 DefaultTreeOperationLogContainer convertedLogContainer = msgpack.convert(logContainerValue,
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
54 DefaultTreeOperationLogContainer.class);
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
55
9
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
56 TreeOperationLog convertedLog = convertedLogContainer.convert();
34
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
57 System.out.println("uuid = "+ convertedLogContainer.getUUID());
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
58 System.out.println("treeName = "+ convertedLogContainer.getTreeName());
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
59 for (TreeOperation treeOp : convertedLog) {
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
60 NodePath path = treeOp.getNodePath();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
61 NodeOperation nodeOp = treeOp.getNodeOperation();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
62 Command c = nodeOp.getCommand();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
63 String str = "";
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
64 switch (c) {
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
65 case PUT_ATTRIBUTE:
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
66 String k = nodeOp.getKey();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
67 ByteBuffer value = nodeOp.getValue();
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
68 if (value.limit() < 100) {
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
69 str = String.format("key:%s,value:%s", k,
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
70 new String(value.array()));
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
71 } else {
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
72 str = String.format("key:%s,value:%d", k, value.limit());
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
73 }
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
74 break;
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
75 case DELETE_ATTRIBUTE:
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
76 str = String.format("key:%s", nodeOp.getKey());
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
77 break;
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
78 case APPEND_CHILD:
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
79 str = String.format("pos:%d", nodeOp.getPosition());
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
80 break;
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
81 case DELETE_CHILD:
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
82 str = String.format("pos:%d", nodeOp.getPosition());
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
83 break;
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
84 }
9
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
85 System.out.println(String.format("[%s:%s:%s]", c, path, str));
49c0eaa4dce2 add StartCodeSegment.java
one
parents: 8
diff changeset
86 for (int i: path ) {
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
87 System.out.println(i);
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
88 }
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
89
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
90 }
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
91 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
92
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
93 public DefaultTreeOperationLogContainer() {
34
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
94 logValue = null;
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
95 treeName = "";
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
96 uuid = "";
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
97 }
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
98
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
99 public void setTreeName(String _treeName) {
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
100 treeName = _treeName;
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
101 }
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
102
43
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
103 public String getTreeName() {
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
104 return treeName;
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
105 }
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
106
34
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
107 public void setUUID(String _uuid) {
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
108 uuid = _uuid;
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
109 }
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
110
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
111 public String getUUID() {
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
112 return uuid;
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
113 }
43
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
114
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
115 public void setServerName(String _serverName) {
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
116 serverName = _serverName;
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
117 }
34
bf696a6334b2 add LogUpdateCodeSegment
one
parents: 33
diff changeset
118
43
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
119 public String getServerName() {
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
120 return serverName;
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
121 }
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
122
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
123 public void setRevision(long _revision) {
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
124 revision = _revision;
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
125 }
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
126
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
127 public long getRevision() {
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 36
diff changeset
128 return revision;
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
129 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
130
33
afccf06c4063 modified DefaultTreeOperationlogContainer
one
parents: 31
diff changeset
131 public void unconvert(Iterable<TreeOperation> _log) throws IOException {
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
132 MessagePack msgpack = new MessagePack();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
133 List<Value> list = new LinkedList<Value>();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
134 for(TreeOperation op : _log) {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
135 NodeOperation nOp = op.getNodeOperation();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
136 NodePath nodePath = op.getNodePath();
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
137 DefaultTreeOperation treeOp = new DefaultTreeOperation(nodePath, nOp);
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
138 DefaultTreeOperationContainer container = new DefaultTreeOperationContainer();
8
ee93e16d5a3f implement unconvert and convert method in DefaultTreeOperationLog class
one
parents: 7
diff changeset
139 container.unconvert(treeOp);
7
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
140 Value v = msgpack.unconvert(container);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
141 list.add(v);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
142 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
143 Value listValue = msgpack.unconvert(list);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
144 logValue = listValue;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
145 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
146
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
147 public DefaultTreeOperationLog convert() throws IOException {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
148 MessagePack msgpack = new MessagePack();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
149 msgpack.register(List.class, new ListTemplate(ValueTemplate.getInstance()));
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
150 List<Value> listValue = msgpack.convert(logValue, List.class);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
151 List<TreeOperation> logList = new LinkedList<TreeOperation>();
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
152 for(Value v: listValue) {
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
153 DefaultTreeOperationContainer container = msgpack.convert(v, DefaultTreeOperationContainer.class);
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
154 logList.add(container.convert());
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
155 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
156 DefaultTreeOperationLog log = new DefaultTreeOperationLog(logList, logList.size());
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
157 return log;
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
158 }
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
159
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
160
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
161
b7396f848d78 add DefaultTreeOperationLogContainer.java
one
parents:
diff changeset
162 }