/** * Helper method to invoke a pre-processor outside of the report processing. This is strictly for unit-testing only. * * @param report * @param processor * @return * @throws org.pentaho.reporting.engine.classic.core.ReportProcessingException */ protected MasterReport materialize( final MasterReport report, final ReportPreProcessor processor ) throws ReportProcessingException { final PerformanceMonitorContext pmc = new NoOpPerformanceMonitorContext(); final DefaultProcessingContext processingContext = new DefaultProcessingContext( report ); final DataSchemaDefinition definition = report.getDataSchemaDefinition(); final DefaultFlowController flowController = new DefaultFlowController( processingContext, definition, StateUtilities.computeParameterValueSet( report ), pmc ); final CachingDataFactory dataFactory = new CachingDataFactory( report.getDataFactory(), false ); dataFactory.initialize( new ProcessingDataFactoryContext( processingContext, dataFactory ) ); try { final DefaultFlowController postQueryFlowController = flowController.performQuery( dataFactory, report.getQuery(), report.getQueryLimit(), report.getQueryTimeout(), flowController.getMasterRow().getResourceBundleFactory(), Collections.<SortConstraint>emptyList() ); return processor.performPreProcessing( report, postQueryFlowController ); } finally { dataFactory.close(); } }
final String query = report.getQuery(); if ( query != null ) { attList.setAttribute( ExtParserModule.NAMESPACE, "query", query );
final Integer queryTimeoutDefault = IntegerCache.getInteger( processedReport.getQueryTimeout() ); final String queryDefined = designtime ? "design-time-query" : processedReport.getQuery(); final Object queryRaw = evaluateExpression( processedReport.getAttributeExpression( AttributeNames.Internal.NAMESPACE, final List<SortConstraint> sortOrder = lookupSortOrder( processedReport ); this.query = (String) ConverterRegistry.convert( queryRaw, String.class, processedReport.getQuery() ); this.queryLimit = (Integer) ConverterRegistry.convert( queryLimitRaw, Integer.class, queryLimitDefault ); this.queryTimeout = (Integer) ConverterRegistry.convert( queryTimeoutRaw, Integer.class, queryTimeoutDefault );