Mercurial > hg > Members > nobuyasu > jungle-network
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 |
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); |
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 | 78 |
79 | |
80 } | |
81 | |
82 public DefaultTreeOperationLogContainer() { | |
83 | |
84 } | |
85 | |
86 public void unconvert(DefaultTreeOperationLog _log) throws IOException { | |
87 MessagePack msgpack = new MessagePack(); | |
88 List<Value> list = new LinkedList<Value>(); | |
89 for(TreeOperation op : _log) { | |
90 NodeOperation nOp = op.getNodeOperation(); | |
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 | 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 | 95 Value v = msgpack.unconvert(container); |
96 list.add(v); | |
97 } | |
98 /* */ | |
99 msgpack.register(List.class, new ListTemplate(ValueTemplate.getInstance())); | |
100 Value listValue = msgpack.unconvert(list); | |
101 logValue = listValue; | |
102 } | |
103 | |
104 public DefaultTreeOperationLog convert() throws IOException { | |
105 MessagePack msgpack = new MessagePack(); | |
106 msgpack.register(List.class, new ListTemplate(ValueTemplate.getInstance())); | |
107 List<Value> listValue = msgpack.convert(logValue, List.class); | |
108 List<TreeOperation> logList = new LinkedList<TreeOperation>(); | |
109 for(Value v: listValue) { | |
110 DefaultTreeOperationContainer container = msgpack.convert(v, DefaultTreeOperationContainer.class); | |
111 logList.add(container.convert()); | |
112 } | |
113 DefaultTreeOperationLog log = new DefaultTreeOperationLog(logList, logList.size()); | |
114 return log; | |
115 } | |
116 | |
117 | |
118 | |
119 } |