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