# HG changeset patch # User one # Date 1417933470 -32400 # Node ID c23f70bb791f4fc23524853580dba12b8efd7629 # Parent 54b13df9cd8796e300a1a42f3859bbe3f70cd35d change Index fj → java.until diff -r 54b13df9cd87 -r c23f70bb791f pom.xml --- a/pom.xml Sun Dec 07 14:54:27 2014 +0900 +++ b/pom.xml Sun Dec 07 15:24:30 2014 +0900 @@ -34,7 +34,7 @@ org.functionaljava functionaljava - 3.1 + 4.1 org.apache.maven.surefire diff -r 54b13df9cd87 -r c23f70bb791f src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/Index.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/Index.java Sun Dec 07 14:54:27 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/Index.java Sun Dec 07 15:24:30 2014 +0900 @@ -1,21 +1,16 @@ package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index; import java.util.Iterator; - -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NulIterator; +import java.util.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; -import fj.Ord; -import fj.P2; import fj.data.List; -import fj.data.Option; -import fj.data.TreeMap; public class Index { TreeMap>> indexList; public Index() { - this.indexList = TreeMap.empty(Ord.stringOrd); + this.indexList = new TreeMap>>(); } public Index(TreeMap>> indexList) { @@ -27,33 +22,29 @@ } public Index set(String key, String value, TreeNode node) { - Option>> indexOp = indexList.get(key); - if (indexOp.isNone()) { - TreeMap> index = TreeMap.empty(Ord.stringOrd); + TreeMap> index = indexList.get(key); + if (index == null) { + index = new TreeMap>(); List nodeList = List.nil(); List newNodeList = nodeList.cons(node); - TreeMap> newIndex = index.set(value, newNodeList); - TreeMap>> newIndexList = indexList.set(key, newIndex); - - - return new Index(newIndexList); + index.put(value, newNodeList); + indexList.put(key,index); + return this; } - TreeMap> index = indexOp.some(); - Option> nodeListOp = index.get(value); + List nodeList = index.get(value); List newNodeList; - if (nodeListOp.isSome()) { - List nodeList = nodeListOp.some(); + if (nodeList != null) { newNodeList = nodeList.cons(node); } else { - List nodeList = List.nil(); + nodeList = List.nil(); newNodeList = nodeList.cons(node); } - TreeMap> newIndex = index.set(value, newNodeList); - TreeMap>> newIndexList = indexList.set(key, newIndex); + index.put(value, newNodeList); + indexList.put(key, index); - return new Index(newIndexList); + return this; } @@ -85,36 +76,29 @@ public List get(String key, String value) { - Option>> indexOp = indexList.get(key); - if (indexOp.isNone()) + TreeMap> index = indexList.get(key); + if (index == null) return null; - TreeMap> index = indexOp.some(); - Option> nodeListOp = index.get(value); + List nodeList = index.get(value); - if (nodeListOp.isNone()) + if (nodeList == null) return List.nil(); - return nodeListOp.some(); + return nodeList; } public Iterator getAll(String key){ - Option>> indexOp = indexList.get(key); - if (indexOp.isNone()) + TreeMap> index = indexList.get(key); + if (index == null) return null; - TreeMap> index = indexOp.some(); - if (!index.isEmpty()) - return new NulIterator(); - - return new Iterator(){ - Iterator>> treeMapIterator = index.iterator(); + Iterator treeMapKeys = index.keySet().iterator(); List nodeList = List.nil(); TreeNode node; - @Override public boolean hasNext() { @@ -124,8 +108,9 @@ return true; } - for (;treeMapIterator.hasNext();) { - nodeList = treeMapIterator.next()._2(); + for (;treeMapKeys.hasNext();) { + String key = treeMapKeys.next(); + nodeList = index.get(key); node = nodeList.head(); nodeList = nodeList.tail(); return true; diff -r 54b13df9cd87 -r c23f70bb791f src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/ParentIndex.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/ParentIndex.java Sun Dec 07 14:54:27 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/ParentIndex.java Sun Dec 07 15:24:30 2014 +0900 @@ -1,20 +1,18 @@ package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index; import java.util.Iterator; - +import java.util.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeChildren; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.TreeMapOrd; -import fj.data.Option; -import fj.data.TreeMap; + public class ParentIndex { private final TreeMap parentIndex; public ParentIndex() { - parentIndex = TreeMap.empty(TreeMapOrd.treeNodeOrd); + parentIndex = new TreeMap(); } public ParentIndex(TreeMap parentIndex) { @@ -33,47 +31,44 @@ } public TreeNode get(TreeNode child) { - Option parentOp = parentIndex.get(child); - if (parentOp.isSome()) - return parentOp.some(); + TreeNode parent = parentIndex.get(child); + if (parent != null) + return parent; return null; } public ParentIndex set(TreeNode parent) { Iterator childrenIterator = parent.getChildren().iterator(); - TreeMap newParentIndex = parentIndex; for (; childrenIterator.hasNext();) { TreeNode child = childrenIterator.next(); - newParentIndex = newParentIndex.set(child, parent); + parentIndex.put(child, parent); } - return new ParentIndex(newParentIndex); + return this; } public ParentIndex delete(TreeNode child) { - TreeMap newParentIndex = parentIndex.delete(child); - return new ParentIndex(newParentIndex); + parentIndex.remove(child); + return this; } public ParentIndex deleteAllChildren(TreeNode parentNode) { TreeNodeChildren children = parentNode.getChildren(); Iterator childrenIterator = children.iterator(); - TreeMap newParentIndex = parentIndex; for (; childrenIterator.hasNext();) { TreeNode child = childrenIterator.next(); - newParentIndex = newParentIndex.delete(child); + parentIndex.remove(child); } - return new ParentIndex(newParentIndex); + return this; } public ParentIndex addAllChildren(TreeNode parentNode) { TreeNodeChildren children = parentNode.getChildren(); Iterator childrenIterator = children.iterator(); - TreeMap newParentIndex = parentIndex; for (; childrenIterator.hasNext();) { TreeNode child = childrenIterator.next(); - newParentIndex = newParentIndex.set(child, parentNode); + parentIndex.put(child, parentNode); } - return new ParentIndex(newParentIndex); + return this; } }