Mercurial > hg > Database > jungle-network
diff src/alice/jungle/datasegment/store/container/DefaultNodeOperationContainer.java @ 75:87ec5dd0dc27
Rename from alice.jungle.datasegment.store.operation to alice.jungle.datasegment.store.container
author | one |
---|---|
date | Tue, 15 Oct 2013 14:43:29 +0900 |
parents | src/alice/jungle/datasegment/store/operations/DefaultNodeOperationContainer.java@85bc7416ae02 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/jungle/datasegment/store/container/DefaultNodeOperationContainer.java Tue Oct 15 14:43:29 2013 +0900 @@ -0,0 +1,85 @@ +package alice.jungle.datasegment.store.container; + +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.operations.AppendChildAtOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteAttributeOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation; +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 org.msgpack.MessagePack; +import org.msgpack.annotation.Message; +import org.msgpack.template.OrdinalEnumTemplate; +import org.msgpack.type.Value; + +import alice.codesegment.SingletonMessage; + +@Message +public class DefaultNodeOperationContainer { + + public int pos; + public String key; + public Value value; + public Value commandValue; + + 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 container = new DefaultNodeOperationContainer(); + container.unconvert(op); + NodeOperation convertedOp = container.convert(); + System.out.println("pos : "+convertedOp.getPosition()); + System.out.println("Command : "+convertedOp.getCommand()); + System.out.println("key : "+convertedOp.getKey()); + System.out.println("value : "+new String(convertedOp.getValue().array())); + + } + + public DefaultNodeOperationContainer() { + + } + + public void unconvert(NodeOperation op) throws IOException { +// MessagePack msgpack = new MessagePack(); + MessagePack msgpack = SingletonMessage.getInstance(); + pos = op.getPosition(); + key = op.getKey(); + value = null; + if (op.getValue() != null) { + ByteBuffer b = op.getValue(); + byte[] bytes = b.array(); + Value v = msgpack.unconvert(bytes); + value = v; + } + Command c = op.getCommand(); + msgpack.register(Command.class, new OrdinalEnumTemplate(Command.class)); + Value cValue = msgpack.unconvert(c); + commandValue = cValue; + } + + public NodeOperation convert() throws IOException{ +// MessagePack msgpack = new MessagePack(); + MessagePack msgpack = SingletonMessage.getInstance(); + msgpack.register(Command.class, new OrdinalEnumTemplate(Command.class)); + Command c = msgpack.convert(commandValue, Command.class); + ByteBuffer b = null; + if (value != null) { + b = ByteBuffer.wrap(msgpack.convert(value, byte[].class)); + } + if (c == Command.PUT_ATTRIBUTE) { + return new PutAttributeOperation(key, b); + } else if (c == Command.APPEND_CHILD) { + return new AppendChildAtOperation(pos); + } else if (c == Command.DELETE_CHILD) { + return new DeleteChildAtOperation(pos); + } else if (c == Command.DELETE_ATTRIBUTE){ + return new DeleteAttributeOperation(key); + } + return null; + } + +}