package org.aksw.jena_sparql_api.views;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BinaryOperator;
import org.apache.jena.sparql.expr.E_GreaterThan;
import org.apache.jena.sparql.expr.E_GreaterThanOrEqual;
import org.apache.jena.sparql.expr.E_LessThan;
import org.apache.jena.sparql.expr.E_LessThanOrEqual;
import org.apache.jena.sparql.expr.E_LogicalAnd;
import org.apache.jena.sparql.expr.E_LogicalOr;
import org.apache.jena.sparql.expr.Expr;
import org.apache.jena.sparql.expr.ExprFunction2;
import org.apache.jena.sparql.sse.Tags;
public class ExprFactoryUtils {
private static final Map<String, BinaryOperator<Expr>> binaryFactories = new HashMap<String, BinaryOperator<Expr>>();
public static final BinaryOperator<Expr> factoryLogicalAnd = (a, b) -> new E_LogicalAnd(a, b);
public static final BinaryOperator<Expr> factoryLogicalOr = (a, b) -> new E_LogicalOr(a, b);
public static final BinaryOperator<Expr> factoryLessThan = (a, b) -> new E_LessThan(a, b);
public static final BinaryOperator<Expr> factoryLessThanOrEqual = (a, b) -> new E_LessThanOrEqual(a, b);
public static final BinaryOperator<Expr> factoryGreaterThanOrEqual = (a, b) -> new E_GreaterThanOrEqual(a, b);
public static final BinaryOperator<Expr> factoryGreaterThan = (a, b) -> new E_GreaterThan(a, b);
static {
binaryFactories.put(Tags.symLT, factoryLessThan);
binaryFactories.put(Tags.symLE, factoryLessThanOrEqual);
binaryFactories.put(Tags.symGE, factoryGreaterThanOrEqual);
binaryFactories.put(Tags.symGT, factoryGreaterThan);
}
public static BinaryOperator<Expr> getFactory2(String tag) {
BinaryOperator<Expr> result = binaryFactories.get(tag);
return result;
}
public static BinaryOperator<Expr> createCopyFactory2(ExprFunction2 prototype) {
BinaryOperator<Expr> result = (a, b) -> ExprCopy.getInstance().copy(prototype, a, b);
return result;
}
}