Mercurial > hg > Database > jungle-network
annotate src/jungle/test/datasegment/store/operations/DefaultTreeOperationLogContainer.java @ 9:49c0eaa4dce2
add StartCodeSegment.java
author | one |
---|---|
date | Tue, 11 Jun 2013 14:09:42 +0900 |
parents | ee93e16d5a3f |
children | e968224ad0ce |
rev | line source |
---|---|
7 | 1 package jungle.test.datasegment.store.operations; |
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; | |
28 | |
29 public static void main(String[] args) throws IOException { | |
30 String key = "hoge"; | |
31 ByteBuffer b = ByteBuffer.wrap("messagepack value".getBytes()); | |
32 PutAttributeOperation putOp = new PutAttributeOperation(key, b); | |
33 DefaultNodePath nodePath = new DefaultNodePath(); | |
34 nodePath = nodePath.add(1).add(2).add(3); | |
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 | 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); |
9 | 44 |
45 MessagePack msgpack = new MessagePack(); | |
46 Value logContainerValue = msgpack.unconvert(logContainer); | |
47 DefaultTreeOperationLogContainer convertedLogContainer = msgpack.convert(logContainerValue, | |
48 DefaultTreeOperationLogContainer.class); | |
8
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
49 |
9 | 50 TreeOperationLog convertedLog = convertedLogContainer.convert(); |
8
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
51 for (TreeOperation treeOp : convertedLog) { |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
52 NodePath path = treeOp.getNodePath(); |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
53 NodeOperation nodeOp = treeOp.getNodeOperation(); |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
54 Command c = nodeOp.getCommand(); |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
55 String str = ""; |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
56 switch (c) { |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
57 case PUT_ATTRIBUTE: |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
58 String k = nodeOp.getKey(); |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
59 ByteBuffer value = nodeOp.getValue(); |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
60 if (value.limit() < 100) { |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
61 str = String.format("key:%s,value:%s", k, |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
62 new String(value.array())); |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
63 } else { |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
64 str = String.format("key:%s,value:%d", k, value.limit()); |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
65 } |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
66 break; |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
67 case DELETE_ATTRIBUTE: |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
68 str = String.format("key:%s", nodeOp.getKey()); |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
69 break; |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
70 case APPEND_CHILD: |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
71 str = String.format("pos:%d", nodeOp.getPosition()); |
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_CHILD: |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
74 str = String.format("pos:%d", nodeOp.getPosition()); |
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 } |
9 | 77 System.out.println(String.format("[%s:%s:%s]", c, path, str)); |
78 for (int i: path ) { | |
8
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
79 System.out.println(i); |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
80 } |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
81 |
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
82 } |
7 | 83 |
84 | |
85 } | |
86 | |
87 public DefaultTreeOperationLogContainer() { | |
88 | |
89 } | |
90 | |
91 public void unconvert(DefaultTreeOperationLog _log) throws IOException { | |
92 MessagePack msgpack = new MessagePack(); | |
93 List<Value> list = new LinkedList<Value>(); | |
94 for(TreeOperation op : _log) { | |
95 NodeOperation nOp = op.getNodeOperation(); | |
96 NodePath nodePath = op.getNodePath(); | |
8
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
97 DefaultTreeOperation treeOp = new DefaultTreeOperation(nodePath, nOp); |
7 | 98 DefaultTreeOperationContainer container = new DefaultTreeOperationContainer(); |
8
ee93e16d5a3f
implement unconvert and convert method in DefaultTreeOperationLog class
one
parents:
7
diff
changeset
|
99 container.unconvert(treeOp); |
7 | 100 Value v = msgpack.unconvert(container); |
101 list.add(v); | |
102 } | |
103 /* */ | |
104 msgpack.register(List.class, new ListTemplate(ValueTemplate.getInstance())); | |
105 Value listValue = msgpack.unconvert(list); | |
106 logValue = listValue; | |
107 } | |
108 | |
109 public DefaultTreeOperationLog convert() throws IOException { | |
110 MessagePack msgpack = new MessagePack(); | |
111 msgpack.register(List.class, new ListTemplate(ValueTemplate.getInstance())); | |
112 List<Value> listValue = msgpack.convert(logValue, List.class); | |
113 List<TreeOperation> logList = new LinkedList<TreeOperation>(); | |
114 for(Value v: listValue) { | |
115 DefaultTreeOperationContainer container = msgpack.convert(v, DefaultTreeOperationContainer.class); | |
116 logList.add(container.convert()); | |
117 } | |
118 DefaultTreeOperationLog log = new DefaultTreeOperationLog(logList, logList.size()); | |
119 return log; | |
120 } | |
121 | |
122 | |
123 | |
124 } |