Mercurial > hg > Members > tatsuki > bench > jungle-core
view src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java @ 27:5f4172d6fb8b
clean up
author | Shoshi TAMAKI |
---|---|
date | Mon, 14 Jan 2013 04:07:15 +0900 |
parents | 1b448f9249ee |
children | f4be99977be2 |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl; import java.util.LinkedList; 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.persistent.ChangeListWriter; 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.TreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditorError; 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.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal; 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; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; public class DefaultTreeEditor implements TreeEditor { private final ChangeSet tip; public DefaultTreeEditor(ChangeSet _tip,ChangeListWriter _writer) { tip = _tip; } @Override public TraversableTree getTree() { return new DefaultTraversableTree(tip.getTree(),new DefaultTraverser<Node>()); } @Override public Either<Error,TreeEditor> appendChild(NodePath _path,int _pos) { return edit(_path,new AppendChildAt(_pos)); } @Override public Either<Error,TreeEditor> deleteChild(NodePath _path,int _pos) { return edit(_path,new DeleteChildAt(_pos)); } @Override public Either<Error,TreeEditor> putAttribute(NodePath _path, String _key,ByteBuffer _value) { return edit(_path,new PutAttribute(_key,_value)); } @Override public Either<Error,TreeEditor> deleteAttribute(NodePath _path, String _key) { return edit(_path,new DeleteAttribute(_key)); } @Override public boolean success() { return false; } @Override public Either<Error,TreeEditor> edit(NodePath _path, NodeEditor _editor) { Tree tree = tip.getTree(); Traverser traverser = new DefaultTraverser(); DefaultTraverseEvaluator te = new DefaultTraverseEvaluator(_path); for(Traversal traversal : traverser.traverse(tree,te)){ return clone(traversal); } return DefaultEither.newA(TreeEditorError.NODEPATH_NOTFOUND); } public Either<Error,TreeEditor> clone(Traversal _traversal) { for(Node node : _traversal){ DefaultNode defNode = (DefaultNode)node; } return null; } public void cloneAndApplyToNodeEditorFromRoot(Traversal _r,NodeEditor _editor) { LinkedList<DefaultNode> path = new LinkedList<DefaultNode>(); for(Node n : _r){ DefaultNode node = (DefaultNode)n; path.add(node); } } }