diff src/alice/jungle/operations/NetworkNodeOperation.java @ 79:5b9708d9febc

Modified NetworkTreeOperationLog NetworkNodeOperation
author one
date Wed, 16 Oct 2013 19:25:02 +0900
parents 0055d917c796
children b3ccefdf2b43
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;
+	}
+
 }