view src/jungle/test/operations/NetworkTreeOperationLog.java @ 1:8ee02d1a2b12

add jungle.test.operations
author one
date Fri, 07 Jun 2013 19:26:08 +0900
parents
children 20498c88a70d
line wrap: on
line source

package jungle.test.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
{
	private Iterable<TreeOperation> list;
	private int size;
	
	public NetworkTreeOperationLog() {
		list = new LinkedList<TreeOperation>();
		size = 0;
	}
	
	public NetworkTreeOperationLog(Iterable<TreeOperation> _list, int _size)
	{
		list = _list;
		size = _size;
	}
	
	public Iterable<TreeOperation> getOperationLogList() {
		return list;
	}
	
	@Override
	public Iterator<TreeOperation> iterator() {
		return list.iterator();
	}

	@Override
	public NetworkTreeOperationLog add(NodePath _p, NodeOperation _op) 
	{
		TreeOperation op = new NetworkTreeOperation(_p, _op);
		LinkedList<TreeOperation> newList = new LinkedList<TreeOperation>();
		for(TreeOperation o : this) {
			newList.add(o);
		}
		newList.add(op);
		return new NetworkTreeOperationLog(newList, size+1); 
	}

	@Override
	public NetworkTreeOperationLog append(TreeOperationLog _log) 
	{
		LinkedList<TreeOperation> l = new LinkedList<TreeOperation>();
		for (TreeOperation t : _log) {
			l.add(t);
		}
		return new NetworkTreeOperationLog(l, size+_log.length());
	}

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

}