Mercurial > hg > Members > nobuyasu > jungle-network
view src/jungle/test/datasegment/store/operations/DefaultTreeOperationContainer.java @ 5:8f4fe96dc8e4
modified DefaultTreeOperationContainer
author | one |
---|---|
date | Mon, 10 Jun 2013 18:31:52 +0900 |
parents | 2900e0b1d7e6 |
children | 02bdf23edf5a |
line wrap: on
line source
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)); for (int i: nodePath ) { System.out.println(i); } } 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()); } }