view src/alice/jungle/persistence/impl/logger/TmpNetworkTreeOperationLog.java @ 77:2dba7e1cf9fa

Added NetworknodeOperation and Test
author one
date Tue, 15 Oct 2013 16:01:11 +0900
parents
children
line wrap: on
line source

package alice.jungle.persistence.impl.logger;

import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;

import org.msgpack.annotation.Message;

import alice.jungle.operations.NetworkTreeOperation;

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.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.TreeOperation;



@Message
public class TmpNetworkTreeOperationLog implements TreeOperationLog
{
/*  MessagePack cannnot handle final.
 * 	
 *	private final Iterable<TreeOperation> list;
 *	private final int size;
 */
	private LinkedList<TreeOperation> list;
	private int size;

	public TmpNetworkTreeOperationLog()
	{
		list = null;
		size = 0;
	}
/*	
	public NetworkTreeOperationLog(Iterable<TreeOperation> _list,int _size)
	{
		list = _list;
		size = _size;
	}
*/	
	public TmpNetworkTreeOperationLog(LinkedList<TreeOperation> _list)
	{
		list = _list;
		size = list.size();
	}

	@Override
	public Iterator<TreeOperation> iterator()
	{
		return list.iterator();
	}

	@Override
	public TreeOperationLog add(NodePath _p, NodeOperation _op)
	{
		TreeOperation op = new NetworkTreeOperation(_p,_op);
		list.add(op);
		return new TmpNetworkTreeOperationLog(list);
	}
	
	@Override
	public TreeOperationLog append(TreeOperationLog _log)
	{
		for(TreeOperation treeOp: _log) {
			list.add(treeOp);
		}
		return new TmpNetworkTreeOperationLog(list);
	}

	@Override
	public int length()
	{
		return size;
	}
}