changeset 50:0a3bff2d9c89

modified operation things
author Shoshi TAMAKI
date Fri, 08 Feb 2013 01:51:04 +0900
parents e3a507fd57a4
children bc119c52d5cc
files src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/Command.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/DefaultLogger.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/DefaultOperationLog.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingChildren.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNode.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/AppendChildAtOperation.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DefaultTreeOperation.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteAttributeOperation.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteChildAtOperation.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/NodeOperation.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/Operation.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/PutAttributeOperation.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/SetAttributeOperation.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/TreeOperation.java
diffstat 14 files changed, 183 insertions(+), 84 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/Command.java	Fri Feb 08 01:22:26 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/Command.java	Fri Feb 08 01:51:04 2013 +0900
@@ -4,6 +4,6 @@
 {
 	APPEND_CHILD,
 	DELETE_CHILD,
-	SET_ATTRIBUTE,
+	PUT_ATTRIBUTE,
 	DELETE_ATTRIBUTE;
 }
\ No newline at end of file
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/DefaultLogger.java	Fri Feb 08 01:22:26 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger;
-
-import java.util.Iterator;
-import fj.data.List;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.Operation;
-
-public class DefaultLogger implements Logger
-{
-	private final List<Operation> log;
-	
-	private static final List<Operation> EMPTY = List.nil();
-	
-	public DefaultLogger()
-	{
-		this(EMPTY);
-	}
-	
-	private DefaultLogger(List<Operation> _log)
-	{
-		log = _log;
-	}
-
-	@Override
-	public Iterator<Operation> iterator()
-	{
-		return log.iterator();
-	}
-
-	@Override
-	public Logger add(Operation _op)
-	{
-		return new DefaultLogger(log.snoc(_op));
-	}
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/DefaultOperationLog.java	Fri Feb 08 01:51:04 2013 +0900
@@ -0,0 +1,34 @@
+package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger;
+
+import java.util.Iterator;
+import fj.data.List;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.Operation;
+
+public class DefaultOperationLog implements OperationLog
+{
+	private final List<Operation> log;
+	
+	private static final List<Operation> EMPTY = List.nil();
+	
+	public DefaultOperationLog()
+	{
+		this(EMPTY);
+	}
+	
+	private DefaultOperationLog(List<Operation> _log)
+	{
+		log = _log;
+	}
+
+	@Override
+	public Iterator<Operation> iterator()
+	{
+		return log.iterator();
+	}
+
+	@Override
+	public DefaultOperationLog add(Operation _op)
+	{
+		return new DefaultOperationLog(log.snoc(_op));
+	}
+}
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingChildren.java	Fri Feb 08 01:22:26 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingChildren.java	Fri Feb 08 01:51:04 2013 +0900
@@ -14,9 +14,9 @@
 public class LoggingChildren<T extends ClonableNode<T>> implements ClonableChildren<LoggingNode<T>>
 {
 	private final ClonableChildren<T> wrap;
-	private final Logger log;
+	private final DefaultOperationLog log;
 	
-	public LoggingChildren(ClonableChildren<T> _wrap,Logger _log)
+	public LoggingChildren(ClonableChildren<T> _wrap,DefaultOperationLog _log)
 	{
 		wrap = _wrap;
 		log = _log;
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNode.java	Fri Feb 08 01:22:26 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNode.java	Fri Feb 08 01:51:04 2013 +0900
@@ -7,43 +7,35 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableChildren;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
 
-public class LoggingNode<T extends ClonableNode<T>>
-	implements ClonableNode<LoggingNode<T>>
+public class LoggingNode<T extends EditableNode<T>> implements EditableNode<LoggingNode<T>>
 {
 	public LoggingNode(T _wrap)
 	{
-		this(_wrap,new DefaultLogger());
+		this(_wrap,new DefaultOperationLog());
 	}
 	
-	public LoggingNode(T _wrap,Logger _log)
+	public LoggingNode(T _wrap,DefaultOperationLog _log)
 	{
 		wrap = _wrap;
 		log = _log;
 	}
 	
 	private final T wrap;
-	private final Logger log;
+	private final DefaultOperationLog log;
 	
 	@Override
-	public ClonableAttributes<LoggingNode<T>> getAttributes()
+	public EditableAttributes<LoggingNode<T>> getAttributes()
 	{
 		return new LoggingAttributes<T>(wrap.getAttributes(),log);
 	}
 
 	@Override
-	public ClonableChildren<LoggingNode<T>> getChildren()
+	public EditableChildren<LoggingNode<T>> getChildren()
 	{
 		return new LoggingChildren<T>(wrap.getChildren(),log);
 	}
 	
-	@Override
-	public LoggingNode<T> createNewNode()
-	{
-		T newWrap = wrap.createNewNode();
-		return new LoggingNode<T>(newWrap,log);
-	}
-	
-	public Logger getLogger()
+	public DefaultOperationLog getLogger()
 	{
 		return log;
 	}
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/AppendChildAtOperation.java	Fri Feb 08 01:22:26 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/AppendChildAtOperation.java	Fri Feb 08 01:51:04 2013 +0900
@@ -1,13 +1,29 @@
 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations;
 
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.AppendChildAt;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 
-public abstract class AppendChildAtOperation implements Operation
+public final class AppendChildAtOperation implements NodeOperation
 {
+	private final int pos;
+	
+	public AppendChildAtOperation(int _pos)
+	{
+		pos = _pos;
+	}
+	
 	public Command getCommand()
 	{
 		return Command.APPEND_CHILD;
 	}
 	
-	public abstract int position();
+	@Override
+	public <T extends EditableNode<T>> Either<Error,T> invoke(T _target)
+	{
+		AppendChildAt appendChildAt = new AppendChildAt(pos);
+		return appendChildAt.edit(_target);
+	}
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DefaultTreeOperation.java	Fri Feb 08 01:51:04 2013 +0900
@@ -0,0 +1,27 @@
+package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
+
+public class DefaultTreeOperation implements TreeOperation
+{
+	private final NodePath path;
+	private final NodeOperation operation;
+	
+	public DefaultTreeOperation(NodePath _path,NodeOperation _operation)
+	{
+		path = _path;
+		operation = _operation;
+	}
+
+	@Override
+	public NodePath getNodePath()
+	{
+		return path;
+	}
+
+	@Override
+	public NodeOperation getNodeOperation()
+	{
+		return operation;
+	}
+}
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteAttributeOperation.java	Fri Feb 08 01:22:26 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteAttributeOperation.java	Fri Feb 08 01:51:04 2013 +0900
@@ -1,14 +1,30 @@
 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations;
 
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.DeleteAttribute;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 
-public abstract class DeleteAttributeOperation implements Operation
+public final class DeleteAttributeOperation implements NodeOperation
 {
+	private final String key;
+	
+	public DeleteAttributeOperation(String _key)
+	{
+		key = _key;
+	}
+	
 	@Override
 	public Command getCommand()
 	{
 		return Command.DELETE_ATTRIBUTE;
 	}
 	
-	public abstract String getKey();
+	@Override
+	public <T extends EditableNode<T>> Either<Error, T> invoke(T _target)
+	{
+		DeleteAttribute deleteAttribute = new DeleteAttribute(key);
+		return deleteAttribute.edit(_target);
+	}
 }
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteChildAtOperation.java	Fri Feb 08 01:22:26 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteChildAtOperation.java	Fri Feb 08 01:51:04 2013 +0900
@@ -1,14 +1,31 @@
 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations;
 
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
+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.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 
-public abstract class DeleteChildAtOperation implements Operation
+public class DeleteChildAtOperation implements NodeOperation
 {
+	private final int pos;
+	
+	public DeleteChildAtOperation(int _pos)
+	{
+		pos = _pos;
+	}
+	
 	@Override
 	public Command getCommand()
 	{
 		return Command.DELETE_CHILD;
 	}
 	
-	public abstract int position();
+	
+	@Override
+	public <T extends EditableNode<T>> Either<Error, T> invoke(T _target)
+	{
+		DeleteChildAt deleteChildAt = new DeleteChildAt(pos);
+		return deleteChildAt.edit(_target);
+	}
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/NodeOperation.java	Fri Feb 08 01:51:04 2013 +0900
@@ -0,0 +1,14 @@
+package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+
+public interface NodeOperation
+{
+	public Command getCommand();
+	public <T extends EditableNode<T>> Either<Error,T> invoke(T _target);
+}
+
+
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/Operation.java	Fri Feb 08 01:22:26 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
-
-public interface Operation
-{
-	public Command getCommand();
-}
-
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/PutAttributeOperation.java	Fri Feb 08 01:51:04 2013 +0900
@@ -0,0 +1,34 @@
+package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations;
+
+import java.nio.ByteBuffer;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
+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;
+
+public class PutAttributeOperation implements NodeOperation
+{
+	private final String key;
+	private final ByteBuffer value;
+	
+	public PutAttributeOperation(String _key,ByteBuffer _value)
+	{
+		key = _key;
+		value = _value;
+	}
+	
+	@Override
+	public Command getCommand()
+	{
+		return Command.PUT_ATTRIBUTE;
+	}
+	
+	@Override
+	public <T extends EditableNode<T>> Either<Error, T> invoke(T _target)
+	{
+		PutAttribute putAttribute = new PutAttribute(key,value);
+		return putAttribute.edit(_target);
+	}
+}
\ No newline at end of file
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/SetAttributeOperation.java	Fri Feb 08 01:22:26 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations;
-
-import java.nio.ByteBuffer;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
-
-public abstract class SetAttributeOperation implements Operation
-{
-	@Override
-	public Command getCommand()
-	{
-		return Command.SET_ATTRIBUTE;
-	}
-	
-	public abstract String getKey();
-	public abstract ByteBuffer getValue();
-}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/TreeOperation.java	Fri Feb 08 01:51:04 2013 +0900
@@ -0,0 +1,9 @@
+package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
+
+public interface TreeOperation
+{
+	public NodePath getNodePath();
+	public NodeOperation getNodeOperation();
+}