/** * INTERNAL: * Used to print a debug form of the expression tree. */ @Override public void writeDescriptionOn(BufferedWriter writer) throws IOException { writer.write(String.valueOf(getSubQuery())); }
/** * INTERNAL: * Used to print a debug form of the expression tree. */ public void writeDescriptionOn(BufferedWriter writer) throws IOException { writer.write(String.valueOf(getSubQuery())); }
/** * INTERNAL: * Used to print a debug form of the expression tree. */ @Override public void writeDescriptionOn(BufferedWriter writer) throws IOException { writer.write(String.valueOf(getSubQuery())); }
protected org.eclipse.persistence.expressions.Expression getBaseExpression() { return this.currentNode.getSubQuery().getExpressionBuilder(); }
/** * INTERNAL: * Used in SQL printing. */ @Override public void writeSubexpressionsTo(BufferedWriter writer, int indent) throws IOException { if (getSubQuery().getSelectionCriteria() != null) { getSubQuery().getSelectionCriteria().toString(writer, indent); } }
/** * INTERNAL: * Used in SQL printing. */ @Override public void writeSubexpressionsTo(BufferedWriter writer, int indent) throws IOException { if (getSubQuery().getSelectionCriteria() != null) { getSubQuery().getSelectionCriteria().toString(writer, indent); } }
/** * INTERNAL: * Used in SQL printing. */ public void writeSubexpressionsTo(BufferedWriter writer, int indent) throws IOException { if (getSubQuery().getSelectionCriteria() != null) { getSubQuery().getSelectionCriteria().toString(writer, indent); } } }
/** * INTERNAL: * For iterating using an inner class */ public void iterateOn(ExpressionIterator iterator) { super.iterateOn(iterator); if (baseExpression != null) { baseExpression.iterateOn(iterator); } // For Flashback: It is now possible to create iterators that will span // the entire expression, even the where clause embedded in a subQuery. if (iterator.shouldIterateOverSubSelects()) { if (getSubQuery().getSelectionCriteria() != null) { getSubQuery().getSelectionCriteria().iterateOn(iterator); } else { getSubQuery().getExpressionBuilder().iterateOn(iterator); } } }
/** * INTERNAL: * For iterating using an inner class */ @Override public void iterateOn(ExpressionIterator iterator) { super.iterateOn(iterator); if (baseExpression != null) { baseExpression.iterateOn(iterator); } // For Flashback: It is now possible to create iterators that will span // the entire expression, even the where clause embedded in a subQuery. if (iterator.shouldIterateOverSubSelects()) { if (getSubQuery().getSelectionCriteria() != null) { getSubQuery().getSelectionCriteria().iterateOn(iterator); } else { getSubQuery().getExpressionBuilder().iterateOn(iterator); } } }
/** * INTERNAL: * Return the report item that this is an alias for. */ public ReportItem getItem() { if (this.item == null) { ReportQuery subQuery = ((FromSubSelectExpression)getBaseExpression()).getSubSelect().getSubQuery(); this.item = subQuery.getItem(this.name); if (this.item == null) { throw QueryException.invalidQueryKeyInExpression(this.name); } } return this.item; } }
/** * INTERNAL: * Return the report item that this is an alias for. */ public ReportItem getItem() { if (this.item == null) { ReportQuery subQuery = ((FromSubSelectExpression)getBaseExpression()).getSubSelect().getSubQuery(); this.item = subQuery.getItem(this.name); if (this.item == null) { throw QueryException.invalidQueryKeyInExpression(this.name); } } return this.item; } }
/** * Print the sub query to the printer. */ protected void printCustomSQL(ExpressionSQLPrinter printer) { /* * modified for bug#2658466. This fix ensures that Custom SQL sub-queries are translated * and have variables substituted with values correctly. */ SQLCall call = (SQLCall)getSubQuery().getCall(); call.translateCustomQuery(); printer.getCall().getParameters().addAll(call.getParameters()); printer.getCall().getParameterTypes().addAll(call.getParameterTypes()); printer.printString(call.getCallString()); }
/** * Print the sub query to the printer. */ protected void printCustomSQL(ExpressionSQLPrinter printer) { /* * modified for bug#2658466. This fix ensures that Custom SQL sub-queries are translated * and have variables substituted with values correctly. */ SQLCall call = (SQLCall)getSubQuery().getCall(); call.translateCustomQuery(); printer.getCall().getParameters().addAll(call.getParameters()); printer.getCall().getParameterTypes().addAll(call.getParameterTypes()); printer.printString(call.getCallString()); }
/** * Print the sub query to the printer. */ protected void printCustomSQL(ExpressionSQLPrinter printer) { /* * modified for bug#2658466. This fix ensures that Custom SQL sub-queries are translated * and have variables substituted with values correctly. */ SQLCall call = (SQLCall)getSubQuery().getCall(); call.translateCustomQuery(); printer.getCall().getParameters().addAll(call.getParameters()); printer.getCall().getParameterTypes().addAll(call.getParameterTypes()); printer.printString(call.getCallString()); }
/** * INTERNAL: * If a descriptor cannot be found, then return null. */ @Override public QueryKey getQueryKeyOrNull() { if (!hasQueryKey) { return null; } if (getContainingDescriptor() == null) { // Assign an artificial query key to represent the alias. DirectQueryKey alias = new DirectQueryKey(); alias.setField(new DatabaseField(this.name)); ReportQuery subQuery = ((FromSubSelectExpression)getBaseExpression()).getSubSelect().getSubQuery(); alias.setDescriptor(subQuery.getDescriptor()); this.queryKey = alias; return alias; } return super.getQueryKeyOrNull(); }
/** * INTERNAL: * If a descriptor cannot be found, then return null. */ @Override public QueryKey getQueryKeyOrNull() { if (!hasQueryKey) { return null; } if (getContainingDescriptor() == null) { // Assign an artificial query key to represent the alias. DirectQueryKey alias = new DirectQueryKey(); alias.setField(new DatabaseField(this.name)); ReportQuery subQuery = ((FromSubSelectExpression)getBaseExpression()).getSubSelect().getSubQuery(); alias.setDescriptor(subQuery.getDescriptor()); this.queryKey = alias; return alias; } return super.getQueryKeyOrNull(); }
/** * INTERNAL: * Normalize the expression into a printable structure. * Any joins must be added to form a new root. */ @Override public Expression normalize(ExpressionNormalizer normalizer) { if (this.subSelect != null) { // Each item that is a function must have an alias defined for it. for (ReportItem item : this.subSelect.getSubQuery().getItems()) { if (!item.getAttributeExpression().isQueryKeyExpression()) { item.setAttributeExpression(item.getAttributeExpression().as(item.getName())); } } // Need to force the sub-slect to normalize instead of deferring. this.subSelect.normalizeSubSelect(normalizer, normalizer.getClonedExpressions()); } return super.normalize(normalizer); }
/** * INTERNAL: * Normalize the expression into a printable structure. * Any joins must be added to form a new root. */ @Override public Expression normalize(ExpressionNormalizer normalizer) { if (this.subSelect != null) { // Each item that is a function must have an alias defined for it. for (ReportItem item : this.subSelect.getSubQuery().getItems()) { if (!item.getAttributeExpression().isQueryKeyExpression()) { item.setAttributeExpression(item.getAttributeExpression().as(item.getName())); } } // Need to force the sub-slect to normalize instead of deferring. this.subSelect.normalizeSubSelect(normalizer, normalizer.getClonedExpressions()); } return super.normalize(normalizer); }
/** * Print the sub query to the printer. */ public void printSQL(ExpressionSQLPrinter printer) { ReportQuery query = getSubQuery(); printer.printString("("); if (query.isCallQuery()) { printCustomSQL(printer); } else { SQLSelectStatement statement = (SQLSelectStatement)((ExpressionQueryMechanism)query.getQueryMechanism()).getSQLStatement(); boolean isFirstElementPrinted = printer.isFirstElementPrinted(); printer.setIsFirstElementPrinted(false); boolean requiresDistinct = printer.requiresDistinct(); statement.printSQL(printer); printer.setIsFirstElementPrinted(isFirstElementPrinted); printer.setRequiresDistinct(requiresDistinct); } printer.printString(")"); }
/** * Print the sub query to the printer. */ @Override public void printSQL(ExpressionSQLPrinter printer) { ReportQuery query = getSubQuery(); printer.printString("("); if (query.isCallQuery()) { printCustomSQL(printer); } else { SQLSelectStatement statement = (SQLSelectStatement)((ExpressionQueryMechanism)query.getQueryMechanism()).getSQLStatement(); boolean isFirstElementPrinted = printer.isFirstElementPrinted(); printer.setIsFirstElementPrinted(false); boolean requiresDistinct = printer.requiresDistinct(); statement.printSQL(printer); printer.setIsFirstElementPrinted(isFirstElementPrinted); printer.setRequiresDistinct(requiresDistinct); } printer.printString(")"); }