# HG changeset patch # User Shoshi TAMAKI # Date 1358077939 -32400 # Node ID 1b448f9249ee9aa73f5953b00616078e4eeb6869 # Parent ec033569ab8f97867830e8b09e2a076751915da1 mark diff -r ec033569ab8f -r 1b448f9249ee src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultNode.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultNode.java Fri Jan 11 22:33:00 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultNode.java Sun Jan 13 20:52:19 2013 +0900 @@ -1,17 +1,12 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl; import java.nio.ByteBuffer; -import java.util.Iterator; - import fj.Ord; import fj.data.List; -import fj.data.Option; import fj.data.TreeMap; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; 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; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; public class DefaultNode implements EditableNode { diff -r ec033569ab8f -r 1b448f9249ee src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java Fri Jan 11 22:33:00 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java Sun Jan 13 20:52:19 2013 +0900 @@ -14,11 +14,10 @@ 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.NodeEditor; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.SetAttribute; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.PutAttribute; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverseEvaluator; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.TraverseResult; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; @@ -57,7 +56,7 @@ @Override public Either putAttribute(NodePath _path, String _key,ByteBuffer _value) { - return edit(_path,new SetAttribute(_key,_value)); + return edit(_path,new PutAttribute(_key,_value)); } @Override @@ -75,20 +74,25 @@ @Override public Either edit(NodePath _path, NodeEditor _editor) { - Tree t = tip.getTree(); + Tree tree = tip.getTree(); Traverser traverser = new DefaultTraverser(); DefaultTraverseEvaluator te = new DefaultTraverseEvaluator(_path); - Iterable result = traverser.traverse(t,te); - Iterator itr = result.iterator(); - if(itr.hasNext()){ - Traversal r = itr.next(); - cloneAndApplyToNodeEditorFromRoot(r,_editor); + for(Traversal traversal : traverser.traverse(tree,te)){ + return clone(traversal); } return DefaultEither.newA(TreeEditorError.NODEPATH_NOTFOUND); } + public Either clone(Traversal _traversal) + { + for(Node node : _traversal){ + DefaultNode defNode = (DefaultNode)node; + } + return null; + } + public void cloneAndApplyToNodeEditorFromRoot(Traversal _r,NodeEditor _editor) { LinkedList path = new LinkedList(); diff -r ec033569ab8f -r 1b448f9249ee src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingAttributes.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingAttributes.java Fri Jan 11 22:33:00 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingAttributes.java Sun Jan 13 20:52:19 2013 +0900 @@ -1,7 +1,6 @@ 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.operations.DeleteAttributeOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.Operation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.SetAttributeOperation; @@ -9,6 +8,7 @@ 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 implements EditableAttributes { diff -r ec033569ab8f -r 1b448f9249ee 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 Jan 11 22:33:00 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingChildren.java Sun Jan 13 20:52:19 2013 +0900 @@ -1,7 +1,6 @@ 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.Node; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.AppendChildAtOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation; @@ -10,6 +9,7 @@ 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; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableWrapper; public class LoggingChildren implements EditableChildren diff -r ec033569ab8f -r 1b448f9249ee src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditCache.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditCache.java Fri Jan 11 22:33:00 2013 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer; - -import java.nio.ByteBuffer; -import fj.Ord; -import fj.data.List; -import fj.data.Option; -import fj.data.TreeMap; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.AppendChildAtOperation; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteAttributeOperation; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.Operation; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.SetAttributeOperation; - -public class EditCache -{ - private final List operations; - private final TreeMap attrCache; - private final List childrenCache; - - public EditCache() - { - operations = List.nil(); - attrCache = TreeMap.empty(Ord.stringOrd); - childrenCache = List.nil(); - } - - private EditCache(List _operations,TreeMap _attrCache,List _childrenCache) - { - operations = _operations; - attrCache = _attrCache; - childrenCache = _childrenCache; - } - - public EditCache setAttribute(final String _key,final ByteBuffer _value) - { - SetAttributeOperation op = new SetAttributeOperation(){ - @Override - public String getKey(){ - return _key; - } - @Override - public ByteBuffer getValue(){ - return _value; - } - }; - - TreeMap newAttrCache = attrCache.set(_key,op); - List newOperations = operations.snoc(op); - - return new EditCache(newOperations,newAttrCache,childrenCache); - } - - public EditCache deleteAttribute(final String _key) - { - DeleteAttributeOperation op = new DeleteAttributeOperation(){ - @Override - public String getKey(){ - return _key; - } - }; - - TreeMap newAttrCache = attrCache.set(_key,op); - List newOperations = operations.snoc(op); - - return new EditCache(newOperations,newAttrCache,childrenCache); - } - - public EditCache appendChildAt(final int _pos) - { - AppendChildAtOperation op = new AppendChildAtOperation(){ - @Override - public int position(){ - return _pos; - } - }; - - List newOperations = operations.snoc(op); - List newChildrenCache = childrenCache.snoc(op); - - return new EditCache(newOperations,attrCache,newChildrenCache); - } - - public EditCache deleteChildAt(final int _pos) - { - DeleteChildAtOperation op = new DeleteChildAtOperation(){ - @Override - public int position(){ - return _pos; - } - }; - - List newOperations = operations.snoc(op); - List newChildrenCache = childrenCache.snoc(op); - - return new EditCache(newOperations,attrCache,newChildrenCache); - } - - public Operation getAttribute(String _key) - { - Option result = attrCache.get(_key); - if(result.isSome()){ - return result.some(); - } - - return null; - } - - public List operations() - { - return operations; - } - - public List childrenOperations() - { - return childrenCache; - } -} diff -r ec033569ab8f -r 1b448f9249ee src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Evaluation.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Evaluation.java Fri Jan 11 22:33:00 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Evaluation.java Sun Jan 13 20:52:19 2013 +0900 @@ -2,11 +2,6 @@ public interface Evaluation { - public Evaluation.Result result(); - public TraverseEvaluator evaluator(); - - public static enum Result - { - ACCEPT_CONTINUE,DENY_CONTINUE,ACCEPT_BREAK,DENY_BREAK; - } + public Result result(); + public Evaluator evaluator(); } diff -r ec033569ab8f -r 1b448f9249ee src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Result.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Result.java Sun Jan 13 20:52:19 2013 +0900 @@ -0,0 +1,9 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser; + +public class Result +{ + // for traverser + public static final Result ACCEPT = new Result(); + public static final Result CONTINUE = new Result(); + public static final Result BREAK = new Result(); +} diff -r ec033569ab8f -r 1b448f9249ee src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Traversal.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Traversal.java Fri Jan 11 22:33:00 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Traversal.java Sun Jan 13 20:52:19 2013 +0900 @@ -2,7 +2,7 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; -public interface Traversal extends Iterable +public interface Traversal extends Iterable { - public Node destination(); + public T destination(); } diff -r ec033569ab8f -r 1b448f9249ee src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/TraverseEvaluator.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/TraverseEvaluator.java Fri Jan 11 22:33:00 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/TraverseEvaluator.java Sun Jan 13 20:52:19 2013 +0900 @@ -2,12 +2,12 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; -public interface TraverseEvaluator +public interface Evaluator { public static final long ACCEPT_AND_CONTINUE = 0; public static final long DENY_AND_CONTINUE = 1; public static final long ACCEPT_AND_BREAK = 2; public static final long DENY_AND_BREAK = 3; - public Evaluation eval(Iterable _currentPosition,Node _child,int _pos); + public Evaluation evaluate(Iterable _currentPosition,Node _child,int _pos); } diff -r ec033569ab8f -r 1b448f9249ee src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Traverser.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Traverser.java Fri Jan 11 22:33:00 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Traverser.java Sun Jan 13 20:52:19 2013 +0900 @@ -1,8 +1,8 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Tree; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; -public interface Traverser +public interface Traverser { - public Iterable traverse(Tree _tree,TraverseEvaluator _evaluator); + public Traversal traverse(T _root,TraverseEvaluator _evaluator); }