Mercurial > hg > Members > tatsuki > bench > jungle-core
diff src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java @ 49:e3a507fd57a4
modified TreeEditor and JungleTreeEditor (not done yet)
author | Shoshi TAMAKI |
---|---|
date | Fri, 08 Feb 2013 01:22:26 +0900 |
parents | cb9fabaedfd4 |
children | 8c6ff361b68a |
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java Fri Feb 08 00:32:38 2013 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java Fri Feb 08 01:22:26 2013 +0900 @@ -1,14 +1,9 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl; -import java.nio.ByteBuffer; 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.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.PutAttribute; 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; @@ -17,52 +12,20 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; -public class DefaultTreeEditor<T extends ClonableNode<T>> - implements TreeEditor<DefaultTreeEditor<T>> +public class DefaultTreeEditor implements TreeEditor { - private final T root; private final Traverser traverser; - public DefaultTreeEditor(T _root,Traverser _traverser) + public DefaultTreeEditor(Traverser _traverser) { - root = _root; traverser = _traverser; } - public T getRootNode() - { - return root; - } - @Override - public Either<Error,DefaultTreeEditor<T>> appendChild(NodePath _path,int _pos) - { - return edit(_path,new AppendChildAt(_pos)); - } - - @Override - public Either<Error, DefaultTreeEditor<T>> deleteChild(NodePath _path,int _pos) - { - return edit(_path,new DeleteChildAt(_pos)); - } - - @Override - public Either<Error, DefaultTreeEditor<T>> putAttribute(NodePath _path, String _key,ByteBuffer _value) - { - return edit(_path,new PutAttribute(_key,_value)); - } - - @Override - public Either<Error, DefaultTreeEditor<T>> deleteAttribute(NodePath _path, String _key) - { - return edit(_path,new DeleteAttribute(_key)); - } - - @Override - public Either<Error,DefaultTreeEditor<T>> edit(NodePath _path,NodeEditor _editor) + public <T extends ClonableNode<T>> Either<Error,T> edit(T _root,NodePath _path,NodeEditor _editor) { DefaultEvaluator e = new DefaultEvaluator(_path); - TraversableNodeWrapper<T> wrap = new TraversableNodeWrapper<T>(root); + TraversableNodeWrapper<T> wrap = new TraversableNodeWrapper<T>(_root); Either<Error, Traversal<TraversableNodeWrapper<T>>> either = traverser.traverse(wrap,e); if(either.isA()){ @@ -70,12 +33,12 @@ } Traversal<TraversableNodeWrapper<T>> t = either.b(); - Either<Error,DefaultTreeEditor<T>> ret = clone(t,_editor); + Either<Error,T> ret = clone(t,_editor); return ret; } - private Either<Error,DefaultTreeEditor<T>> clone(Traversal<TraversableNodeWrapper<T>> _t,NodeEditor _editor) + private <T extends ClonableNode<T>> Either<Error,T> clone(Traversal<TraversableNodeWrapper<T>> _t,NodeEditor _editor) { // copying nodes from bottom to root @@ -112,7 +75,6 @@ } T newRoot = child; - DefaultTreeEditor<T> newEditor = new DefaultTreeEditor<T>(newRoot,traverser); - return DefaultEither.newB(newEditor); + return DefaultEither.newB(newRoot); } } \ No newline at end of file