public ParameterValues getValues( final ParameterContext context ) throws ReportDataFactoryException {
if ( context == null ) {
throw new NullPointerException();
}
final DataRow parameterData = context.getParameterData();
final ReportEnvironmentDataRow envDataRow = new ReportEnvironmentDataRow( context.getReportEnvironment() );
final DataFactory dataFactory = context.getDataFactory();
PerformanceLoggingStopWatch sw =
context.getPerformanceMonitorContext().createStopWatch( PerformanceTags.REPORT_PARAMETER_QUERY,
new FormattedMessage( "query={%s}", getQueryName() ) );
try {
sw.start();
final TableModel tableModel =
dataFactory.queryData( getQueryName(), new CompoundDataRow( envDataRow, parameterData ) );
final String formula =
getParameterAttribute( ParameterAttributeNames.Core.NAMESPACE,
ParameterAttributeNames.Core.DISPLAY_VALUE_FORMULA, context );
if ( StringUtils.isEmpty( formula, true ) ) {
return new DefaultParameterValues( tableModel, getKeyColumn(), getTextColumn() );
}
try {
return new ComputedParameterValues( tableModel, getKeyColumn(), getTextColumn(), formula, context );
} catch ( ReportProcessingException e ) {
throw new ReportDataFactoryException( "Failed to initialize parameter-value-collection", e );
}
} finally {
sw.close();
}
}