Expression2FunctionConverter visitor = new Expression2FunctionConverter(lookupTable, idfac); Term atom = visitor.visitEx(condition); bodyAtoms.add((Function) atom); Expression2FunctionConverter converter = new Expression2FunctionConverter(lookupTable, idfac); Function filterFunction = converter.convert(conditions); bodyAtoms.add(filterFunction);
@Override public void visit(Column expression) { Term term = getVariable(expression); if (term != null) { /* * If the termName is not null, create a variable */ result = term; } else { // Constructs constant // if the columns contains a boolean value String columnName = expression.getColumnName(); // check whether it is an SQL boolean value String lowerCase = columnName.toLowerCase(); if (lowerCase.equals("true")) { result = fac.getBooleanConstant(true); } else if (lowerCase.equals("false")) { result = fac.getBooleanConstant(false); } else throw new RuntimeException( "Unable to find column name for variable: " + columnName); } }
Term t1 = visitEx(first); if (t1 == null) throw new RuntimeException("Unable to find column name for variable: " Term t2 = visitEx(second); if (expressions.size() == 3){ Expression third = expressions.get(2); t3 = visitEx(third); t1 = visitEx(first); Term out_string = visitEx(second); if (expressions.size() == 3) { Expression third = expressions.get(2); in_string = visitEx(third); Term first_string = visitEx(first); Term second_string = visitEx(second); Term second_string = visitEx(second);
Expression2FunctionConverter visitor = new Expression2FunctionConverter(lookupTable, idfac); Term atom = visitor.visitEx(item.getValue()); lookupTable.put(null, item.getKey(), atom);
@Override public void visit(InExpression expression) { Expression left = expression.getLeftExpression(); ExpressionList rightItemsList = (ExpressionList) expression.getRightItemsList(); List<EqualsTo> equalsToList = new ArrayList<>(); for (Expression item : rightItemsList.getExpressions()) { EqualsTo eq = new EqualsTo(); eq.setLeftExpression(left); eq.setRightExpression(item); equalsToList.add(eq); } int size = equalsToList.size(); if (size > 1) { OrExpression or = new OrExpression(equalsToList.get(size - 1), equalsToList.get(size - 2)); for (int i = size - 3; i >= 0; i--) { or = new OrExpression(equalsToList.get(i), or); } result = visitEx(or); } else { result = visitEx(equalsToList.get(0)); } }
@Override public void visit(LikeExpression likeExpression) { visitBinaryExpression(likeExpression); }
@Override public void visit(GreaterThanEquals expression) { visitBinaryExpression(expression); }
@Override public void visit(AndExpression andExpression) { visitBinaryExpression(andExpression); }
@Override public void visit(Between expression) { Expression left = expression.getLeftExpression(); Expression e1 = expression.getBetweenExpressionStart(); Expression e2 = expression.getBetweenExpressionEnd(); GreaterThanEquals gte = new GreaterThanEquals(); gte.setLeftExpression(left); gte.setRightExpression(e1); MinorThanEquals mte = new MinorThanEquals(); mte.setLeftExpression(left); mte.setRightExpression(e2); AndExpression e = new AndExpression(gte, mte); result = visitEx(e); }
@Override public void visit(IsNullExpression expression) { Column column = (Column)expression.getLeftExpression(); Term var = getVariable(column); if (var == null) { throw new RuntimeException( "Unable to find column name for variable: " + column + " in context " + expression); } if (!expression.isNot()) { result = fac.getFunctionIsNull(var); } else { result = fac.getFunctionIsNotNull(var); } }
@Override public void visit(RegExpMatchOperator expression) { visitBinaryExpression(expression); }
@Override public void visit(NotEqualsTo notEqualsTo) { visitBinaryExpression(notEqualsTo); }
@Override public void visit(OrExpression orExpression) { visitBinaryExpression(orExpression); }
@Override public void visit(Subtraction subtraction) { visitBinaryExpression(subtraction); }
@Override public void visit(MinorThan minorThan) { visitBinaryExpression(minorThan); }
@Override public void visit(GreaterThan expression) { visitBinaryExpression(expression); }
@Override public void visit(MinorThanEquals minorThanEquals) { visitBinaryExpression(minorThanEquals); }
@Override public void visit(EqualsTo expression) { visitBinaryExpression(expression); }
@Override public void visit(Multiplication multiplication) { visitBinaryExpression(multiplication); }