Skip to content

Commit

Permalink
Fixed Bug 417305 - A sample chart has no data
Browse files Browse the repository at this point in the history
  • Loading branch information
Heng Li committed Sep 16, 2013
1 parent 30f3f59 commit 3f913aa
Showing 1 changed file with 23 additions and 34 deletions.
Expand Up @@ -236,7 +236,7 @@ private IDataRowExpressionEvaluator prepareRowExpressionEvaluator(
OdaDataSetDesign odaDataSet = newDataSet( odaDataSource );

// Create query definition.
QueryDefinition query = createQueryDefinition( odaDataSet, expressions );
QueryDefinition query = createQueryDefinition( chart, odaDataSet );

// Create data engine and execute query.
DataEngine dataEngine = newDataEngine( );
Expand All @@ -262,13 +262,12 @@ public Object evaluate( String expression )
/**
* Create query definition.
*
* @param chart
* @param odaDataSet
* @param expressions
* @return
* @throws ChartException
*/
private QueryDefinition createQueryDefinition(
OdaDataSetDesign odaDataSet, String[] expressions )
private QueryDefinition createQueryDefinition( Chart chart, OdaDataSetDesign odaDataSet )
throws ChartException
{

Expand All @@ -279,42 +278,32 @@ private QueryDefinition createQueryDefinition(
{
initDefaultBindings( queryDefn );

SeriesDefinition baseSD = ChartUtil.getBaseSeriesDefinitions( chart ).get( 0 );
SeriesDefinition orthSD = ChartUtil.getAllOrthogonalSeriesDefinitions( chart ).get( 0 );
String categoryExpr = baseSD.getDesignTimeSeries( ).getDataDefinition( ).get( 0 ).getDefinition( );

// Add group definitions and aggregation binding.
String groupName = "Group_Country"; //$NON-NLS-1$
GroupDefinition gd = new GroupDefinition( groupName );
gd.setKeyExpression( expressions[0] );
gd.setKeyExpression( categoryExpr );
gd.setInterval( IGroupDefinition.NO_INTERVAL );
gd.setIntervalRange( 0 );

// Add expression bindings.

for ( int i = 0; i < expressions.length; i++ )
{
String expr = expressions[i];

Binding colBinding = null;
if ( i == 1 )
{
String newStr = ChartUtil.escapeSpecialCharacters( expr
+ "_" + "Count" ); //$NON-NLS-1$ //$NON-NLS-2$
colBinding = new Binding( newStr );
colBinding.setExpression( null );
colBinding.setAggrFunction( IBuildInAggregation.TOTAL_COUNT_FUNC );
colBinding.addAggregateOn( groupName );
colBinding.addArgument( new ScriptExpression( expressions[i] ) );

expressionMap.put( ExpressionUtil.createRowExpression( newStr ), newStr );
}
else
{
colBinding = new Binding( expr );
colBinding.setExpression( new ScriptExpression( expr ) );
}

queryDefn.addBinding( colBinding );
}

queryDefn.addGroup( gd );

// Add expression bindings.
Binding colBinding = new Binding( categoryExpr );
colBinding.setExpression( new ScriptExpression( categoryExpr ) );
queryDefn.addBinding( colBinding );

String valueBinding = ChartUtil.generateBindingNameOfValueSeries( orthSD.getDesignTimeSeries( ).getDataDefinition( ).get( 0 ), orthSD, baseSD, true );
colBinding = new Binding( valueBinding );
colBinding.setExpression( null );
colBinding.setAggrFunction( IBuildInAggregation.TOTAL_COUNT_FUNC );
colBinding.addAggregateOn( groupName );
colBinding.addArgument( new ScriptExpression( orthSD.getDesignTimeSeries( ).getDataDefinition( ).get( 0 ).getDefinition( ) ) );

expressionMap.put( ExpressionUtil.createRowExpression( valueBinding ), valueBinding );
queryDefn.addBinding( colBinding );
}
catch ( DataException e )
{
Expand Down

0 comments on commit 3f913aa

Please sign in to comment.