view src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/ParentIndex.java @ 168:1749338f2366 util index

until index
author one
date Wed, 24 Dec 2014 16:14:42 +0900
parents 6615db346bf5
children
line wrap: on
line source

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;


public class ParentIndex {

  private TreeMap<TreeNode, TreeNode> parentIndex;

  public ParentIndex() {
    parentIndex =  new TreeMap<TreeNode,TreeNode>();
  }

  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) {
    TreeNode parentNode = parentIndex.get(child);
    return parentNode;
  }

  public ParentIndex set(TreeNode parent) {
    Iterator<TreeNode> childrenIterator = parent.getChildren().iterator();
    for (; childrenIterator.hasNext();) {
      TreeNode child = childrenIterator.next();
      parentIndex.put(child, parent);
    }
    return this;
  }

  public ParentIndex delete(TreeNode child) {
    parentIndex.remove(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.remove(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.put(child, parentNode);
    }
    return this;
  }

}