Mercurial > hg > Members > shoshi > jungle > jungle-core
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); } }