Mercurial > hg > Database > jungle-network
view src/alice/jungle/datasegment/store/operations/DefaultTreeOperationContainer.java @ 31:190f6a3bdab2
rename some packages
author | one |
---|---|
date | Mon, 01 Jul 2013 20:34:03 +0900 |
parents | src/jungle/test/datasegment/store/operations/DefaultTreeOperationContainer.java@02bdf23edf5a |
children | 85bc7416ae02 |
line wrap: on
line source
package alice.jungle.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); DefaultNodePath p = new DefaultNodePath(); p = p.add(1).add(2).add(3); DefaultTreeOperation treeOp = new DefaultTreeOperation(p, op); DefaultTreeOperationContainer treeOperationContainer = new DefaultTreeOperationContainer(); treeOperationContainer.unconvert(treeOp); 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(DefaultTreeOperation _op) throws IOException { NodeOperation nodeOp = _op.getNodeOperation(); NodePath nodePath = _op.getNodePath(); DefaultNodeOperationContainer opContainer = new DefaultNodeOperationContainer(); opContainer.unconvert(nodeOp); DefaultNodePathContainer pathContainer = new DefaultNodePathContainer(); pathContainer.unconvert(nodePath); unconvert(opContainer, pathContainer); } 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()); } }