private static QueryCriteria parseStatement(LinkedList<String> postFixStatement) throws QueryFormulationException { Stack<QueryCriteria> stack = new Stack<QueryCriteria>(); for (String item : postFixStatement) { if (item.equals("AND")) { BooleanQueryCriteria bQC = new BooleanQueryCriteria(); bQC.addTerm(stack.pop()); bQC.addTerm(stack.pop()); stack.push(bQC); } else if (item.equals("OR")) { BooleanQueryCriteria bQC = new BooleanQueryCriteria(); bQC.setOperator(BooleanQueryCriteria.OR); bQC.addTerm(stack.pop()); bQC.addTerm(stack.pop()); stack.push(bQC); } else if (item.equals("NOT")) { BooleanQueryCriteria bQC = new BooleanQueryCriteria(); bQC.setOperator(BooleanQueryCriteria.NOT); bQC.addTerm(stack.pop()); stack.push(bQC); } else { stack.push(new Expression(item).convertToQueryCriteria()); } } return stack.pop(); }
private QueryCriteria handleQueryCriteria(QueryCriteria qc) throws QueryFormulationException { if (qc instanceof BooleanQueryCriteria) { LinkedList<QueryCriteria> qcList = new LinkedList<QueryCriteria>(); for (QueryCriteria criteria : ((BooleanQueryCriteria) qc).getTerms()) { qcList.add(this.handleQueryCriteria(criteria)); } BooleanQueryCriteria bqc = new BooleanQueryCriteria(); bqc.setOperator(((BooleanQueryCriteria) qc).getOperator()); bqc.setElementName(qc.getElementName()); for (QueryCriteria criteria : qcList) { bqc.addTerm(criteria); } return bqc; }else if (qc.getElementName().equals(elementName) && qc instanceof TermQueryCriteria) { return this.handleTermQueryCriteria((TermQueryCriteria) qc); }else if (qc.getElementName().equals(elementName) && qc instanceof RangeQueryCriteria) { return this.handleRangeQueryCriteria((RangeQueryCriteria) qc); }else { return qc; } }
public static Map<String, Object> getXmlRpcQueryCriteria(QueryCriteria criteria) { Map<String, Object> criteriaHash = new Hashtable<String, Object>(); criteriaHash.put("class", criteria.getClass().getCanonicalName()); if (criteria instanceof TermQueryCriteria) { criteriaHash.put("elementName", criteria.getElementName()); criteriaHash.put("elementValue", ((TermQueryCriteria) criteria).getValue()); } else if (criteria instanceof RangeQueryCriteria) { criteriaHash.put("elementName", criteria.getElementName()); criteriaHash.put("elementStartValue", ((RangeQueryCriteria) criteria).getStartValue() != null ? ((RangeQueryCriteria) criteria).getStartValue() : ""); criteriaHash.put("elementEndValue", ((RangeQueryCriteria) criteria).getEndValue() != null ? ((RangeQueryCriteria) criteria).getEndValue() : ""); criteriaHash.put("inclusive", Boolean.toString(((RangeQueryCriteria) criteria).getInclusive())); } else if (criteria instanceof BooleanQueryCriteria) { BooleanQueryCriteria boolQuery = (BooleanQueryCriteria) criteria; criteriaHash.put("operator", boolQuery.getOperator()); Vector<Map<String, Object>> termsHash = new Vector<Map<String, Object>>(); List<QueryCriteria> terms = boolQuery.getTerms(); for (QueryCriteria term : terms) { Map<String, Object> termHash = getXmlRpcQueryCriteria(term); termsHash.add(termHash); } criteriaHash.put("terms", termsHash); } return criteriaHash; }
public static String getInfixCriteriaString(List<QueryCriteria> criteriaList) throws QueryFormulationException { if (criteriaList.size() > 1) { return getInfixCriteriaString(new BooleanQueryCriteria(criteriaList, BooleanQueryCriteria.AND)); } else if (criteriaList.size() == 1) { return getInfixCriteriaString(criteriaList.get(0)); } else { return null; } }
public static Map<String, Object> getXmlRpcQueryCriteria(QueryCriteria criteria) { Map<String, Object> criteriaHash = new Hashtable<String, Object>(); criteriaHash.put("class", criteria.getClass().getCanonicalName()); if (criteria instanceof TermQueryCriteria) { criteriaHash.put("elementName", criteria.getElementName()); criteriaHash.put("elementValue", ((TermQueryCriteria) criteria).getValue()); } else if (criteria instanceof RangeQueryCriteria) { criteriaHash.put("elementName", criteria.getElementName()); criteriaHash.put("elementStartValue", ((RangeQueryCriteria) criteria).getStartValue() != null ? ((RangeQueryCriteria) criteria).getStartValue() : ""); criteriaHash.put("elementEndValue", ((RangeQueryCriteria) criteria).getEndValue() != null ? ((RangeQueryCriteria) criteria).getEndValue() : ""); criteriaHash.put("inclusive", Boolean.toString(((RangeQueryCriteria) criteria).getInclusive())); } else if (criteria instanceof BooleanQueryCriteria) { BooleanQueryCriteria boolQuery = (BooleanQueryCriteria) criteria; criteriaHash.put("operator", boolQuery.getOperator()); Vector<Map<String, Object>> termsHash = new Vector<Map<String, Object>>(); List<QueryCriteria> terms = boolQuery.getTerms(); for (QueryCriteria term : terms) { Map<String, Object> termHash = getXmlRpcQueryCriteria(term); termsHash.add(termHash); } criteriaHash.put("terms", termsHash); } return criteriaHash; }
public static String getInfixCriteriaString(List<QueryCriteria> criteriaList) throws QueryFormulationException { if (criteriaList.size() > 1) { return getInfixCriteriaString(new BooleanQueryCriteria(criteriaList, BooleanQueryCriteria.AND)); } else if (criteriaList.size() == 1) { return getInfixCriteriaString(criteriaList.get(0)); } else { return null; } }
private static QueryCriteria parseStatement(LinkedList<String> postFixStatement) throws QueryFormulationException { Stack<QueryCriteria> stack = new Stack<QueryCriteria>(); for (String item : postFixStatement) { if (item.equals("AND")) { BooleanQueryCriteria bQC = new BooleanQueryCriteria(); bQC.addTerm(stack.pop()); bQC.addTerm(stack.pop()); stack.push(bQC); } else if (item.equals("OR")) { BooleanQueryCriteria bQC = new BooleanQueryCriteria(); bQC.setOperator(BooleanQueryCriteria.OR); bQC.addTerm(stack.pop()); bQC.addTerm(stack.pop()); stack.push(bQC); } else if (item.equals("NOT")) { BooleanQueryCriteria bQC = new BooleanQueryCriteria(); bQC.setOperator(BooleanQueryCriteria.NOT); bQC.addTerm(stack.pop()); stack.push(bQC); } else { stack.push(new Expression(item).convertToQueryCriteria()); } } return stack.pop(); }
private QueryCriteria handleQueryCriteria(QueryCriteria qc) throws QueryFormulationException { if (qc instanceof BooleanQueryCriteria) { LinkedList<QueryCriteria> qcList = new LinkedList<QueryCriteria>(); for (QueryCriteria criteria : ((BooleanQueryCriteria) qc).getTerms()) { qcList.add(this.handleQueryCriteria(criteria)); } BooleanQueryCriteria bqc = new BooleanQueryCriteria(); bqc.setOperator(((BooleanQueryCriteria) qc).getOperator()); bqc.setElementName(qc.getElementName()); for (QueryCriteria criteria : qcList) { bqc.addTerm(criteria); } return bqc; }else if (qc.getElementName().equals(elementName) && qc instanceof TermQueryCriteria) { return this.handleTermQueryCriteria((TermQueryCriteria) qc); }else if (qc.getElementName().equals(elementName) && qc instanceof RangeQueryCriteria) { return this.handleRangeQueryCriteria((RangeQueryCriteria) qc); }else { return qc; } }
if (criteria instanceof BooleanQueryCriteria) { BooleanQueryCriteria bqc = (BooleanQueryCriteria) criteria; List<QueryCriteria> terms = bqc.getTerms(); switch(bqc.getOperator()){ case 0: returnString.append("(").append(getInfixCriteriaString(terms.get(0))); break; case 2: QueryCriteria qc = bqc.getTerms().get(0); if (qc instanceof TermQueryCriteria) { TermQueryCriteria tqc = (TermQueryCriteria) qc;
getProductSql.append(this.getSqlQuery(query.getCriteria().get(0), type)); }else { getProductSql.append(this.getSqlQuery(new BooleanQueryCriteria(query.getCriteria(), BooleanQueryCriteria .AND), type)); getProductSql.append(this.getSqlQuery(query.getCriteria().get(0), type)); } else { getProductSql.append(this.getSqlQuery(new BooleanQueryCriteria(query.getCriteria(), BooleanQueryCriteria .AND), type));
((RangeQueryCriteria) criteria).setInclusive(Boolean.parseBoolean((String) criteriaHash.get("inclusive"))); } else if (criteriaHash.get("class").equals(BooleanQueryCriteria.class.getCanonicalName())) { criteria = new BooleanQueryCriteria(); try { ((BooleanQueryCriteria) criteria).setOperator((Integer) criteriaHash.get("operator")); } catch (QueryFormulationException e) { System.out.println("Error generating Boolean Query."); QueryCriteria termCriteria = getQueryCriteriaFromXmlRpc(term); try { ((BooleanQueryCriteria) criteria).addTerm(termCriteria); } catch (QueryFormulationException e) { System.out.println("Error generating Boolean Query.");
if (criteria instanceof BooleanQueryCriteria) { BooleanQueryCriteria bqc = (BooleanQueryCriteria) criteria; List<QueryCriteria> terms = bqc.getTerms(); switch(bqc.getOperator()){ case 0: returnString.append("(").append(getInfixCriteriaString(terms.get(0))); break; case 2: QueryCriteria qc = bqc.getTerms().get(0); if (qc instanceof TermQueryCriteria) { TermQueryCriteria tqc = (TermQueryCriteria) qc;
getProductSql.append(this.getSqlQuery(query.getCriteria().get(0), type)); }else { getProductSql.append(this.getSqlQuery(new BooleanQueryCriteria(query.getCriteria(), BooleanQueryCriteria .AND), type)); getProductSql.append(this.getSqlQuery(query.getCriteria().get(0), type)); } else { getProductSql.append(this.getSqlQuery(new BooleanQueryCriteria(query.getCriteria(), BooleanQueryCriteria .AND), type));
((RangeQueryCriteria) criteria).setInclusive(Boolean.parseBoolean((String) criteriaHash.get("inclusive"))); } else if (criteriaHash.get("class").equals(BooleanQueryCriteria.class.getCanonicalName())) { criteria = new BooleanQueryCriteria(); try { ((BooleanQueryCriteria) criteria).setOperator((Integer) criteriaHash.get("operator")); } catch (QueryFormulationException e) { System.out.println("Error generating Boolean Query."); QueryCriteria termCriteria = getQueryCriteriaFromXmlRpc(term); try { ((BooleanQueryCriteria) criteria).addTerm(termCriteria); } catch (QueryFormulationException e) { System.out.println("Error generating Boolean Query.");
if (queryCriteria instanceof BooleanQueryCriteria) { BooleanQueryCriteria bqc = (BooleanQueryCriteria) queryCriteria; if (bqc.getOperator() == BooleanQueryCriteria.NOT) { if (!this.productIdString) { sqlQuery.append("SELECT DISTINCT product_id FROM ").append(type.getName()) .append("_metadata WHERE product_id ").append("NOT IN (") .append(this.getSqlQuery(bqc.getTerms().get(0), type)).append(")"); } else { sqlQuery.append("SELECT DISTINCT products.product_id FROM products,").append(type.getName()) .append("_metadata").append(" WHERE products.product_id=").append(type.getName()) .append("_metadata.product_id").append(" AND products.product_id NOT IN (") .append(this.getSqlQuery(bqc.getTerms().get (0), type)).append(")"); sqlQuery.append("(").append(this.getSqlQuery(bqc.getTerms().get(0), type)); String op = bqc.getOperator() == BooleanQueryCriteria.AND ? "INTERSECT" : "UNION"; for (int i = 1; i < bqc.getTerms().size(); i++) { sqlQuery.append(") ").append(op).append(" (").append(this.getSqlQuery(bqc.getTerms().get(i), type));
public QueryCriteria convertToQueryCriteria() throws QueryFormulationException { switch (this.op) { case GREATER_THAN: return new RangeQueryCriteria(this.key, this.val, null, false); case LESS_THAN: return new RangeQueryCriteria(this.key, null, this.val, false); case EQUAL_TO: return new TermQueryCriteria(this.key, this.val); case NOT_EQUAL_TO: BooleanQueryCriteria notEqBQC = new BooleanQueryCriteria(); notEqBQC.setOperator(BooleanQueryCriteria.NOT); notEqBQC.addTerm(new TermQueryCriteria(this.key, this.val)); return notEqBQC; case GREATER_THAN_OR_EQUAL_TO: return new RangeQueryCriteria(this.key, this.val, null, true); case LESS_THAN_OR_EQUAL_TO: return new RangeQueryCriteria(this.key, null, this.val, true); } throw new QueryFormulationException( "Was not able to form query . . . probably an invalid operator -- " + this.toString()); }
if (queryCriteria instanceof BooleanQueryCriteria) { BooleanQueryCriteria bqc = (BooleanQueryCriteria) queryCriteria; if (bqc.getOperator() == BooleanQueryCriteria.NOT) { if (!this.productIdString) { sqlQuery.append("SELECT DISTINCT product_id FROM ").append(type.getName()) .append("_metadata WHERE product_id ").append("NOT IN (") .append(this.getSqlQuery(bqc.getTerms().get(0), type)).append(")"); } else { sqlQuery.append("SELECT DISTINCT products.product_id FROM products,").append(type.getName()) .append("_metadata").append(" WHERE products.product_id=").append(type.getName()) .append("_metadata.product_id").append(" AND products.product_id NOT IN (") .append(this.getSqlQuery(bqc.getTerms().get (0), type)).append(")"); sqlQuery.append("(").append(this.getSqlQuery(bqc.getTerms().get(0), type)); String op = bqc.getOperator() == BooleanQueryCriteria.AND ? "INTERSECT" : "UNION"; for (int i = 1; i < bqc.getTerms().size(); i++) { sqlQuery.append(") ").append(op).append(" (").append(this.getSqlQuery(bqc.getTerms().get(i), type));
public QueryCriteria convertToQueryCriteria() throws QueryFormulationException { switch (this.op) { case GREATER_THAN: return new RangeQueryCriteria(this.key, this.val, null, false); case LESS_THAN: return new RangeQueryCriteria(this.key, null, this.val, false); case EQUAL_TO: return new TermQueryCriteria(this.key, this.val); case NOT_EQUAL_TO: BooleanQueryCriteria notEqBQC = new BooleanQueryCriteria(); notEqBQC.setOperator(BooleanQueryCriteria.NOT); notEqBQC.addTerm(new TermQueryCriteria(this.key, this.val)); return notEqBQC; case GREATER_THAN_OR_EQUAL_TO: return new RangeQueryCriteria(this.key, this.val, null, true); case LESS_THAN_OR_EQUAL_TO: return new RangeQueryCriteria(this.key, null, this.val, true); } throw new QueryFormulationException( "Was not able to form query . . . probably an invalid operator -- " + this.toString()); }
BooleanQuery.Builder booleanQuery = new BooleanQuery.Builder(); BooleanClause.Occur occur; switch (((BooleanQueryCriteria) queryCriteria).getOperator()) { case BooleanQueryCriteria.AND: occur = BooleanClause.Occur.MUST; occur = BooleanClause.Occur.MUST_NOT; booleanQuery.add(new WildcardQuery(new Term(((BooleanQueryCriteria) queryCriteria) .getTerms().get(0).getElementName(), "*")), BooleanClause.Occur.SHOULD); break; default: throw new CatalogException("Invalid BooleanQueryCriteria opertor [" + ((BooleanQueryCriteria) queryCriteria).getOperator() + "]"); for (QueryCriteria qc : ((BooleanQueryCriteria) queryCriteria).getTerms()) { booleanQuery.add(this.getQuery(qc), occur);
((RangeQueryCriteria)queryCriteria).setInclusive(avroQueryCriteria.getInclusive()); }else if(avroQueryCriteria.getClassName().equals(BooleanQueryCriteria.class.getCanonicalName())){ queryCriteria = new BooleanQueryCriteria(); try{ ((BooleanQueryCriteria)queryCriteria).setOperator(avroQueryCriteria.getOperator()); } catch (QueryFormulationException e){ System.out.println("Error generating Boolean Query."); for (AvroQueryCriteria aqc : avroQueryCriterias){ try { ((BooleanQueryCriteria)queryCriteria).addTerm(getQueryCriteria(aqc)); } catch (QueryFormulationException e) { System.out.println("Error generating Boolean Query.");