All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.aerospike.dsl.ConditionTranslator Maven / Gradle / Ivy

The newest version!
package com.aerospike.dsl;

import com.aerospike.client.exp.Exp;
import com.aerospike.client.exp.Expression;
import com.aerospike.dsl.annotation.Beta;
import com.aerospike.dsl.exception.AerospikeDSLException;
import com.aerospike.dsl.model.AbstractPart;
import lombok.experimental.UtilityClass;
import org.antlr.v4.runtime.CharStreams;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;

@UtilityClass
public class ConditionTranslator {

    @Beta
    public static Expression translate(String input) {
        ConditionLexer lexer = new ConditionLexer(CharStreams.fromString(input));
        ConditionParser parser = new ConditionParser(new CommonTokenStream(lexer));
        ParseTree tree = parser.parse();

        ExpressionConditionVisitor visitor = new ExpressionConditionVisitor();
        AbstractPart abstractPart = visitor.visit(tree);

        // When we can't identify a specific case of syntax error, we throw a generic DSL syntax error instead of NPE
        if (abstractPart == null) {
            throw new AerospikeDSLException("Could not parse given input, wrong syntax");
        }
        Exp expResult = abstractPart.getExp();
        return Exp.build(expResult);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy