Sha256: ada73bb6b249c903db56de86a27711f88f5d7337b5ac4a8e5a4a762ee967c668

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

package org.embulk.filter.calc;

import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;
import org.embulk.spi.Schema;

public class CalcConfigChecker
{
    private String name;
    private String formula;
    private Schema inputSchema;

    public CalcConfigChecker(String name, String formula, Schema inputSchema)
    {
        this.formula = formula;
        this.name = name;
        this.inputSchema = inputSchema;
    }

    public Boolean validateFormula()
    {
        inputSchema.lookupColumn(name); // throw Exception

        ANTLRInputStream input = new ANTLRInputStream(this.formula);
        CalculatorLexer lexer = new CalculatorLexer(input);
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        CalculatorParser parser = new CalculatorParser(tokens);
        ConfigErrorListener errorListener = new ConfigErrorListener(name);
        parser.removeErrorListeners();
        parser.addErrorListener(errorListener);
        ParseTree tree = parser.expr();
        CalcConfigCheckVisitor eval = new CalcConfigCheckVisitor(inputSchema);
        eval.visit(tree);
        return true;
    }
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
embulk-filter-calc-0.1.0 src/main/java/org/embulk/filter/calc/CalcConfigChecker.java