diff src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/PutIndexEditor.java @ 143:afbe19c98f53

change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>> bag
author one
date Sat, 15 Nov 2014 17:48:07 +0900
parents 99bda30ea72c
children
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/PutIndexEditor.java	Thu Nov 13 22:04:14 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/PutIndexEditor.java	Sat Nov 15 17:48:07 2014 +0900
@@ -15,7 +15,6 @@
 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.Pair;
 
 import java.nio.ByteBuffer;
 
@@ -36,67 +35,64 @@
 	}
 
 	@Override
-	public Either<Error, IndexJungleTreeEditor> edit(TreeNode root,TransactionManager txManager,TreeEditor editor,TreeOperationLog log,TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index) {
-		NodePath newPath = path.pop().right();
-		TreeNode target = getTarget(root, newPath);
-		TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> newIndex = editIndex(target, path, key, attribute,index);
+	public Either<Error, IndexJungleTreeEditor> edit(TreeNode root,TransactionManager txManager,TreeEditor editor,TreeOperationLog log,TreeMap<String, TreeMap<String, List<NodePath>>> index) {
+		TreeMap<String, TreeMap<String, List<NodePath>>> newIndex = editIndex(path, key, attribute,index);
 		IndexJungleTreeEditor newEditor = new IndexJungleTreeEditor(root,txManager,editor,log, newIndex);
 		Either<Error, IndexJungleTreeEditor> either = DefaultEither.newB(newEditor);
 		return either;
 	}
 	
-	public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> editIndex(TreeNode target, NodePath path, String key, String attribute,TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index){
+	public TreeMap<String, TreeMap<String, List<NodePath>>> editIndex(NodePath path, String key, String attribute,TreeMap<String, TreeMap<String, List<NodePath>>> index){
 
-		Option<TreeMap<String, List<Pair<TreeNode, NodePath>>>> innerIndexOp = index.get(key);
-		Pair<TreeNode, NodePath> pathNode = new Pair<TreeNode, NodePath>(target,path);
+		Option<TreeMap<String, List<NodePath>>> innerIndexOp = index.get(key); 
 		
 		if (attribute != null) {
 			if (innerIndexOp.isNone()) {
 
-				TreeMap<String, List<Pair<TreeNode, NodePath>>> innerIndex = TreeMap.empty(Ord.stringOrd);
-				List<Pair<TreeNode, NodePath>> list = List.nil();
-				list = list.cons(pathNode);
+				TreeMap<String, List<NodePath>> innerIndex = TreeMap.empty(Ord.stringOrd);
+				List<NodePath> list = List.nil();
+				list = list.cons(path);
 				innerIndex = innerIndex.set(attribute, list);
-				TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> newIndex = index.set(key, innerIndex);
+				TreeMap<String, TreeMap<String, List<NodePath>>> newIndex = index.set(key, innerIndex);
 				return newIndex;
 			} else {
 
-				TreeMap<String, List<Pair<TreeNode, NodePath>>> innerIndex = innerIndexOp.some();
+				TreeMap<String, List<NodePath>> innerIndex = innerIndexOp.some();
 				
-				Option<List<Pair<TreeNode, NodePath>>> opList = innerIndex.get(attribute);
+				Option<List<NodePath>> opList = innerIndex.get(attribute);
 
 				if (opList.isNone()) {
 
-					List<Pair<TreeNode, NodePath>> list = List.nil();
-					list = list.cons(pathNode);
+					List<NodePath> list = List.nil();
+					list = list.cons(path);
 					innerIndex = innerIndex.set(attribute, list);
 
 				} else {
 
-					List<Pair<TreeNode, NodePath>> list = opList.some();
-					list = list.cons(pathNode);
+					List<NodePath> list = opList.some();
+					list = list.cons(path);
 					innerIndex = innerIndex.set(attribute, list);
 
 				}
-				TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> newIndex = index.set(key, innerIndex);
+				TreeMap<String, TreeMap<String, List<NodePath>>> newIndex = index.set(key, innerIndex);
 				return newIndex;
 			}
 		}
 		return index;
 	}
 	
-	public TreeNode getTarget(TreeNode node , NodePath path){
-		Pair<Integer, NodePath> pathNode = path.pop();
-		Either<Error, TreeNode> either = node.getChildren().at(pathNode.left());
-		if (either.isA())
-			return node;
-		
-		TreeNode child = either.b();
-		if (pathNode.right().size() == 0)
-			return child;
-		
-		TreeNode target = getTarget(child,pathNode.right());
-		return target;
-	}
+//	public TreeNode getTarget(TreeNode node , NodePath path){
+//		Pair<Integer, NodePath> path = path.pop();
+//		Either<Error, TreeNode> either = node.getChildren().at(path.left());
+//		if (either.isA())
+//			return node;
+//		
+//		TreeNode child = either.b();
+//		if (path.right().size() == 0)
+//			return child;
+//		
+//		TreeNode target = getTarget(child,path.right());
+//		return target;
+//	}
 
 }