Mercurial > hg > Database > jungle-network
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 |
rev | line source |
---|---|
31 | 1 package alice.jungle.datasegment.store.operations; |
7 | 2 |
3 import java.io.IOException; | |
4 import java.nio.ByteBuffer; | |
5 import java.util.LinkedList; | |
6 import java.util.List; | |
7 | |
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command; | |
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; | |
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; | |
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog; | |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog; | |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DefaultTreeOperation; | |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; | |
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation; | |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; | |
17 | |
18 import org.msgpack.MessagePack; | |
19 import org.msgpack.annotation.Message; | |
20 import org.msgpack.template.ListTemplate; | |
21 import org.msgpack.template.ValueTemplate; | |
22 import org.msgpack.type.Value; | |
23 | |
24 @Message | |
25 public class DefaultTreeOperationLogContainer { | |
26 | |
27 Value logValue; | |
34 | 28 String treeName; |
29 String uuid; | |
7 | 30 |
31 public static void main(String[] args) throws IOException { | |
32 String key = "hoge"; | |
33 ByteBuffer b = ByteBuffer.wrap("messagepack value".getBytes()); | |
34 PutAttributeOperation putOp = new PutAttributeOperation(key, b); | |
35 DefaultNodePath nodePath = new DefaultNodePath(); | |
36 nodePath = nodePath.add(1).add(2).add(3); | |
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 | 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 | 46 logContainer.setUUID("uuid"); |
47 logContainer.setTreeName("treeName"); | |
9 | 48 |
49 MessagePack msgpack = new MessagePack(); | |
50 Value logContainerValue = msgpack.unconvert(logContainer); | |
51 DefaultTreeOperationLogContainer convertedLogContainer = msgpack.convert(logContainerValue, | |
52 DefaultTreeOperationLogContainer.class); | |
8
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
53 |
9 | 54 TreeOperationLog convertedLog = convertedLogContainer.convert(); |
34 | 55 System.out.println("uuid = "+ convertedLogContainer.getUUID()); |
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 | 83 System.out.println(String.format("[%s:%s:%s]", c, path, str)); |
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 | 89 } |
90 | |
91 public DefaultTreeOperationLogContainer() { | |
34 | 92 logValue = null; |
93 treeName = ""; | |
94 uuid = ""; | |
95 } | |
96 | |
97 public void setTreeName(String _treeName) { | |
98 treeName = _treeName; | |
99 } | |
100 | |
101 public void setUUID(String _uuid) { | |
102 uuid = _uuid; | |
103 } | |
104 | |
105 public String getUUID() { | |
106 return uuid; | |
107 } | |
108 | |
109 public String getTreeName() { | |
110 return treeName; | |
7 | 111 } |
112 | |
33 | 113 public void unconvert(Iterable<TreeOperation> _log) throws IOException { |
7 | 114 MessagePack msgpack = new MessagePack(); |
115 List<Value> list = new LinkedList<Value>(); | |
116 for(TreeOperation op : _log) { | |
117 NodeOperation nOp = op.getNodeOperation(); | |
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 | 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 | 122 Value v = msgpack.unconvert(container); |
123 list.add(v); | |
124 } | |
125 Value listValue = msgpack.unconvert(list); | |
126 logValue = listValue; | |
127 } | |
128 | |
129 public DefaultTreeOperationLog convert() throws IOException { | |
130 MessagePack msgpack = new MessagePack(); | |
131 msgpack.register(List.class, new ListTemplate(ValueTemplate.getInstance())); | |
132 List<Value> listValue = msgpack.convert(logValue, List.class); | |
133 List<TreeOperation> logList = new LinkedList<TreeOperation>(); | |
134 for(Value v: listValue) { | |
135 DefaultTreeOperationContainer container = msgpack.convert(v, DefaultTreeOperationContainer.class); | |
136 logList.add(container.convert()); | |
137 } | |
138 DefaultTreeOperationLog log = new DefaultTreeOperationLog(logList, logList.size()); | |
139 return log; | |
140 } | |
141 | |
142 | |
143 | |
144 } |