view src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/traverser/RedBlackTreeEvaluator.java @ 308:201cc75a9984

change Red Black Tree Edit Path Extends
author tatsuki
date Thu, 26 Jan 2017 15:23:25 +0900
parents
children a0bcbc9a1a46
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.jungle.traverser;

import jp.ac.u_ryukyu.ie.cr.jungle.core.Attributes;
import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath;
import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode;

/**
 * Created by e115731 on 2017/01/26.
 */
public class RedBlackTreeEvaluator implements Evaluator {
    private final String key;
    private final long v1;

    public RedBlackTreeEvaluator(NodePath path) {
        this.key = path.getKey();
        this.v1 = path.getValue().hashCode();
    }

    public RedBlackTreeEvaluator(String key, long searchValueHash) {
        this.key = key;
        this.v1 = searchValueHash;
    }

    @Override
    public Evaluation evaluate(TreeNode current, int pos) {
        Attributes attribute = current.getAttributes();
        long value = attribute.get(key).hashCode();
        Result result = null;
        Evaluator nextEvaluator = null;

        if (value - v1 < 0) {
            result = Result.LEFT;
            nextEvaluator = new RedBlackTreeEvaluator(key, v1);
        } else if (value - v1 > 0) {
            result = Result.RIGHT;
            nextEvaluator = new RedBlackTreeEvaluator(key, v1);
        } else {
            return new DefaultEvaluation(Result.GOAL, null);
        }
        return new DefaultEvaluation(result, nextEvaluator);
    }
}