# HG changeset patch # User one # Date 1370796182 -32400 # Node ID 2900e0b1d7e6ba33009202be9bbd831bf5a8493e # Parent 3770d2be3e7326c87564f88ee42a5c77ca5683d3 add DefaultTreeOperation diff -r 3770d2be3e73 -r 2900e0b1d7e6 src/jungle/test/datasegment/store/operations/DefaultNodePathContainer.java --- a/src/jungle/test/datasegment/store/operations/DefaultNodePathContainer.java Mon Jun 10 01:18:45 2013 +0900 +++ b/src/jungle/test/datasegment/store/operations/DefaultNodePathContainer.java Mon Jun 10 01:43:02 2013 +0900 @@ -11,7 +11,6 @@ import org.msgpack.annotation.Message; import org.msgpack.template.IntegerTemplate; import org.msgpack.template.ListTemplate; -import org.msgpack.template.ValueTemplate; import org.msgpack.type.Value; @Message diff -r 3770d2be3e73 -r 2900e0b1d7e6 src/jungle/test/datasegment/store/operations/DefaultTreeOperationContainer.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jungle/test/datasegment/store/operations/DefaultTreeOperationContainer.java Mon Jun 10 01:43:02 2013 +0900 @@ -0,0 +1,85 @@ +package jungle.test.datasegment.store.operations; + +import java.io.IOException; +import java.nio.ByteBuffer; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DefaultTreeOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; + +import org.msgpack.MessagePack; +import org.msgpack.annotation.Message; +import org.msgpack.type.Value; + +@Message +public class DefaultTreeOperationContainer { + + Value pathValue; + Value opValue; + + public static void main(String[] args) throws IOException { + String key = "hoge"; + ByteBuffer b = ByteBuffer.wrap("messagepack value".getBytes()); + PutAttributeOperation op = new PutAttributeOperation(key, b); + DefaultNodeOperationContainer opContainer = new DefaultNodeOperationContainer(); + opContainer.unconvert(op); + + DefaultNodePath p = new DefaultNodePath(); + p = p.add(1).add(2).add(3); + DefaultNodePathContainer pathContainer = new DefaultNodePathContainer(); + pathContainer.unconvert(p); + + DefaultTreeOperationContainer treeOperationContainer = new DefaultTreeOperationContainer(); + treeOperationContainer.unconvert(opContainer, pathContainer); + TreeOperation treeOperation = treeOperationContainer.convert(); + NodePath nodePath = treeOperation.getNodePath(); + NodeOperation nodeOp = treeOperation.getNodeOperation(); + Command c = nodeOp.getCommand(); + String str = ""; + switch (c) { + case PUT_ATTRIBUTE: + String k = nodeOp.getKey(); + ByteBuffer value = nodeOp.getValue(); + if (value.limit() < 100) { + str = String.format("key:%s,value:%s", k, + new String(value.array())); + } else { + str = String.format("key:%s,value:%d", k, value.limit()); + } + break; + case DELETE_ATTRIBUTE: + str = String.format("key:%s", nodeOp.getKey()); + break; + case APPEND_CHILD: + str = String.format("pos:%d", nodeOp.getPosition()); + break; + case DELETE_CHILD: + str = String.format("pos:%d", nodeOp.getPosition()); + break; + } + System.out.println(String.format("[%s:%s:%s]", c, nodePath, str)); + } + + public DefaultTreeOperationContainer() { + + } + + public void unconvert(DefaultNodeOperationContainer _op, + DefaultNodePathContainer _path) throws IOException { + MessagePack msgpack = new MessagePack(); + pathValue = msgpack.unconvert(_path); + opValue = msgpack.unconvert(_op); + } + + public TreeOperation convert() throws IOException { + MessagePack msgpack = new MessagePack(); + DefaultNodePathContainer pathContainer = msgpack.convert(pathValue, DefaultNodePathContainer.class); + DefaultNodeOperationContainer opContainer = msgpack.convert(opValue, DefaultNodeOperationContainer.class); + return new DefaultTreeOperation(pathContainer.convert(), opContainer.convert()); + } + +}