changeset 25:1b448f9249ee

mark
author Shoshi TAMAKI
date Sun, 13 Jan 2013 20:52:19 +0900
parents ec033569ab8f
children 075d6418e359
files src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultNode.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingAttributes.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingChildren.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditCache.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Evaluation.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Result.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Traversal.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/TraverseEvaluator.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/Traverser.java
diffstat 10 files changed, 33 insertions(+), 147 deletions(-) [+]
line wrap: on
line diff
--- 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
 {
--- 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<Error,TreeEditor> 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<Error,TreeEditor> edit(NodePath _path, NodeEditor _editor)
 	{
-		Tree t = tip.getTree();
+		Tree tree = tip.getTree();
 		Traverser traverser = new DefaultTraverser();
 		DefaultTraverseEvaluator te = new DefaultTraverseEvaluator(_path);
-		Iterable<Traversal> result = traverser.traverse(t,te);
-		Iterator<Traversal> 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<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>();
--- 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
 {
--- 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
--- 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<Operation> operations;
-	private final TreeMap<String,Operation> attrCache;
-	private final List<Operation> childrenCache;
-	
-	public EditCache()
-	{
-		operations = List.nil();
-		attrCache = TreeMap.empty(Ord.stringOrd);
-		childrenCache = List.nil();
-	}
-	
-	private EditCache(List<Operation> _operations,TreeMap<String,Operation> _attrCache,List<Operation> _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<String,Operation> newAttrCache = attrCache.set(_key,op);
-		List<Operation> 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<String,Operation> newAttrCache = attrCache.set(_key,op);
-		List<Operation> 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<Operation> newOperations = operations.snoc(op);
-		List<Operation> 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<Operation> newOperations = operations.snoc(op);
-		List<Operation> newChildrenCache = childrenCache.snoc(op);
-		
-		return new EditCache(newOperations,attrCache,newChildrenCache);
-	}
-	
-	public Operation getAttribute(String _key)
-	{
-		Option<Operation> result = attrCache.get(_key);
-		if(result.isSome()){
-			return result.some();
-		}
-		
-		return null;
-	}
-	
-	public List<Operation> operations()
-	{
-		return operations;
-	}
-	
-	public List<Operation> childrenOperations()
-	{
-		return childrenCache;
-	}
-}
--- 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();
 }
--- /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();
+}
--- 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<Node>
+public interface Traversal<T extends Node> extends Iterable<T>
 {
-	public Node destination();
+	public T destination();
 }
--- 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<Node> _currentPosition,Node _child,int _pos);
+	public Evaluation evaluate(Iterable<Node> _currentPosition,Node _child,int _pos);
 }
--- 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<T extends Node>
 {
-	public Iterable<Traversal> traverse(Tree _tree,TraverseEvaluator _evaluator);
+	public Traversal traverse(T _root,TraverseEvaluator _evaluator);
 }