Mercurial > hg > Members > tatsuki > bench > jungle-core
view src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/ParentIndex.java @ 158:89ed172137ab
fj Index fix?
author | one |
---|---|
date | Sun, 07 Dec 2014 19:01:08 +0900 |
parents | 20af7f25ef32 |
children | 6615db346bf5 |
line wrap: on
line source
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.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 TreeMap<TreeNode, TreeNode> parentIndex; public ParentIndex() { parentIndex = TreeMap.empty(TreeMapOrd.treeNodeOrd); } public ParentIndex(TreeMap<TreeNode, TreeNode> parentIndex) { this.parentIndex = parentIndex; } public boolean isEmpty(){ return parentIndex.isEmpty(); } public ParentIndex(ParentIndex parentIndex) { this.parentIndex = parentIndex.getParentIndex(); } public TreeMap<TreeNode, TreeNode> getParentIndex() { return parentIndex; } public TreeNode get(TreeNode child) { Option<TreeNode> parentOp = parentIndex.get(child); if (parentOp.isSome()) return parentOp.some(); return null; } public ParentIndex set(TreeNode parent) { Iterator<TreeNode> childrenIterator = parent.getChildren().iterator(); for (; childrenIterator.hasNext();) { TreeNode child = childrenIterator.next(); parentIndex = parentIndex.set(child, parent); } return this; } public ParentIndex delete(TreeNode child) { parentIndex = parentIndex.delete(child); return this; } public ParentIndex deleteAllChildren(TreeNode parentNode) { TreeNodeChildren children = parentNode.getChildren(); Iterator<TreeNode> childrenIterator = children.iterator(); for (; childrenIterator.hasNext();) { TreeNode child = childrenIterator.next(); parentIndex = parentIndex.delete(child); } return this; } public ParentIndex addAllChildren(TreeNode parentNode) { TreeNodeChildren children = parentNode.getChildren(); Iterator<TreeNode> childrenIterator = children.iterator(); for (; childrenIterator.hasNext();) { TreeNode child = childrenIterator.next(); parentIndex = parentIndex.set(child, parentNode); } return this; } }