/** * Rebuild the expressions with the correct expression builder if using a different one. * Exact copy of the another rebuildAndAddExpressions adopted to a Map with Expression values * as the first parameter (instead of Vector in the original method) */ public void rebuildAndAddExpressions(Map expressions, Vector allExpressions, ExpressionBuilder primaryBuilder, Dictionary clonedExpressions) { Iterator it = expressions.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry)it.next(); Object fieldOrExpression = entry.getValue(); if (fieldOrExpression instanceof Expression) { Expression expression = (Expression)fieldOrExpression; ExpressionBuilder originalBuilder = expression.getBuilder(); if (originalBuilder != primaryBuilder) { // For bug 2612185 avoid rebuildOn if possible as it rebuilds all on a single base. // i.e. Report query items could be from parallel expressions. if (clonedExpressions.get(originalBuilder) != null) { expression = expression.copiedVersionFrom(clonedExpressions); //if there is no builder or it is a copy of the base builder then rebuild otherwise it is a parallel expression not joined } if (originalBuilder.wasQueryClassSetInternally()) { // Possibly the expression was built with the wrong builder. expression = expression.rebuildOn(primaryBuilder); } entry.setValue(expression); } allExpressions.addElement(expression); } } }
/** * Rebuild the expressions with the correct expression builder if using a different one. */ public void rebuildAndAddExpressions(Vector expressions, Vector allExpressions, ExpressionBuilder primaryBuilder, Dictionary clonedExpressions) { for (int index = 0; index < expressions.size(); index++) { Object fieldOrExpression = expressions.elementAt(index); if (fieldOrExpression instanceof Expression) { Expression expression = (Expression)fieldOrExpression; ExpressionBuilder originalBuilder = expression.getBuilder(); if (originalBuilder != primaryBuilder) { // For bug 2612185 avoid rebuildOn if possible as it rebuilds all on a single base. // i.e. Report query items could be from parallel expressions. if (clonedExpressions.get(originalBuilder) != null) { expression = expression.copiedVersionFrom(clonedExpressions); //if there is no builder or it is a copy of the base builder then rebuild otherwise it is a parallel expression not joined } if (originalBuilder.wasQueryClassSetInternally()) { // Possibly the expression was built with the wrong builder. expression = expression.rebuildOn(primaryBuilder); } expressions.setElementAt(expression, index); } allExpressions.addElement(expression); } } }
if (clonedBuilder.wasQueryClassSetInternally() && ((ReportQuery)getQuery()).getExpressionBuilder() != clonedBuilder){
this.joinManager.setBaseQuery(query); if (getAttributeExpression() != null){ if (getAttributeExpression().getBuilder().wasQueryClassSetInternally()){