Mercurial > hg > Members > tatsuki > bench > jungle-core
changeset 94:328faf4b37c5
Merge with 9225ff3e32109f927357dc24ac02ab9800bed5c9
author | one |
---|---|
date | Sat, 06 Sep 2014 10:26:59 +0900 |
parents | ef68358ed0e8 (diff) 9225ff3e3210 (current diff) |
children | 3653fb50fb22 |
files | |
diffstat | 17 files changed, 184 insertions(+), 110 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/TreeEditor.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/TreeEditor.java Sat Sep 06 10:26:59 2014 +0900 @@ -1,11 +1,12 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; public interface TreeEditor { - public Either<Error,TreeNode> edit(TreeNode _root,NodePath _path,NodeEditor _transformer); + public Either<Error,LoggingNode> edit(TreeNode _root,NodePath _path,NodeEditor _transformer); }
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java Sat Sep 06 10:26:59 2014 +0900 @@ -3,9 +3,8 @@ import fj.data.List; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Direction; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal; @@ -24,9 +23,10 @@ } @Override - public Either<Error,TreeNode> edit(TreeNode _root,NodePath _path,NodeEditor _editor) + public Either<Error,LoggingNode> edit(TreeNode _root,NodePath _path,NodeEditor _editor) { DefaultEvaluator e = new DefaultEvaluator(_path); + //TraversableNodeWrapper<T> wrap = new TraversableNodeWrapper<T>(_root); Either<Error, Traversal> either = traverser.traverse(_root,e); if(either.isA()){ @@ -34,12 +34,12 @@ } Traversal t = either.b(); - Either<Error,TreeNode> ret = clone(t,_editor); + Either<Error,LoggingNode> ret = clone(t,_editor); return ret; } - private Either<Error,TreeNode> clone(Traversal _t,NodeEditor _editor) + private Either<Error,LoggingNode> clone(Traversal _t,NodeEditor _editor) { // copying nodes from bottom to root @@ -51,16 +51,17 @@ // target Direction<TreeNode> targetDirection = path.head(); TreeNode target = targetDirection.getTarget(); + //EditableNodeWrapper<T> wrapper = new EditableNodeWrapper<T>(target); Either<Error,TreeNode> either = _editor.edit(target); if(either.isA()){ return DefaultEither.newA(either.a()); } - TreeNode newNode = either.b(); - OperationLog log = newNode.getLog(); + TreeNode newWrap = either.b(); + // top int pos = targetDirection.getPosition(); - TreeNode child = newNode; + TreeNode child = newWrap; for(Direction<TreeNode> parentDirection : path.tail()){ TreeNodeChildren chs = parentDirection.getTarget().getChildren(); @@ -74,7 +75,7 @@ pos = parentDirection.getPosition(); } - TreeNode newRoot = new DefaultTreeNode(child,log); - return DefaultEither.newB(newRoot); + TreeNode newRoot = child; + return DefaultEither.newB(new LoggingNode(newRoot,_editor.getLog())); } } \ No newline at end of file
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingAttributes.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingAttributes.java Sat Sep 06 10:26:59 2014 +0900 @@ -1,60 +1,57 @@ -/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger; +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger; import java.nio.ByteBuffer; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteAttributeOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableAttributes; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; -public class LoggingAttributes<T extends EditableNode<T>> implements EditableAttributes<LoggingNode<T>> +public class LoggingAttributes //implements EditableAttributes { - private final T wrap; + private final TreeNode wrap; private final OperationLog log; - public LoggingAttributes(T _wrap,OperationLog _log) + public LoggingAttributes(TreeNode _wrap,OperationLog _log) { wrap = _wrap; log = _log; } - @Override public ByteBuffer get(String _key) { - EditableAttributes<T> attributes = wrap.getAttributes(); + TreeNodeAttributes attributes = wrap.getAttributes(); return attributes.get(_key); } - private Either<Error,LoggingNode<T>> edit(NodeOperation _op) + private Either<Error,LoggingNode> edit(NodeOperation _op) { - Either<Error,T> either = _op.invoke(wrap); + Either<Error,TreeNode> either = _op.invoke(wrap); if(either.isA()){ return DefaultEither.newA(either.a()); } - T newWrap = either.b(); - OperationLog newLog = log.add(_op); - LoggingNode<T> newLoggingNode = new LoggingNode<T>(newWrap,newLog); + TreeNode newNode = either.b(); + OperationLog newLog = log.add(_op); + LoggingNode newLoggingNode = new LoggingNode(newNode,newLog); return DefaultEither.newB(newLoggingNode); } - @Override - public Either<Error,LoggingNode<T>> delete(final String _key) + public Either<Error,LoggingNode> delete(final String _key) { DeleteAttributeOperation deleteAttribute = new DeleteAttributeOperation(_key); return edit(deleteAttribute); } - @Override - public Either<Error,LoggingNode<T>> put(final String _key,final ByteBuffer _value) + public Either<Error,LoggingNode> put(final String _key,final ByteBuffer _value) { PutAttributeOperation putAttribute = new PutAttributeOperation(_key,_value); return edit(putAttribute); } } -*/ \ No newline at end of file
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingChildren.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingChildren.java Sat Sep 06 10:26:59 2014 +0900 @@ -1,78 +1,75 @@ -/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger; +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger; import java.util.Iterator; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.AppendChildAtOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableChildren; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; -public class LoggingChildren<T extends EditableNode<T>> implements EditableChildren<LoggingNode<T>> +public class LoggingChildren //implements EditableChildren { - private final T wrap; + private final TreeNode wrap; private final OperationLog log; - public LoggingChildren(T _wrap,OperationLog _log) + public LoggingChildren(TreeNode _wrap,OperationLog _log) { wrap = _wrap; log = _log; } - @Override public int size() { - EditableChildren<T> children = wrap.getChildren(); + Children children = wrap.getChildren(); return children.size(); } + /* @Override - public Iterator<LoggingNode<T>> iterator() + public Iterator<LoggingNode> iterator() { - EditableChildren<T> children = wrap.getChildren(); - return (Iterator<LoggingNode<T>>) children.iterator(); - } + LoggingChildren children = wrap.getChildren(); + return children.iterator(); + }*/ - public Either<Error,LoggingNode<T>> edit(NodeOperation _op) + public Either<Error,LoggingNode> edit(NodeOperation _op) { - Either<Error,T> either = _op.invoke(wrap); + Either<Error,TreeNode> either = _op.invoke(wrap); if(either.isA()){ return DefaultEither.newA(either.a()); } - T newWrap = either.b(); + TreeNode newWrap = either.b(); OperationLog newLog = log.add(_op); - LoggingNode<T> newLoggingNode = new LoggingNode<T>(newWrap,newLog); + LoggingNode newLoggingNode = new LoggingNode(newWrap,newLog); return DefaultEither.newB(newLoggingNode); } - @Override - public Either<Error,LoggingNode<T>> addNewChildAt(final int _pos) + public Either<Error,LoggingNode> addNewChildAt(final int _pos) { NodeOperation addNewChildAt = new AppendChildAtOperation(_pos); return edit(addNewChildAt); } - @Override - public Either<Error,LoggingNode<T>> deleteChildAt(final int _pos) + public Either<Error,LoggingNode> deleteChildAt(final int _pos) { NodeOperation deleteChildAt = new DeleteChildAtOperation(_pos); return edit(deleteChildAt); } - @Override - public Either<Error,LoggingNode<T>> at(int _pos) + public Either<Error,LoggingNode> at(int _pos) { - EditableChildren<T> children = wrap.getChildren(); - Either<Error,T> either = children.at(_pos); + Children children = wrap.getChildren(); + Either<Error,TreeNode> either = children.at(_pos); if(either.isA()){ return DefaultEither.newA(either.a()); } - T node = either.b(); - return DefaultEither.newB(new LoggingNode<T>(node)); + TreeNode node = either.b(); + return DefaultEither.newB(new LoggingNode(node)); } } -*/ \ No newline at end of file
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNode.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNode.java Sat Sep 06 10:26:59 2014 +0900 @@ -1,35 +1,32 @@ -/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger; +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableAttributes; -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 EditableNode<T>> implements EditableNode<LoggingNode<T>> +public class LoggingNode { - public LoggingNode(T _wrap) + public LoggingNode(TreeNode _wrap) { this(_wrap,new DefaultOperationLog()); } - public LoggingNode(T _wrap,OperationLog _log) + public LoggingNode(TreeNode _wrap,OperationLog _log) { wrap = _wrap; log = _log; } - private final T wrap; + private final TreeNode wrap; private final OperationLog log; - @Override - public EditableAttributes<LoggingNode<T>> getAttributes() + public LoggingAttributes getAttributes() { - return new LoggingAttributes<T>(wrap,log); + return new LoggingAttributes(wrap,log); } - @Override - public EditableChildren<LoggingNode<T>> getChildren() + public LoggingChildren getChildren() { - return new LoggingChildren<T>(wrap,log); + return new LoggingChildren(wrap,log); } public OperationLog getOperationLog() @@ -37,9 +34,8 @@ return log; } - public T getWrap() + public TreeNode getWrap() { return wrap; } } -*/ \ No newline at end of file
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNodeHook.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNodeHook.java Sat Sep 06 10:26:59 2014 +0900 @@ -20,18 +20,17 @@ @Override public Either<Error,TreeNode> edit(TreeNode _e) { + //LoggingNode<T> loggingNode = new LoggingNode<T>(_e); Either<Error,TreeNode> either = editor.edit(_e); if(either.isA()){ return DefaultEither.newA(either.a()); } - TreeNode newLoggingNode = either.b(); - - return DefaultEither.newB(newLoggingNode); + log = editor.getLog(); + return DefaultEither.newB(either.b()); } public OperationLog getLog() { return log; } -} -*/ \ No newline at end of file +}*/
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/AppendChildAtOperation.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/AppendChildAtOperation.java Sat Sep 06 10:26:59 2014 +0900 @@ -3,6 +3,9 @@ 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.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; public final class AppendChildAtOperation implements NodeOperation @@ -19,12 +22,11 @@ return Command.APPEND_CHILD; } - /*@Override - public <T extends TreeNode> Either<Error,T> invoke(T _target) + @Override + public Either<Error,TreeNode> invoke(TreeNode _target) { - AppendChildAt appendChildAt = new AppendChildAt(pos); - return appendChildAt.edit(_target); - }*/ + return _target.getChildren().addNewChildAt(pos); + } @Override public int getPosition()
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteAttributeOperation.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteAttributeOperation.java Sat Sep 06 10:26:59 2014 +0900 @@ -3,7 +3,10 @@ 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.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.DeleteAttribute; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; public final class DeleteAttributeOperation implements NodeOperation { @@ -20,13 +23,13 @@ return Command.DELETE_ATTRIBUTE; } - /*@Override - public <T extends TreeNode> Either<Error,T> invoke(T _target) + @Override + public Either<Error, TreeNode> invoke(TreeNode _target) { DeleteAttribute deleteAttribute = new DeleteAttribute(key); return deleteAttribute.edit(_target); - }*/ - + } + @Override public int getPosition() {
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteChildAtOperation.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteChildAtOperation.java Sat Sep 06 10:26:59 2014 +0900 @@ -3,7 +3,10 @@ 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.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.DeleteChildAt; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; public class DeleteChildAtOperation implements NodeOperation { @@ -20,12 +23,12 @@ return Command.DELETE_CHILD; } - /*@Override - public <T extends TreeNode> Either<Error,T> invoke(T _target) + @Override + public Either<Error, TreeNode> invoke(TreeNode _target) { DeleteChildAt deleteChildAt = new DeleteChildAt(pos); return deleteChildAt.edit(_target); - }*/ + } @Override public int getPosition()
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/NodeOperation.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/NodeOperation.java Sat Sep 06 10:26:59 2014 +0900 @@ -3,11 +3,15 @@ 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.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode; +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 TreeNode> Either<Error,T> invoke(T _target); + public Either<Error,TreeNode> invoke(TreeNode _target); public int getPosition(); public String getKey();
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/PutAttributeOperation.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/PutAttributeOperation.java Sat Sep 06 10:26:59 2014 +0900 @@ -3,6 +3,10 @@ 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.impl.TreeNode; +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 @@ -22,13 +26,11 @@ return Command.PUT_ATTRIBUTE; } - /*@Override - public <T extends TreeNode> Either<Error,T> invoke(T _target) + @Override + public Either<Error,TreeNode> invoke(TreeNode _target) { - PutAttribute putAttribute = new PutAttribute(key,value); - return putAttribute.edit(_target); - }*/ - + return _target.getAttributes().put(key,value); + } @Override public int getPosition() {
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/AppendChildAt.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/AppendChildAt.java Sat Sep 06 10:26:59 2014 +0900 @@ -1,6 +1,10 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.AppendChildAtOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; @@ -8,22 +12,30 @@ public class AppendChildAt implements NodeEditor { private final int pos; + private OperationLog log; public AppendChildAt(int _pos) { pos = _pos; + log = new DefaultOperationLog(); } @Override - public Either<Error,TreeNode> edit(TreeNode _e) + public Either<Error, TreeNode> edit(TreeNode _e) { - Either<Error,TreeNode> either = _e.getChildren().addNewChildAt(pos); + NodeOperation addNewChildOperation = new AppendChildAtOperation(pos); + Either<Error,TreeNode> either = addNewChildOperation.invoke(_e); if(either.isA()){ // error return either; } - + log = log.add(addNewChildOperation); return DefaultEither.newB(either.b()); } + @Override + public OperationLog getLog() { + return log; + } + }
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteAttribute.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteAttribute.java Sat Sep 06 10:26:59 2014 +0900 @@ -1,22 +1,38 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteAttributeOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; public class DeleteAttribute implements NodeEditor { private final String key; - + private OperationLog log; public DeleteAttribute(String _key) { key = _key; + log = new DefaultOperationLog(); } @Override public Either<Error,TreeNode> edit(TreeNode _e) { - return _e.getAttributes().delete(key); + DeleteAttributeOperation deleteAttributeOperation = new DeleteAttributeOperation(key); + Either<Error,TreeNode> either = deleteAttributeOperation.invoke(_e); + if(either.isA()){ + // error + return either; + } + log = log.add(deleteAttributeOperation); + return DefaultEither.newB(either.b()); } + @Override + public OperationLog getLog() { + return log; + } }
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteChildAt.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteChildAt.java Sat Sep 06 10:26:59 2014 +0900 @@ -1,22 +1,39 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; public class DeleteChildAt implements NodeEditor { private final int pos; - + private OperationLog log; public DeleteChildAt(int _pos) { pos = _pos; + log = new DefaultOperationLog(); } @Override public Either<Error,TreeNode> edit(TreeNode _e) { - return _e.getChildren().deleteChildAt(pos); + NodeOperation deleteChildOperation = new DeleteChildAtOperation(pos); + Either<Error,TreeNode> either = deleteChildOperation.invoke(_e); + if(either.isA()){ + // error + return either; + } + log = log.add(deleteChildOperation); + return DefaultEither.newB(either.b()); } + @Override + public OperationLog getLog() { + return log; + } }
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/NodeEditor.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/NodeEditor.java Sat Sep 06 10:26:59 2014 +0900 @@ -1,10 +1,14 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeChildren; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; public interface NodeEditor { public Either<Error,TreeNode> edit(TreeNode _e); + public OperationLog getLog(); } \ No newline at end of file
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/PutAttribute.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/PutAttribute.java Sat Sep 06 10:26:59 2014 +0900 @@ -4,6 +4,12 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; @@ -11,18 +17,30 @@ { private final String key; private final ByteBuffer value; + private OperationLog log; public PutAttribute(String _key,ByteBuffer _value) { key = _key; value = _value; + log = new DefaultOperationLog(); } @Override public Either<Error,TreeNode> edit(TreeNode _e) { - TreeNodeAttributes attrs = _e.getAttributes(); - return attrs.put(key,value); + NodeOperation putAttributeOperation = new PutAttributeOperation(key,value); + Either<Error,TreeNode> either = putAttributeOperation.invoke(_e); + if(either.isA()){ + // error + return either; + } + log = log.add(putAttributeOperation); + return DefaultEither.newB(either.b()); } + @Override + public OperationLog getLog() { + return log; + } }
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultJungleTreeEditor.java Fri Sep 05 19:55:00 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultJungleTreeEditor.java Sat Sep 06 10:26:59 2014 +0900 @@ -7,6 +7,7 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; 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.LoggingNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; 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; @@ -45,13 +46,14 @@ private Either<Error,JungleTreeEditor> _edit(final NodePath _path,NodeEditor _e) { //LoggingNodeHook hook = new LoggingNodeHook(_e); - Either<Error,TreeNode> either = editor.edit(root,_path,_e); + Either<Error,LoggingNode> either = editor.edit(root,_path,_e); if(either.isA()){ return DefaultEither.newA(either.a()); } - TreeNode newNode = either.b(); - OperationLog newLog = newNode.getLog(); + LoggingNode newLogging = either.b(); + OperationLog newLog = newLogging.getOperationLog(); + TreeNode newNode = newLogging.getWrap(); IterableConverter.Converter<TreeOperation,NodeOperation> converter = new IterableConverter.Converter<TreeOperation,NodeOperation>(){ @Override