view src/jungle/test/datasegment/store/operations/DefaultTreeOperationLogContainer.java @ 7:b7396f848d78

add DefaultTreeOperationLogContainer.java
author one
date Tue, 11 Jun 2013 05:33:03 +0900
parents
children ee93e16d5a3f
line wrap: on
line source

package jungle.test.datasegment.store.operations;

import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.LinkedList;
import java.util.List;

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.impl.logger.DefaultTreeOperationLog;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
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.template.ListTemplate;
import org.msgpack.template.ValueTemplate;
import org.msgpack.type.Value;

@Message
public class DefaultTreeOperationLogContainer {

	Value logValue;
	
	public static void main(String[] args) throws IOException {
		String key = "hoge";
		ByteBuffer b = ByteBuffer.wrap("messagepack value".getBytes());
		PutAttributeOperation putOp = new PutAttributeOperation(key, b);
		DefaultNodePath nodePath = new DefaultNodePath();
		nodePath = nodePath.add(1).add(2).add(3);

		TreeOperation op = new DefaultTreeOperation(nodePath, putOp);
		
		
		
	}
	
	public DefaultTreeOperationLogContainer() {
		
	}
	
	public void unconvert(DefaultTreeOperationLog _log) throws IOException {
		MessagePack msgpack = new MessagePack();
		List<Value> list = new LinkedList<Value>();
		for(TreeOperation op : _log) {
			NodeOperation nOp = op.getNodeOperation();
			NodePath nodePath = op.getNodePath();
			DefaultNodeOperationContainer nodeOpContainer = new DefaultNodeOperationContainer();
			nodeOpContainer.unconvert(nOp);
			DefaultNodePathContainer nodePathContainer = new DefaultNodePathContainer();
			nodePathContainer.unconvert(nodePath);
			DefaultTreeOperationContainer container = new DefaultTreeOperationContainer();
			container.unconvert(nodeOpContainer, nodePathContainer);
			Value v = msgpack.unconvert(container);
			list.add(v);
		}
		/* */
		msgpack.register(List.class, new ListTemplate(ValueTemplate.getInstance()));
		Value listValue = msgpack.unconvert(list);
		logValue = listValue;
	}
	
	public DefaultTreeOperationLog convert() throws IOException {
		MessagePack msgpack = new MessagePack();
		msgpack.register(List.class, new ListTemplate(ValueTemplate.getInstance()));
		List<Value> listValue = msgpack.convert(logValue, List.class);
		List<TreeOperation> logList = new LinkedList<TreeOperation>();
		for(Value v: listValue) {
			DefaultTreeOperationContainer container = msgpack.convert(v, DefaultTreeOperationContainer.class);
			logList.add(container.convert());
		}
		DefaultTreeOperationLog log = new DefaultTreeOperationLog(logList, logList.size());
		return log;
	}
	
	
	
}