view src/alice/jungle/operations/NetworkTreeOperationLog.java @ 80:3f8ec40d536a

Added NetworkTreeOperationlogTest
author one
date Wed, 16 Oct 2013 19:38:56 +0900
parents 5b9708d9febc
children b3ccefdf2b43
line wrap: on
line source

package alice.jungle.operations;

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

import org.msgpack.annotation.Message;

import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
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 NetworkTreeOperationLog implements TreeOperationLog
{
	public LinkedList<TreeOperation> list;
	public int size;
	
	public NetworkTreeOperationLog() {
		list = new LinkedList<TreeOperation>();
		size = 0;
	}
	
	public NetworkTreeOperationLog(Iterable<TreeOperation> _list, int _size)
	{
		list = new LinkedList<TreeOperation>();
		for(TreeOperation op: _list) {
			NetworkTreeOperation nOp = new NetworkTreeOperation(op);
			list.add(nOp);
		}
		size = _size;
	}
	
	@Override
	public Iterator<TreeOperation> iterator() {
		return list.iterator();
	}

	@Override
	public NetworkTreeOperationLog add(NodePath _p, NodeOperation _op) 
	{
		NetworkTreeOperation op = new NetworkTreeOperation(_p, _op);
		list.add(op);
		return new NetworkTreeOperationLog(list, size+1);
	}

	@Override
	public NetworkTreeOperationLog append(TreeOperationLog _log) 
	{
		for (TreeOperation o : _log) {
			NetworkTreeOperation op = new NetworkTreeOperation(o);
			list.add(op);
		}
		return new NetworkTreeOperationLog(list, size+_log.length());
	}

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

}