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();
}
}