# HG changeset patch # User Shoshi TAMAKI # Date 1355926800 -32400 # Node ID 35c661de095da9297df23e642bf2833c0b773c70 # Parent 0d93a6edc1b7de79ca588a60fb46dcd7218d6c81 added Parameter ... etc.. diff -r 0d93a6edc1b7 -r 35c661de095d 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 Tue Dec 18 17:13:58 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/Command.java Wed Dec 19 23:20:00 2012 +0900 @@ -2,5 +2,5 @@ public enum Command { - APPEND_CHILD_BEHIND,APPEND_CHILD_INFRONT,DELETE_CHILD,PUT_ATTRIBUTE,DELETE_ATTRIBUTE; -} + APPEND_CHILD,DELETE_CHILD,PUT_ATTRIBUTE,DELETE_ATTRIBUTE; +} \ No newline at end of file diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/NodePath.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/NodePath.java Tue Dec 18 17:13:58 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/NodePath.java Wed Dec 19 23:20:00 2012 +0900 @@ -1,8 +1,9 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.TraverseEvaluator; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; -public interface NodePath extends Iterable , TraverseEvaluator +public interface NodePath extends Iterable { - public NodePath appendPath(int _pos); + public NodePath add(int _pos); + public Pair pop(); } diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/TreeEditResult.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/TreeEditResult.java Tue Dec 18 17:13:58 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/TreeEditResult.java Wed Dec 19 23:20:00 2012 +0900 @@ -3,4 +3,5 @@ public interface TreeEditResult { public TreeEditor getNewEditor(); + public TreeEditResultStatus getStatus(); } diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/TreeEditResultStatus.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/TreeEditResultStatus.java Wed Dec 19 23:20:00 2012 +0900 @@ -0,0 +1,6 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store; + +public enum TreeEditResultStatus +{ + NODEPATH_NOTFOUND; +} diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditResult.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/DefaultTreeEditResult.java Wed Dec 19 23:20:00 2012 +0900 @@ -0,0 +1,29 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditResult; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditResultStatus; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor; + +public class DefaultTreeEditResult implements TreeEditResult +{ + private final TreeEditor editor; + private final TreeEditResultStatus status; + + public DefaultTreeEditResult(TreeEditor _editor,TreeEditResultStatus _status) + { + editor = _editor; + status = _status; + } + + @Override + public TreeEditor getNewEditor() + { + return editor; + } + + @Override + public TreeEditResultStatus getStatus() + { + return status; + } +} diff -r 0d93a6edc1b7 -r 35c661de095d 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 Tue Dec 18 17:13:58 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java Wed Dec 19 23:20:00 2012 +0900 @@ -1,18 +1,22 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl; import java.nio.ByteBuffer; +import java.util.Iterator; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Tree; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TraversableTree; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditResult; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditResultStatus; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.AppendChildAt; 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.traverser.DefaultTraverseEvaluator; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.TraverseResult; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traverser; @@ -70,8 +74,29 @@ { Tree t = tip.getTree(); Traverser traverser = new DefaultTraverser(); - Iterable result = traverser.traverse(t,_path); + DefaultTraverseEvaluator te = new DefaultTraverseEvaluator(_path); + Iterable result = traverser.traverse(t,te); + Iterator itr = result.iterator(); + if(itr.hasNext()){ + TraverseResult r = itr.next(); + cloneAndApplyToNodeEditorFromRoot(r,_editor); + } - return null; + return new DefaultTreeEditResult(null,TreeEditResultStatus.NODEPATH_NOTFOUND); } + + public void cloneAndApplyToNodeEditorFromRoot(TraverseResult _r,NodeEditor _editor) + { + Iterator nodes = _r.iterator(); + + //root + if(!nodes.hasNext()){ + return; + } + + DefaultNode root = (DefaultNode)nodes.next(); + + } + + } \ No newline at end of file diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/AppendChildAt.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/AppendChildAt.java Wed Dec 19 23:20:00 2012 +0900 @@ -0,0 +1,6 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations; + +public final class AppendChildAt +{ + public static final Parameter POSITION = new DefaultParameter(); +} diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DefaultParameter.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/DefaultParameter.java Wed Dec 19 23:20:00 2012 +0900 @@ -0,0 +1,5 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations; + +public class DefaultParameter implements Parameter +{ +} diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteAttribute.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/DeleteAttribute.java Wed Dec 19 23:20:00 2012 +0900 @@ -0,0 +1,6 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations; + +public final class DeleteAttribute +{ + public static final Parameter KEY = new DefaultParameter(); +} diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteChildAt.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/DeleteChildAt.java Wed Dec 19 23:20:00 2012 +0900 @@ -0,0 +1,6 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations; + +public final class DeleteChildAt +{ + public static final Parameter POSITION = new DefaultParameter(); +} diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/Operation.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/Operation.java Wed Dec 19 23:20:00 2012 +0900 @@ -0,0 +1,11 @@ +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(); + public ? getParameter(Parameter _param); +} + + diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/Parameter.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/Parameter.java Wed Dec 19 23:20:00 2012 +0900 @@ -0,0 +1,5 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations; + +public interface Parameter +{ +} diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/SetAttribute.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/SetAttribute.java Wed Dec 19 23:20:00 2012 +0900 @@ -0,0 +1,9 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations; + +import java.nio.ByteBuffer; + +public final class SetAttribute +{ + public static final Parameter KEY = new DefaultParameter(); + public static final Parameter VALUE = new DefaultParameter(); +} diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DefaultEditableAttributes.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DefaultEditableAttributes.java Wed Dec 19 23:20:00 2012 +0900 @@ -0,0 +1,33 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer; + +import java.nio.ByteBuffer; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Attributes; + +public class DefaultEditableAttributes implements EditableAttributes +{ + private Attributes attrs; + + public DefaultEditableAttributes(Attributes _attrs,EditCache _cache) + { + attrs = _attrs; + } + + @Override + public ByteBuffer get(String _key) + { + return null; + } + + @Override + public EditableNode delete(String _key) + { + return null; + } + + @Override + public EditableNode put(String _key, ByteBuffer _value) + { + return null; + } +} diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DefaultEditableNode.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DefaultEditableNode.java Wed Dec 19 23:20:00 2012 +0900 @@ -0,0 +1,22 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; + +public class DefaultEditableNode implements EditableNode +{ + public DefaultEditableNode(Node _target) + { + } + + @Override + public EditableAttributes getAttributes() + { + return null; + } + + @Override + public EditableChildren getChildren() + { + return null; + } +} diff -r 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditCache.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditCache.java Wed Dec 19 23:20:00 2012 +0900 @@ -0,0 +1,86 @@ +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.core.Children; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.Operation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.Parameter; + +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) + { + Operation op = new Operation(){ + @Override + public Command getCommand(){ + return Command.PUT_ATTRIBUTE; + } + + @Override + public T getParameter(Parameter _param){ + if(_param == jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.SetAttribute.KEY){ + return _key; + } + return ; + } + }; + } + + public EditCache deleteAttribute(String _key) + { + + } + + public EditCache appendChildAt(int _pos) + { + + } + + public EditCache deleteChildAt(int _pos) + { + + } + + 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 0d93a6edc1b7 -r 35c661de095d src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/DefaultTraverseEvaluator.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/DefaultTraverseEvaluator.java Tue Dec 18 17:13:58 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/DefaultTraverseEvaluator.java Wed Dec 19 23:20:00 2012 +0900 @@ -1,36 +1,24 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser; -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.NodePath; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; -import fj.data.List; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; - -public class DefaultTraverseEvaluator implements TraverseEvaluator , Iterable +public class DefaultTraverseEvaluator implements TraverseEvaluator { - public List path; - public static List EMPTY = List.nil(); + private final NodePath path; - public DefaultTraverseEvaluator() - { - this(EMPTY); - } - - private DefaultTraverseEvaluator(List _path) + public DefaultTraverseEvaluator(NodePath _path) { path = _path; } - public DefaultTraverseEvaluator add(Integer _next) - { - List newPath = path.snoc(_next); - return new DefaultTraverseEvaluator(newPath); - } - @Override public Evaluation eval(Iterable _currentPosition,Node _child,int _pos) { - int head = path.head(); - DefaultTraverseEvaluator nextEvaluator = new DefaultTraverseEvaluator(path.tail()); + Pair pop = path.pop(); + DefaultTraverseEvaluator nextEvaluator = new DefaultTraverseEvaluator(pop.right()); + int head = pop.left(); Evaluation.Result result = Evaluation.Result.DENY_CONTINUE; if(head == _pos){ @@ -39,10 +27,4 @@ return new DefaultEvaluation(result,nextEvaluator); } - - @Override - public Iterator iterator() - { - return path.iterator(); - } } diff -r 0d93a6edc1b7 -r 35c661de095d 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 Tue Dec 18 17:13:58 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/TraverseEvaluator.java Wed Dec 19 23:20:00 2012 +0900 @@ -1,5 +1,7 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser; +import java.util.Iterator; + import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; public interface TraverseEvaluator