view src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/node/redBlackTree/EmptyTreeNode.java @ 329:2a0cb1f0ba4e

rename Error package
author kono
date Sat, 08 Jul 2017 21:05:55 +0900
parents 1f929fe9c153
children
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.redBlackTree;

import jp.ac.u_ryukyu.ie.cr.jungle.data.treemap.Rotate;
import jp.ac.u_ryukyu.ie.cr.jungle.data.treemap.TreeMap;
import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode;
import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error;
import org.junit.Assert;
import org.junit.Test;

import java.nio.ByteBuffer;


public class EmptyTreeNode extends ColorlessTreeNode {

    public EmptyTreeNode() {
        super(null, null, null, null, null);
    }

    public EmptyTreeNode(ByteBuffer value) {
        super(null, null, value, null, null);
    }

    @Override
    public ColorlessTreeNode left() {
        return new EmptyTreeNode();
    }

    @Override
    public ColorlessTreeNode right() {
        return new EmptyTreeNode();
    }

    @Override
    public TreeNode createNewNode() {
        return new EmptyTreeNode();
    }

    @Override
    protected RebuildNode deleteNode() {
        return new RebuildNode(false, this);
    }

    @Override
    public Either<Error, TreeNode> appendRootNode() {
        return null;
    }

    @Override
    public int getHash() {
        return 0;
    }

    @Override
    public int compareTo(TreeNode o) {
        return 0;
    }

    @Override
    public boolean isRed() {
        return false;
    }

    @Override
    public boolean empty() {
        return true;
    }

    @Override
    protected ColorlessTreeNode insBalance() {
        return this;
    }

    @Override
    public Rotate checkRotate(Rotate side) {
        return Rotate.N;
    }

    @Override
    public ColorlessTreeNode createNode(TreeMap<String, ByteBuffer> newAttrs, String insertKey, ByteBuffer insertValue, ColorlessTreeNode left, ColorlessTreeNode right) {
        if (newAttrs == null)
            newAttrs = new TreeMap<>();
        return new RedTreeNode(newAttrs, insertKey, insertValue, new EmptyTreeNode(), new EmptyTreeNode());
    }

    @Override
    @Test
    public int checkDepth(int count, int minCount) { // test method
        if (count < minCount | minCount == 0)
            minCount = count;
        System.out.println("depth = " + count);

        Assert.assertTrue(count <= 2 * minCount);
        return minCount;
    }

    @Override
    protected RebuildNode replaceNode(ColorlessTreeNode parent) {
        return new RebuildNode(false, this);
    }

}