changeset 79:5b9708d9febc

Modified NetworkTreeOperationLog NetworkNodeOperation
author one
date Wed, 16 Oct 2013 19:25:02 +0900
parents 0055d917c796
children 3f8ec40d536a
files src/alice/jungle/operations/NetworkNodeOperation.java src/alice/jungle/operations/NetworkNodePath.java src/alice/jungle/operations/NetworkTreeOperation.java src/alice/jungle/operations/NetworkTreeOperationLog.java src/alice/jungle/persistence/impl/logger/TmpNetworkTreeOperationLog.java src/test/alice/jungle/core/operations/NetworkTreeOperationTest.java
diffstat 6 files changed, 55 insertions(+), 116 deletions(-) [+]
line wrap: on
line diff
--- a/src/alice/jungle/operations/NetworkNodeOperation.java	Wed Oct 16 17:24:15 2013 +0900
+++ b/src/alice/jungle/operations/NetworkNodeOperation.java	Wed Oct 16 19:25:02 2013 +0900
@@ -4,11 +4,19 @@
 
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.DeleteAttribute;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.DeleteChildAt;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.PutAttribute;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 
 import org.msgpack.annotation.Message;
 
+import alice.jungle.datasegment.store.transformer.NetworkAppendChildAt;
+
 @Message
-public class NetworkNodeOperation {
+public class NetworkNodeOperation implements NodeOperation{
 
 	public int pos;
 	public String key;
@@ -77,4 +85,25 @@
 		return value;
 	}
 
+	@Override
+	public <T extends EditableNode<T>> Either<Error, T> invoke(T _target) {
+		switch(getCommand(commandType)) {
+		case PUT_ATTRIBUTE:
+			PutAttribute putAttribute = new PutAttribute(key,value);
+			return putAttribute.edit(_target);
+		case APPEND_CHILD:
+			NetworkAppendChildAt appendChildAt = new NetworkAppendChildAt(pos);
+			return appendChildAt.edit(_target);
+		case DELETE_CHILD:
+			DeleteChildAt deleteChildAt = new DeleteChildAt(pos);
+			return deleteChildAt.edit(_target);
+		case DELETE_ATTRIBUTE:
+			DeleteAttribute deleteAttribute = new DeleteAttribute(key);
+			return deleteAttribute.edit(_target);
+		default:
+			break;
+		}
+		return null;
+	}
+
 }
--- a/src/alice/jungle/operations/NetworkNodePath.java	Wed Oct 16 17:24:15 2013 +0900
+++ b/src/alice/jungle/operations/NetworkNodePath.java	Wed Oct 16 19:25:02 2013 +0900
@@ -1,12 +1,9 @@
 package alice.jungle.operations;
 
-import java.io.IOException;
 import java.util.Iterator;
 import java.util.LinkedList;
 
-import org.msgpack.MessagePack;
 import org.msgpack.annotation.Message;
-import org.msgpack.type.Value;
 
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
@@ -16,17 +13,6 @@
 {
 	LinkedList<Integer> path;
 	
-	public static void main(String[] args) throws IOException {
-		NetworkNodePath path = new NetworkNodePath();
-		path = path.add(1).add(2).add(3);
-		MessagePack msgpack = new MessagePack();
-		Value value = msgpack.unconvert(path);
-		NetworkNodePath mPath = msgpack.convert(value, NetworkNodePath.class);
-		for (Integer i : mPath) {
-			System.out.println(i);
-		}
-	}
-	
 	public NetworkNodePath() {
 		path = new LinkedList<Integer>();
 	}
--- a/src/alice/jungle/operations/NetworkTreeOperation.java	Wed Oct 16 17:24:15 2013 +0900
+++ b/src/alice/jungle/operations/NetworkTreeOperation.java	Wed Oct 16 19:25:02 2013 +0900
@@ -22,6 +22,11 @@
 		operation = null;
 	}
 	
+	public NetworkTreeOperation(TreeOperation treeOp) {
+		path = new NetworkNodePath(treeOp.getNodePath());
+		operation = new NetworkNodeOperation(treeOp.getNodeOperation());
+	}
+	
 	public NetworkTreeOperation(NodePath _p, NodeOperation _op) {
 		path = new NetworkNodePath(_p);
 		operation = new NetworkNodeOperation(_op);
@@ -45,14 +50,17 @@
 	@Override
 	public NodeOperation getNodeOperation() {
 		Command c = operation.getCommand();
-		if (c == Command.PUT_ATTRIBUTE) {
+		switch(c) {
+		case PUT_ATTRIBUTE:
 			return new PutAttributeOperation(operation.getKey(), operation.getValue());
-		} else if (c == Command.APPEND_CHILD) {
+		case APPEND_CHILD:
 			return new AppendChildAtOperation(operation.getPosition());
-		} else if (c == Command.DELETE_CHILD) {
+		case DELETE_CHILD:
 			return new DeleteChildAtOperation(operation.getPosition());
-		} else if (c == Command.DELETE_ATTRIBUTE){
+		case DELETE_ATTRIBUTE:
 			return new DeleteAttributeOperation(operation.getKey());
+		default:
+			break;
 		}
 		return null;
 	}
--- a/src/alice/jungle/operations/NetworkTreeOperationLog.java	Wed Oct 16 17:24:15 2013 +0900
+++ b/src/alice/jungle/operations/NetworkTreeOperationLog.java	Wed Oct 16 19:25:02 2013 +0900
@@ -13,7 +13,7 @@
 @Message
 public class NetworkTreeOperationLog implements TreeOperationLog
 {
-	public Iterable<TreeOperation> list;
+	public LinkedList<TreeOperation> list;
 	public int size;
 	
 	public NetworkTreeOperationLog() {
@@ -23,7 +23,11 @@
 	
 	public NetworkTreeOperationLog(Iterable<TreeOperation> _list, int _size)
 	{
-		list = _list;
+		list = new LinkedList<TreeOperation>();
+		for(TreeOperation op: _list) {
+			NetworkTreeOperation nOp = new NetworkTreeOperation(op);
+			list.add(nOp);
+		}
 		size = _size;
 	}
 	
@@ -39,28 +43,19 @@
 	@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);
+		NetworkTreeOperation op = new NetworkTreeOperation(_p, _op);
+		list.add(op);
+		return new NetworkTreeOperationLog(list, 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) {
+			NetworkTreeOperation op = new NetworkTreeOperation(o);
+			list.add(op);
 		}
-		for (TreeOperation o : _log) {
-			newList.add(o);
-		}
-		return new NetworkTreeOperationLog(newList, size+_log.length());
+		return new NetworkTreeOperationLog(list, size+_log.length());
 	}
 
 	@Override
--- a/src/alice/jungle/persistence/impl/logger/TmpNetworkTreeOperationLog.java	Wed Oct 16 17:24:15 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-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;
-	}
-}
--- a/src/test/alice/jungle/core/operations/NetworkTreeOperationTest.java	Wed Oct 16 17:24:15 2013 +0900
+++ b/src/test/alice/jungle/core/operations/NetworkTreeOperationTest.java	Wed Oct 16 19:25:02 2013 +0900
@@ -22,8 +22,6 @@
 		NetworkTreeOperation mOp = msgpack.convert(v, NetworkTreeOperation.class);
 		assertNotNull(mOp.getNodePath());
 		assertEquals(op.getCommand(), mOp.getNodeOperation().getCommand());
-		
-		
 	}
 	
 }