# HG changeset patch # User Shoshi TAMAKI # Date 1360255864 -32400 # Node ID 0a3bff2d9c89777bab3bb54ec71e7623d3d4fb96 # Parent e3a507fd57a4b001dcb160c3c5d12a1bcae4cd3f modified operation things diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/Command.java --- 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 diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/DefaultLogger.java --- 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 log; - - private static final List EMPTY = List.nil(); - - public DefaultLogger() - { - this(EMPTY); - } - - private DefaultLogger(List _log) - { - log = _log; - } - - @Override - public Iterator iterator() - { - return log.iterator(); - } - - @Override - public Logger add(Operation _op) - { - return new DefaultLogger(log.snoc(_op)); - } -} diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/DefaultOperationLog.java --- /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 log; + + private static final List EMPTY = List.nil(); + + public DefaultOperationLog() + { + this(EMPTY); + } + + private DefaultOperationLog(List _log) + { + log = _log; + } + + @Override + public Iterator iterator() + { + return log.iterator(); + } + + @Override + public DefaultOperationLog add(Operation _op) + { + return new DefaultOperationLog(log.snoc(_op)); + } +} diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingChildren.java --- 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> implements ClonableChildren> { private final ClonableChildren wrap; - private final Logger log; + private final DefaultOperationLog log; - public LoggingChildren(ClonableChildren _wrap,Logger _log) + public LoggingChildren(ClonableChildren _wrap,DefaultOperationLog _log) { wrap = _wrap; log = _log; diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNode.java --- 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> - implements ClonableNode> +public class LoggingNode> implements EditableNode> { 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> getAttributes() + public EditableAttributes> getAttributes() { return new LoggingAttributes(wrap.getAttributes(),log); } @Override - public ClonableChildren> getChildren() + public EditableChildren> getChildren() { return new LoggingChildren(wrap.getChildren(),log); } - @Override - public LoggingNode createNewNode() - { - T newWrap = wrap.createNewNode(); - return new LoggingNode(newWrap,log); - } - - public Logger getLogger() + public DefaultOperationLog getLogger() { return log; } diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/AppendChildAtOperation.java --- 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 > Either invoke(T _target) + { + AppendChildAt appendChildAt = new AppendChildAt(pos); + return appendChildAt.edit(_target); + } } diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DefaultTreeOperation.java --- /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; + } +} diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteAttributeOperation.java --- 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 > Either invoke(T _target) + { + DeleteAttribute deleteAttribute = new DeleteAttribute(key); + return deleteAttribute.edit(_target); + } } diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteChildAtOperation.java --- 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 > Either invoke(T _target) + { + DeleteChildAt deleteChildAt = new DeleteChildAt(pos); + return deleteChildAt.edit(_target); + } } diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/NodeOperation.java --- /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 > Either invoke(T _target); +} + + diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/Operation.java --- 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(); -} - - diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/PutAttributeOperation.java --- /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 > Either invoke(T _target) + { + PutAttribute putAttribute = new PutAttribute(key,value); + return putAttribute.edit(_target); + } +} \ No newline at end of file diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/SetAttributeOperation.java --- 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 diff -r e3a507fd57a4 -r 0a3bff2d9c89 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/TreeOperation.java --- /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(); +}