# HG changeset patch # User one # Date 1419405282 -32400 # Node ID 1749338f236681fc53902548b11c9ba21163c4fa # Parent 6f7212808ad75ad3042c3c53d56789fccc4d14b5 until index diff -r 6f7212808ad7 -r 1749338f2366 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungle.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungle.java Wed Dec 24 15:05:09 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungle.java Wed Dec 24 16:14:42 2014 +0900 @@ -1,10 +1,10 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle; import java.util.Iterator; +import java.util.TreeMap; import java.util.concurrent.ConcurrentHashMap; import fj.data.List; -import fj.data.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Journal; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.NullJournal; diff -r 6f7212808ad7 -r 1749338f2366 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNode.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNode.java Wed Dec 24 15:05:09 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNode.java Wed Dec 24 16:14:42 2014 +0900 @@ -3,6 +3,7 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.AttributesContainer; public interface TreeNode extends AttributesContainer + { public TreeNodeChildren getChildren(); diff -r 6f7212808ad7 -r 1749338f2366 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultChangeSet.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultChangeSet.java Wed Dec 24 15:05:09 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultChangeSet.java Wed Dec 24 16:14:42 2014 +0900 @@ -1,7 +1,8 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction; +import java.util.TreeMap; + import fj.data.List; -import fj.data.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; diff -r 6f7212808ad7 -r 1749338f2366 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java Wed Dec 24 15:05:09 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java Wed Dec 24 16:14:42 2014 +0900 @@ -8,7 +8,7 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; -public class DefaultTreeNode implements TreeNode +public class DefaultTreeNode implements TreeNode, Comparable { //private final DefaultNode wrap; private List children; @@ -51,5 +51,11 @@ return new DefaultTreeNode(children,attrs); } + @Override + public int compareTo(Object o) { + + return o.hashCode() - this.hashCode(); + } + } diff -r 6f7212808ad7 -r 1749338f2366 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 Wed Dec 24 15:05:09 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/Index.java Wed Dec 24 16:14:42 2014 +0900 @@ -1,6 +1,7 @@ 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.NulIterator; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; @@ -8,121 +9,98 @@ 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) { this.indexList = indexList; } - 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); - indexList = indexList.set(key, newIndex); + 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); - indexList = indexList.set(key, newIndex); + index.put(value, newNodeList); + indexList.put(key, index); return this; } - -// public Index delete(String key, String value, TreeNode node) { -// Option>> indexOp = indexList.get(key); -// if (indexOp.isNone()) -// return this; -// -// TreeMap> index = indexOp.some(); -// TreeMap> newIndex = index; -// Option> nodeListOp = index.get(value); -// if (nodeListOp.isSome()) { -// List nodeList = nodeListOp.some(); -// List newNodeList = List.nil(); -// for (TreeNode indexingNode : nodeList) { -// if (indexingNode.equals(node)) -// newNodeList = newNodeList.cons(indexingNode); -// } -// -// newIndex = index.set(value, newNodeList); -// } else { -// return this; -// } -// TreeMap>> newIndexList = indexList.set(key, newIndex); -// return new Index(newIndexList); -// } - - + // public Index delete(String key, String value, TreeNode node) { + // Option>> indexOp = indexList.get(key); + // if (indexOp.isNone()) + // return this; + // + // TreeMap> index = indexOp.some(); + // TreeMap> newIndex = index; + // Option> nodeListOp = index.get(value); + // if (nodeListOp.isSome()) { + // List nodeList = nodeListOp.some(); + // List newNodeList = List.nil(); + // for (TreeNode indexingNode : nodeList) { + // if (indexingNode.equals(node)) + // newNodeList = newNodeList.cons(indexingNode); + // } + // + // newIndex = index.set(value, newNodeList); + // } else { + // return this; + // } + // TreeMap>> newIndexList = + // indexList.set(key, newIndex); + // return new Index(newIndexList); + // } 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()) - return List.nil(); - - return nodeListOp.some(); + return nodeList; } - - public Iterator getAll(String key){ + + public Iterator getAll(String key) { - Option>> indexOp = indexList.get(key); - if (indexOp.isNone()) + TreeMap> index = indexList.get(key); + if (index == null) return null; - - final TreeMap> index = indexOp.some(); + if (!index.isEmpty()) return new NulIterator(); - - return new Iterator(){ - - Iterator>> treeMapIterator = index.iterator(); - List nodeList = List.nil(); + return new Iterator() { + + Iterator treeMapIterator = index.get(key).iterator(); TreeNode node; - + @Override public boolean hasNext() { - - if (nodeList.isNotEmpty()) { - node = nodeList.head(); - nodeList = nodeList.tail(); - return true; - } - - for (;treeMapIterator.hasNext();) { - nodeList = treeMapIterator.next()._2(); - node = nodeList.head(); - nodeList = nodeList.tail(); + if (treeMapIterator.hasNext()) { + node = treeMapIterator.next(); return true; } return false; @@ -132,13 +110,13 @@ public TreeNode next() { return node; } - + }; - + } - + public TreeMap>> getIndex() { return indexList; } - + } diff -r 6f7212808ad7 -r 1749338f2366 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 Wed Dec 24 15:05:09 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/ParentIndex.java Wed Dec 24 16:14:42 2014 +0900 @@ -1,21 +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.Ord; -import fj.data.Option; -import fj.data.TreeMap; + public class ParentIndex { private TreeMap parentIndex; public ParentIndex() { - Ord aaa = TreeMapOrd.treeNodeOrd; - parentIndex = TreeMap.empty(aaa); + parentIndex = new TreeMap(); } public ParentIndex(TreeMap parentIndex) { @@ -35,23 +32,21 @@ } public TreeNode get(TreeNode child) { - Option parentOp = parentIndex.get(child); - if (parentOp.isSome()) - return parentOp.some(); - return null; + TreeNode parentNode = parentIndex.get(child); + return parentNode; } public ParentIndex set(TreeNode parent) { Iterator childrenIterator = parent.getChildren().iterator(); for (; childrenIterator.hasNext();) { TreeNode child = childrenIterator.next(); - parentIndex = parentIndex.set(child, parent); + parentIndex.put(child, parent); } return this; } public ParentIndex delete(TreeNode child) { - parentIndex = parentIndex.delete(child); + parentIndex.remove(child); return this; } @@ -60,7 +55,7 @@ Iterator childrenIterator = children.iterator(); for (; childrenIterator.hasNext();) { TreeNode child = childrenIterator.next(); - parentIndex = parentIndex.delete(child); + parentIndex.remove(child); } return this; } @@ -70,7 +65,7 @@ Iterator childrenIterator = children.iterator(); for (; childrenIterator.hasNext();) { TreeNode child = childrenIterator.next(); - parentIndex = parentIndex.set(child, parentNode); + parentIndex.put(child, parentNode); } return this; }