view src/alice/jungle/operations/NetworkTreeOperationLog.java @ 31:190f6a3bdab2

rename some packages
author one
date Mon, 01 Jul 2013 20:34:03 +0900
parents src/jungle/test/operations/NetworkTreeOperationLog.java@20498c88a70d
children 5b9708d9febc
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 Iterable<TreeOperation> list;
	public 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 (Iterator<TreeOperation> iter = list.iterator(); iter.hasNext();) {
			TreeOperation o = iter.next();
			newList.add(o);
		}
		newList.add(op);
		return new NetworkTreeOperationLog(newList, size+1);
	}

	@Override
	public NetworkTreeOperationLog append(TreeOperationLog _log) 
	{
		LinkedList<TreeOperation> newList = new LinkedList<TreeOperation>();
		for (Iterator<TreeOperation> iter = list.iterator(); iter.hasNext();) {
			TreeOperation o = iter.next();
			newList.add(o);
		}
		for (TreeOperation o : _log) {
			newList.add(o);
		}
		return new NetworkTreeOperationLog(newList, size+_log.length());
	}

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

}