view src/main/java/alice/jungle/datasegment/container/DefaultTreeOperationLogContainer.java @ 105:f9e29a52efd3

Move some files
author one
date Tue, 26 Nov 2013 06:43:10 +0900
parents src/alice/jungle/datasegment/store/container/DefaultTreeOperationLogContainer.java@2c7b3f2b2ee1
children
line wrap: on
line source

package alice.jungle.datasegment.container;

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

import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog;
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.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;

import alice.codesegment.SingletonMessage;

@Message
public class DefaultTreeOperationLogContainer {

	Value logValue;
	String treeName;
	String uuid;
	String updaterName;
	String revision;
	long timestamp;

	public DefaultTreeOperationLogContainer() {
		logValue = null;
		treeName = "";
		uuid = "";
		updaterName = "";
		revision = "";
		timestamp = Long.MAX_VALUE;
	}
	
	public void setTreeName(String _treeName) {
		treeName = _treeName;
	}
	
	public String getTreeName() {
		return treeName;
	}
	
	public void setUUID(String _uuid) {
		uuid = _uuid;
	}
	
	public String getUUID() {
		return uuid;
	}

	public void setUpdaterName(String _updaterName) {
		updaterName = _updaterName;
	}
	
	public String getServerName() {
		return updaterName;
	}
	
	public void setRevision(String _revision) {
		revision = _revision;
	}
	
	public String getRevision() {
		return revision;
	}

	public void setTimeStamp(long t) {
		timestamp = t;
	}
	
	public long getTimeStamp() {
		return timestamp;
	}
	
	public void unconvert(Iterable<TreeOperation> _log) throws IOException {
		MessagePack msgpack = SingletonMessage.getInstance();
		List<Value> list = new LinkedList<Value>();
		for(TreeOperation op : _log) {
			NodeOperation nOp = op.getNodeOperation();
			NodePath nodePath = op.getNodePath();
			DefaultTreeOperation treeOp = new DefaultTreeOperation(nodePath, nOp);
			DefaultTreeOperationContainer container = new DefaultTreeOperationContainer();
			container.unconvert(treeOp);
			Value v = msgpack.unconvert(container);
			list.add(v);
		}
		Value listValue = msgpack.unconvert(list);
		logValue = listValue;
	}
	
	public DefaultTreeOperationLog convert() throws IOException {
		MessagePack msgpack = SingletonMessage.getInstance();
		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;
	}
	
	public String getHashLogString() {
		return treeName + revision + updaterName;
	}

	
}