/** * Builds a String representing the GROUP BY component of the Sql query. * * @param q the Query * @param schema the DatabaseSchema in which to look up metadata * @param state a State object * @return a String * @throws ObjectStoreException if something goes wrong */ protected static String buildGroupBy(Query q, DatabaseSchema schema, State state) throws ObjectStoreException { StringBuffer retval = new StringBuffer(); boolean needComma = false; for (QueryNode node : q.getGroupBy()) { retval.append(needComma ? ", " : " GROUP BY "); needComma = true; if (node instanceof QueryClass) { queryClassToString(retval, (QueryClass) node, q, schema, NO_ALIASES_ALL_FIELDS, state); } else { queryEvaluableToString(retval, (QueryEvaluable) node, q, state); } } return retval.toString(); }
/** * Builds a String representing the GROUP BY component of the Sql query. * * @param q the Query * @param schema the DatabaseSchema in which to look up metadata * @param state a State object * @return a String * @throws ObjectStoreException if something goes wrong */ protected static String buildGroupBy(Query q, DatabaseSchema schema, State state) throws ObjectStoreException { StringBuffer retval = new StringBuffer(); boolean needComma = false; for (QueryNode node : q.getGroupBy()) { retval.append(needComma ? ", " : " GROUP BY "); needComma = true; if (node instanceof QueryClass) { queryClassToString(retval, (QueryClass) node, q, schema, NO_ALIASES_ALL_FIELDS, state); } else { queryEvaluableToString(retval, (QueryEvaluable) node, q, state); } } return retval.toString(); }
queryClassToString(retval, (QueryClass) node, q, schema, kind, state); } else if (node instanceof QueryEvaluable) { if (needComma) {
queryClassToString(retval, (QueryClass) node, q, schema, kind, state); } else if (node instanceof QueryEvaluable) { if (needComma) {
/** * Converts a ClassConstraint object into a String suitable for putting in an SQL query. * * @param state the current SqlGenerator state * @param buffer the StringBuffer to place text into * @param c the ClassConstraint object * @param q the Query * @param schema the DatabaseSchema in which to look up metadata * @throws ObjectStoreException if something goes wrong */ protected static void classConstraintToString(State state, StringBuffer buffer, ClassConstraint c, Query q, DatabaseSchema schema) throws ObjectStoreException { QueryClass arg1 = c.getArg1(); QueryClass arg2QC = c.getArg2QueryClass(); InterMineObject arg2O = c.getArg2Object(); queryClassToString(buffer, arg1, q, schema, ID_ONLY, state); buffer.append(" " + c.getOp().toString() + " "); if (arg2QC != null) { queryClassToString(buffer, arg2QC, q, schema, ID_ONLY, state); } else if (arg2O.getId() != null) { objectToString(buffer, arg2O); } else { throw new ObjectStoreException("ClassConstraint cannot contain an InterMineObject" + " without an ID set"); } }
/** * Converts a ClassConstraint object into a String suitable for putting in an SQL query. * * @param state the current SqlGenerator state * @param buffer the StringBuffer to place text into * @param c the ClassConstraint object * @param q the Query * @param schema the DatabaseSchema in which to look up metadata * @throws ObjectStoreException if something goes wrong */ protected static void classConstraintToString(State state, StringBuffer buffer, ClassConstraint c, Query q, DatabaseSchema schema) throws ObjectStoreException { QueryClass arg1 = c.getArg1(); QueryClass arg2QC = c.getArg2QueryClass(); InterMineObject arg2O = c.getArg2Object(); queryClassToString(buffer, arg1, q, schema, ID_ONLY, state); buffer.append(" " + c.getOp().toString() + " "); if (arg2QC != null) { queryClassToString(buffer, arg2QC, q, schema, ID_ONLY, state); } else if (arg2O.getId() != null) { objectToString(buffer, arg2O); } else { throw new ObjectStoreException("ClassConstraint cannot contain an InterMineObject" + " without an ID set"); } }
queryEvaluableToString(left, subQCEval, q, state); } else { queryClassToString(left, subQCClass, q, schema, QUERY_SUBQUERY_CONSTRAINT, state);
queryEvaluableToString(left, subQCEval, q, state); } else { queryClassToString(left, subQCClass, q, schema, QUERY_SUBQUERY_CONSTRAINT, state);
} else { StringBuffer lhsBuffer = new StringBuffer(); queryClassToString(lhsBuffer, (QueryClass) c.getQueryNode(), q, schema, ID_ONLY, state); leftHandSide = lhsBuffer.toString();
queryClassToString(buffer, qc, q, schema, QUERY_SUBQUERY_CONSTRAINT, state); } else { queryClassToString(buffer, qc, q, schema, NO_ALIASES_ALL_FIELDS, state);
queryClassToString(buffer, qc, q, schema, QUERY_SUBQUERY_CONSTRAINT, state); } else { queryClassToString(buffer, qc, q, schema, NO_ALIASES_ALL_FIELDS, state);
} else { StringBuffer lhsBuffer = new StringBuffer(); queryClassToString(lhsBuffer, (QueryClass) c.getQueryNode(), q, schema, ID_ONLY, state); leftHandSide = lhsBuffer.toString();
if (node instanceof QueryClass) { if (TypeUtil.getFieldInfo(((QueryClass) node).getType(), "id") != null) { queryClassToString(buffer, (QueryClass) node, q, schema, ID_ONLY, state); } else { queryClassToString(buffer, (QueryClass) node, q, schema, NO_ALIASES_ALL_FIELDS, state);
if (node instanceof QueryClass) { if (TypeUtil.getFieldInfo(((QueryClass) node).getType(), "id") != null) { queryClassToString(buffer, (QueryClass) node, q, schema, ID_ONLY, state); } else { queryClassToString(buffer, (QueryClass) node, q, schema, NO_ALIASES_ALL_FIELDS, state);
/** * Converts a SubqueryConstraint object into a String suitable for putting in an SQL query. * * @param state the current SqlGenerator state * @param buffer the StringBuffer to place text into * @param c the SubqueryConstraint object * @param q the Query * @param schema the DatabaseSchema in which to look up metadata * @throws ObjectStoreException if something goes wrong */ protected static void subqueryConstraintToString(State state, StringBuffer buffer, SubqueryConstraint c, Query q, DatabaseSchema schema) throws ObjectStoreException { Query subQ = c.getQuery(); QueryEvaluable qe = c.getQueryEvaluable(); QueryClass cls = c.getQueryClass(); if (qe != null) { queryEvaluableToString(buffer, qe, q, state); } else { queryClassToString(buffer, cls, q, schema, QUERY_SUBQUERY_CONSTRAINT, state); } buffer.append(" " + c.getOp().toString() + " (" + generate(subQ, schema, state.getDb(), null, QUERY_SUBQUERY_CONSTRAINT, state.getBagTableNames()) + ")"); }
/** * Converts a SubqueryConstraint object into a String suitable for putting in an SQL query. * * @param state the current SqlGenerator state * @param buffer the StringBuffer to place text into * @param c the SubqueryConstraint object * @param q the Query * @param schema the DatabaseSchema in which to look up metadata * @throws ObjectStoreException if something goes wrong */ protected static void subqueryConstraintToString(State state, StringBuffer buffer, SubqueryConstraint c, Query q, DatabaseSchema schema) throws ObjectStoreException { Query subQ = c.getQuery(); QueryEvaluable qe = c.getQueryEvaluable(); QueryClass cls = c.getQueryClass(); if (qe != null) { queryEvaluableToString(buffer, qe, q, state); } else { queryClassToString(buffer, cls, q, schema, QUERY_SUBQUERY_CONSTRAINT, state); } buffer.append(" " + c.getOp().toString() + " (" + generate(subQ, schema, state.getDb(), null, QUERY_SUBQUERY_CONSTRAINT, state.getBagTableNames()) + ")"); }
objectToString(buffer, arg2Obj); } else { queryClassToString(buffer, arg2, q, schema, ID_ONLY, state); queryClassToString(buffer, arg1Qc, q, schema, ID_ONLY, state); buffer.append((c.getOp() == ConstraintOp.CONTAINS ? " = " : " != ") + arg2Alias + " AND "); .getReverseReferenceDescriptor().getName()); if (arg1Qc != null) { queryClassToString(buffer, arg1Qc, q, schema, ID_ONLY, state); buffer.append((c.getOp() == ConstraintOp.CONTAINS ? " = " : " != ") + arg2Alias); buffer.append(loseBrackets ? "" : "("); if (arg1Qc != null) { queryClassToString(buffer, arg1Qc, q, schema, ID_ONLY, state); buffer.append(" = " + arg2Alias); buffer.append(" AND "); buffer.append("" + arg2Obj.getId()); } else { queryClassToString(buffer, arg2, q, schema, ID_ONLY, state);
objectToString(buffer, arg2Obj); } else { queryClassToString(buffer, arg2, q, schema, ID_ONLY, state); queryClassToString(buffer, arg1Qc, q, schema, ID_ONLY, state); buffer.append((c.getOp() == ConstraintOp.CONTAINS ? " = " : " != ") + arg2Alias + " AND "); .getReverseReferenceDescriptor().getName()); if (arg1Qc != null) { queryClassToString(buffer, arg1Qc, q, schema, ID_ONLY, state); buffer.append((c.getOp() == ConstraintOp.CONTAINS ? " = " : " != ") + arg2Alias); buffer.append(loseBrackets ? "" : "("); if (arg1Qc != null) { queryClassToString(buffer, arg1Qc, q, schema, ID_ONLY, state); buffer.append(" = " + arg2Alias); buffer.append(" AND "); buffer.append("" + arg2Obj.getId()); } else { queryClassToString(buffer, arg2, q, schema, ID_ONLY, state);