public void inspect(final ReportDesignerContext designerContext,
final ReportDocumentContext reportRenderContext,
final InspectionResultListener resultHandler) throws ReportDataFactoryException
{
final AbstractReportDefinition reportDefinition = reportRenderContext.getReportDefinition();
final ContextAwareDataSchemaModel model = reportRenderContext.getReportDataSchemaModel();
final String[] columnNames = model.getColumnNames();
if (reportDefinition instanceof MasterReport)
{
final MasterReport mr = (MasterReport) reportDefinition;
final ReportParameterDefinition parameters = mr.getParameterDefinition();
final ParameterDefinitionEntry[] entries = parameters.getParameterDefinitions();
for (int i = 0; i < entries.length; i++)
{
final ParameterDefinitionEntry entry = entries[i];
inspectParameter(designerContext, reportRenderContext, resultHandler, columnNames, parameters, entry);
}
}
final CompoundDataFactory dataFactory = CompoundDataFactory.normalize(reportDefinition.getDataFactory());
final int size = dataFactory.size();
for (int i = 0; i < size; i++)
{
inspectDataSource(designerContext, reportRenderContext, resultHandler, columnNames, dataFactory);
}
final ExpressionCollection expressions = reportDefinition.getExpressions();
final Expression[] expressionsArray = expressions.getExpressions();
for (int i = 0; i < expressionsArray.length; i++)
{
final Expression expression = expressionsArray[i];
inspectExpression(designerContext, reportRenderContext, resultHandler, columnNames, expression);