private String getLuceneWhereClause(Relation relation) { String result; StringBuilder sb = new StringBuilder(); String column = relation.getLeftTerm().toString() .substring(relation.getLeftTerm().toString().lastIndexOf('.') + 1); String value = relation.getRightTerm().toSQLString(false); // Generate query for column String[] processedQuery = processLuceneQueryType(value); sb.append("{type:\""); sb.append(processedQuery[0]); sb.append("\",field:\""); sb.append(column); sb.append("\",value:\""); sb.append(processedQuery[1]); sb.append("\"},"); sb.replace(sb.length() - 1, sb.length(), ""); result = sb.toString(); return result; }
@Override public String toString() { StringBuilder sb = new StringBuilder("DELETE FROM "); if (catalogInc) { sb.append(Utils.toCaseSensitive(catalog)).append("."); } sb.append(Utils.toCaseSensitive(tableName.getName())); if (!whereClauses.isEmpty()) { sb.append(" WHERE "); for (Filter filter : whereClauses) { Relation relation = filter.getRelation(); String leftTerm = relation.getLeftTerm().getStringValue().substring(relation.getLeftTerm() .getStringValue().lastIndexOf('.') + 1, relation.getLeftTerm().getStringValue().length()); sb.append(Utils.toCaseSensitive(leftTerm)).append(relation.getOperator().toString()).append (relation.getRightTerm().toString()).append(" AND "); } sb.delete(sb.lastIndexOf(" AND"), sb.length()); } return sb.toString(); }
private void getStringShouldFunction(FunctionSelector function, Relation relation) { if (luceneIndexExist) { luceneIndex.append(","); } StringBuilder sbLucene = new StringBuilder(); sbLucene.append(" {type: \"boolean\", should:["); Selector left=relation.getLeftTerm(); String luceneOrIndex=""; boolean first=true; for(Selector s:function.getFunctionColumns().getSelectorList()) { if (!first){ sbLucene.append(","); } Relation r=new Relation(left, Operator.MATCH, s); luceneOrIndex = getLuceneWhereClause(r); sbLucene.append(luceneOrIndex); first=false; } sbLucene.append(" ]}"); luceneIndex.append(sbLucene); luceneIndexExist = true; }
private String getLeftTerm(Relation relation) { String leftTerm = relation.getLeftTerm().getStringValue().substring(relation.getLeftTerm() .getStringValue().lastIndexOf('.') + 1, relation.getLeftTerm().getStringValue().length()); return leftTerm; }
for (Relation relation : assignations) { String leftTerm = getLeftTerm(relation); if (ListSelector.class.isInstance(relation.getRightTerm())) { sb.append(Utils.toCaseSensitive(leftTerm)).append(relation.getOperator().toString()).append (relation.getRightTerm().toString().replaceAll("\\(", "[").replaceAll("\\)", "]")).append(", "); }else if(RelationSelector.class.isInstance(relation.getRightTerm())){ RelationSelector newRel=(RelationSelector)relation.getRightTerm(); String newLeft=((ColumnSelector)newRel.getRelation().getLeftTerm()).getColumnName().getName(); String newOp=newRel.getRelation().getOperator().toString(); String newRight; if (ListSelector.class.isInstance(newRel.getRelation().getRightTerm())){ newRight=newRel.getRelation().getRightTerm().toString().replaceAll("\\(", "[").replaceAll("\\)", "]"); }else{ newRight=newRel.getRelation().getRightTerm().toString(); sb.append(Utils.toCaseSensitive(leftTerm)).append(relation.getOperator().toString()).append (newRelation).append(", "); }else { sb.append(Utils.toCaseSensitive(leftTerm)).append(relation.getOperator().toString()).append (relation.getRightTerm().toString()).append(", "); Relation relation = filter.getRelation(); String leftTerm = getLeftTerm(relation); sb.append(Utils.toCaseSensitive(leftTerm)).append(relation.getOperator().toString()).append (relation.getRightTerm().toString()).append(" AND ");
switch (relation.getOperator()) { case BETWEEN: break; default: Selector right = relation.getRightTerm(); if (right instanceof FunctionSelector) { FunctionSelector function = (FunctionSelector) right; getStringRangeFunction(function, (ColumnSelector) relation.getLeftTerm()); }else if("should".equalsIgnoreCase(function.getFunctionName())) { getStringShouldFunction(function, relation); }else { ColumnSelector left = (ColumnSelector) relation.getLeftTerm(); String column = Utils.toCaseSensitive(left.getColumnName().getName()); sb.append(column).append(" ").append(relation.getOperator().toString()).append(" "); sb.append(function.toString()); ColumnSelector left = (ColumnSelector) relation.getLeftTerm(); String column = Utils.toCaseSensitive(left.getColumnName().getName()); sb.append(column).append(" ").append(relation.getOperator().toString()).append(" "); sb.append(Utils.getFormatType(left, right, session));