changeset 4:2900e0b1d7e6

add DefaultTreeOperation
author one
date Mon, 10 Jun 2013 01:43:02 +0900
parents 3770d2be3e73
children 8f4fe96dc8e4
files src/jungle/test/datasegment/store/operations/DefaultNodePathContainer.java src/jungle/test/datasegment/store/operations/DefaultTreeOperationContainer.java
diffstat 2 files changed, 85 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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
--- /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());
+	}
+
+}