diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jungle/test/operations/NetworkTreeOperationLog.java	Fri Jun 07 19:26:08 2013 +0900
@@ -0,0 +1,67 @@
+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;
+	}
+
+}