ExpressionEvaluator.java

package com.github.mygreen.sqlmapper.core.where.metamodel;

import com.github.mygreen.sqlmapper.metamodel.Visitor;
import com.github.mygreen.sqlmapper.metamodel.expression.Expression;
import com.github.mygreen.sqlmapper.metamodel.operator.FunctionOp;

import lombok.RequiredArgsConstructor;

/**
 * 演算子を評価するための処理。
 * <p>SQL関数を評価する際にサブ式を評価するために使用します。
 *
 * @since 0.3
 * @author T.TSUCHIE
 *
 */
@RequiredArgsConstructor
public class ExpressionEvaluator {

    private final FunctionOp operator;

    private final OperationHandler<?> handler;

    /**
     * 式ノードを評価し、SQLを組み立てます。
     *
     * @param expr 評価対象の式
     * @param visitor Visitor
     * @param context コンテキスト
     */
    public void evaluate(Expression<?> expr, Visitor<VisitorContext> visitor, VisitorContext context) {
        this.handler.invoke(operator, expr, visitor, context);
    }

}