Mercurial > hg > Members > tatsuki > bench > jungle-core
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; +// } }