Bug 180249 BPS39 - Centralized Chart Engine API
Centralized and clearer Engine API -Create one single entry point class ChartEngine in an api package so it's easy to find (with access to IGenerator, Serializer, Device Renderers) -Create a new IGenerator interface instead of exposing the Generator class.
chart/org.eclipse.birt.chart.engine/src/org/eclipse/birt/chart/factory/Generator.java
{
		final ArrayList alExpressions = new ArrayList( 4 );
		final Axis axPrimaryBase = cwa.getPrimaryBaseAxes( )[0];
		EList elSD = axPrimaryBase.getSeriesDefinitions( );
		if ( elSD.size( ) != 1 )
		{
			throw new ChartException( ChartEnginePlugin.ID,
					ChartException.GENERATION,
					"dataprocessor.exception.CannotDecipher2", 
					Messages.getResourceBundle( ) );
		}
		
		SeriesDefinition sd = (SeriesDefinition) elSD.get( 0 );
		final Query qBaseSeriesDefinition = sd.getQuery( );
		String sExpression = qBaseSeriesDefinition.getDefinition( );
		if ( sExpression != null && sExpression.trim( ).length( ) > 0 )
		{
			
			logger.log( ILogger.WARNING,
					Messages.getString( "dataprocessor.log.XSeriesDefn", sExpression, ULocale.getDefault( ) ) ); 
		}
		
		final Series seBase = sd.getDesignTimeSeries( );
		EList elBaseSeries = seBase.getDataDefinition( );
		if ( elBaseSeries.size( ) != 1 )
		{
			throw new ChartException( ChartEnginePlugin.ID,
					ChartException.DATA_BINDING,
					"dataprocessor.exception.FoundMoreThanOneDefnAssociateX", 
					new Object[]{