view src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/RedBlackTreeNodePath.java @ 310:474728dcfdb8

add PathType
author tatsuki
date Thu, 26 Jan 2017 23:44:14 +0900
parents f8e75ef7ac5d
children a0529572fbcb
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath;


import jp.ac.u_ryukyu.ie.cr.jungle.store.NulIterator;
import jp.ac.u_ryukyu.ie.cr.jungle.util.Pair;

import java.nio.ByteBuffer;
import java.util.Iterator;

public class RedBlackTreeNodePath implements NodePath {

    private final String key;
    private final ByteBuffer value;
    private final PathType type;

    public RedBlackTreeNodePath() {
        this.key = "default";
        this.value = ByteBuffer.wrap("default".getBytes());
        this.type = PathType.RedBlack;
    }

    public RedBlackTreeNodePath(String key, ByteBuffer value) {
        this.key = key;
        this.value = value;
        this.type = PathType.RedBlack;
    }

    private RedBlackTreeNodePath(String key, ByteBuffer value, PathType type) {
        this.key = key;
        this.value = value;
        this.type = type;
    }

    @Override
    public String getKey() {
        return key;
    }

    @Override
    public ByteBuffer getValue() {
        return value;
    }

    @Override
    public PathType getPathType() {
        return type;
    }

    @Override
    public NodePath setType(PathType type) {
        return new RedBlackTreeNodePath(this.getKey(), this.getValue(), type);
    }

    //以下使わない
    @Override
    public Iterator<Integer> iterator() {
        return new NulIterator<>();
    }

    @Override
    public int get(int index) {
        return -2;
    }

    @Override
    public NodePath add(int pos) {
        return null;
    }

    @Override
    public NodePath addHead(int pos) {
        return null;
    }

    @Override
    public Pair<Integer, NodePath> pop() {
        return null;
    }

    @Override
    public Pair<Integer, NodePath> last() {
        return null;
    }

    @Override
    public String toString() {
        return key + value;
    }

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


    //PATHの一番後ろを取り除いたPATHを新しく作って返す
// EXAMPLE <0,0,3> → <0,0>
    @Override
    public NodePath tail() {
        return null;
    }

}