view src/main/java/alice/jungle/persistent/PersistentTreeContext.java @ 193:89c15aa2bc6d

change transaction
author tatsuki
date Fri, 20 Mar 2015 16:18:42 +0900
parents src/main/java/alice/jungle/persistent/PersistentChangeSet.java@5d0734fd859d
children fd4064e110bd
line wrap: on
line source

package alice.jungle.persistent;

import fj.Ord;
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.TreeContext;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex;

public class PersistentTreeContext implements TreeContext {
  private final TreeNode root;
  private final TreeContext previous;
  private final ChangeList changeList;
  private final String uuid;
  private final long revision;
  private final String treeName;
  private TreeMap<String, TreeMap<String, TreeMap<TreeNode, TreeNode>>> indexList;
  private TreeMap<TreeNode, TreeNode> parentIndex;

  public PersistentTreeContext(TreeNode _node, TreeContext _prev, ChangeList _log, String _uuid, String _treeName,
      long _revision, TreeMap<String, TreeMap<String, TreeMap<TreeNode, TreeNode>>> indexList,
      TreeMap<TreeNode, TreeNode> parentIndex) {
    root = _node;
    previous = _prev;
    changeList = _log;
    uuid = _uuid;
    revision = _revision;
    treeName = _treeName;
    this.indexList = indexList;
    this.parentIndex = parentIndex;
  }

  @Override
  public TreeNode getRoot() {
    return root;
  }

  @Override
  public TreeContext prev() {
    return previous;
  }

  @Override
  public ChangeList getChangeList() {
    return changeList;
  }

  @Override
  public String uuid() {
    return uuid;
  }

  @Override
  public long revision() {
    return revision;
  }

  @Override
  public Iterable<TreeOperation> getOperations() {
    return changeList;
  }

  public String getTreeName() {
    return treeName;
  }
  @Override
  public TreeMap<String, TreeMap<String, TreeMap<TreeNode, TreeNode>>> getIndex() {
    return indexList;
  }

  @Override
  public ParentIndex getParentIndex() {
    return new ParentIndex(parentIndex);
  }

    @Override
    public void setIndex(TreeMap<String, TreeMap<String, TreeMap<TreeNode, TreeNode>>> indexList) {
        this.indexList = indexList;
    }

    @Override
    public void setParentIndex(ParentIndex parentIndex) {
        this.parentIndex = parentIndex.getParentIndex();
    }

}