series = getConvertedSeries( series );
series = getConvertedSeries( series, j );
	private Chart getConvertedChart( Chart currentChart, String sNewSubType,			Orientation newOrientation, String sNewDimension )	{		Chart helperModel = (Chart) EcoreUtil.copy( currentChart );		ChartDimension oldDimension = currentChart.getDimension( );		if ( ( currentChart instanceof ChartWithAxes ) )		{			if ( currentChart.getType( ).equals( TYPE_LITERAL ) ) // Original			// chart is			// of this type			// (LineChart)			{				if ( !currentChart.getSubType( ).equals( sNewSubType ) ) // Original				// chart				// is				// of				// the				// required				// subtype				{					currentChart.setSubType( sNewSubType );					EList axes = ( (Axis) ( (ChartWithAxes) currentChart ).getAxes( )							.get( 0 ) ).getAssociatedAxes( );					for ( int i = 0; i < axes.size( ); i++ )					{						if ( sNewSubType.equalsIgnoreCase( PERCENTSTACKED_SUBTYPE_LITERAL ) )						{							( (Axis) axes.get( i ) ).setPercent( true );						}						else						{							( (Axis) axes.get( i ) ).setPercent( false );						}						EList seriesdefinitions = ( (Axis) axes.get( i ) ).getSeriesDefinitions( );						for ( int j = 0; j < seriesdefinitions.size( ); j++ )						{							Series series = ( (SeriesDefinition) seriesdefinitions.get( j ) ).getDesignTimeSeries( );							if ( ( sNewSubType.equalsIgnoreCase( STACKED_SUBTYPE_LITERAL ) || sNewSubType.equalsIgnoreCase( PERCENTSTACKED_SUBTYPE_LITERAL ) ) )							{								series.setStacked( true );							}							else							{								series.setStacked( false );							}						}					}				}			}			else if ( currentChart.getType( ).equals( BarChart.TYPE_LITERAL )					|| currentChart.getType( ).equals( AreaChart.TYPE_LITERAL )					|| currentChart.getType( ).equals( StockChart.TYPE_LITERAL )					|| currentChart.getType( )							.equals( ScatterChart.TYPE_LITERAL ) )			{				if ( !currentChart.getType( ).equals( BarChart.TYPE_LITERAL ) )				{					currentChart.setSampleData( getConvertedSampleData( currentChart.getSampleData( ) ) );					( (Axis) ( (ChartWithAxes) currentChart ).getAxes( )							.get( 0 ) ).setType( AxisType.TEXT_LITERAL );				}				currentChart.setType( TYPE_LITERAL );				currentChart.setSubType( sNewSubType );				currentChart.getTitle( )						.getLabel( )						.getCaption( )						.setValue( CHART_TITLE );				EList axes = ( (Axis) ( (ChartWithAxes) currentChart ).getAxes( )						.get( 0 ) ).getAssociatedAxes( );				for ( int i = 0; i < axes.size( ); i++ )				{					if ( sNewSubType.equalsIgnoreCase( PERCENTSTACKED_SUBTYPE_LITERAL ) )					{						( (Axis) axes.get( i ) ).setPercent( true );					}					else					{						( (Axis) axes.get( i ) ).setPercent( false );					}					EList seriesdefinitions = ( (Axis) axes.get( i ) ).getSeriesDefinitions( );					for ( int j = 0; j < seriesdefinitions.size( ); j++ )					{						Series series = ( (SeriesDefinition) seriesdefinitions.get( j ) ).getDesignTimeSeries( );						series = getConvertedSeries( series );						( (LineSeries) series ).setPaletteLineColor( true );						if ( ( sNewSubType.equalsIgnoreCase( STACKED_SUBTYPE_LITERAL ) || sNewSubType.equalsIgnoreCase( PERCENTSTACKED_SUBTYPE_LITERAL ) ) )						{							series.setStacked( true );						}						else						{							series.setStacked( false );						}						( (SeriesDefinition) seriesdefinitions.get( j ) ).getSeries( )								.clear( );						( (SeriesDefinition) seriesdefinitions.get( j ) ).getSeries( )								.add( series );					}				}			}			else			{				return null;			}			( (Axis) ( (ChartWithAxes) currentChart ).getAxes( ).get( 0 ) ).setCategoryAxis( true );		}		else		{			// Create a new instance of the correct type and set initial			// properties			currentChart = ChartWithAxesImpl.create( );			currentChart.setType( TYPE_LITERAL );			currentChart.setSubType( sNewSubType );			( (ChartWithAxes) currentChart ).setOrientation( newOrientation );			currentChart.setDimension( getDimensionFor( sNewDimension ) );			( (Axis) ( (ChartWithAxes) currentChart ).getAxes( ).get( 0 ) ).setOrientation( Orientation.HORIZONTAL_LITERAL );			( (Axis) ( (ChartWithAxes) currentChart ).getAxes( ).get( 0 ) ).setType( AxisType.TEXT_LITERAL );			( (Axis) ( (ChartWithAxes) currentChart ).getAxes( ).get( 0 ) ).setCategoryAxis( true );			( (Axis) ( (Axis) ( (ChartWithAxes) currentChart ).getAxes( )					.get( 0 ) ).getAssociatedAxes( ).get( 0 ) ).setOrientation( Orientation.VERTICAL_LITERAL );			( (Axis) ( (Axis) ( (ChartWithAxes) currentChart ).getAxes( )					.get( 0 ) ).getAssociatedAxes( ).get( 0 ) ).setType( AxisType.LINEAR_LITERAL );			// Copy generic chart properties from the old chart			currentChart.setBlock( helperModel.getBlock( ) );			currentChart.setDescription( helperModel.getDescription( ) );			currentChart.setGridColumnCount( helperModel.getGridColumnCount( ) );			currentChart.setSampleData( helperModel.getSampleData( ) );			currentChart.setScript( helperModel.getScript( ) );			currentChart.setSeriesThickness( helperModel.getSeriesThickness( ) );			currentChart.setUnits( helperModel.getUnits( ) );			if ( helperModel.getInteractivity( ) != null )			{				currentChart.getInteractivity( )						.setEnable( helperModel.getInteractivity( ).isEnable( ) );				currentChart.getInteractivity( )						.setLegendBehavior( helperModel.getInteractivity( )								.getLegendBehavior( ) );			}			if ( helperModel.getType( ).equals( PieChart.TYPE_LITERAL )					|| helperModel.getType( ).equals( MeterChart.TYPE_LITERAL ) )			{				// Clear existing series definitions				( (Axis) ( (ChartWithAxes) currentChart ).getAxes( ).get( 0 ) ).getSeriesDefinitions( )						.clear( );				// Copy base series definitions				( (Axis) ( (ChartWithAxes) currentChart ).getAxes( ).get( 0 ) ).getSeriesDefinitions( )						.add( ( (ChartWithoutAxes) helperModel ).getSeriesDefinitions( )								.get( 0 ) );				// Clear existing series definitions				( (Axis) ( (Axis) ( (ChartWithAxes) currentChart ).getAxes( )						.get( 0 ) ).getAssociatedAxes( ).get( 0 ) ).getSeriesDefinitions( )						.clear( );				// Copy orthogonal series definitions				( (Axis) ( (Axis) ( (ChartWithAxes) currentChart ).getAxes( )						.get( 0 ) ).getAssociatedAxes( ).get( 0 ) ).getSeriesDefinitions( )						.addAll( ( (SeriesDefinition) ( (Axis) ( (ChartWithAxes) currentChart ).getAxes( )								.get( 0 ) ).getSeriesDefinitions( ).get( 0 ) ).getSeriesDefinitions( ) );				// Update the base series				Series series = ( (SeriesDefinition) ( (Axis) ( (ChartWithAxes) currentChart ).getAxes( )						.get( 0 ) ).getSeriesDefinitions( ).get( 0 ) ).getDesignTimeSeries( );				series = getConvertedSeries( series );				// Clear existing series				( (SeriesDefinition) ( (Axis) ( (ChartWithAxes) currentChart ).getAxes( )						.get( 0 ) ).getSeriesDefinitions( ).get( 0 ) ).getSeries( )						.clear( );				// Add converted series				( (SeriesDefinition) ( (Axis) ( (ChartWithAxes) currentChart ).getAxes( )						.get( 0 ) ).getSeriesDefinitions( ).get( 0 ) ).getSeries( )						.add( series );				// Update the orthogonal series				EList seriesdefinitions = ( (Axis) ( (Axis) ( (ChartWithAxes) currentChart ).getAxes( )						.get( 0 ) ).getAssociatedAxes( ).get( 0 ) ).getSeriesDefinitions( );				for ( int j = 0; j < seriesdefinitions.size( ); j++ )				{					series = ( (SeriesDefinition) seriesdefinitions.get( j ) ).getDesignTimeSeries( );					series = getConvertedSeries( series );					( (LineSeries) series ).setPaletteLineColor( true );					if ( ( sNewSubType.equalsIgnoreCase( STACKED_SUBTYPE_LITERAL ) || sNewSubType.equalsIgnoreCase( PERCENTSTACKED_SUBTYPE_LITERAL ) ) )					{						series.setStacked( true );					}					else					{						series.setStacked( false );					}					// Clear any existing series					( (SeriesDefinition) seriesdefinitions.get( j ) ).getSeries( )							.clear( );					// Add the new series					( (SeriesDefinition) seriesdefinitions.get( j ) ).getSeries( )							.add( series );				}			}			else			{				return null;			}			currentChart.getLegend( )					.setItemType( LegendItemType.SERIES_LITERAL );			currentChart.getTitle( )					.getLabel( )					.getCaption( )					.setValue( CHART_TITLE );		}		if ( currentChart instanceof ChartWithAxes				&& !( (ChartWithAxes) currentChart ).getOrientation( )						.equals( newOrientation ) )		{			( (ChartWithAxes) currentChart ).setOrientation( newOrientation );		}		if ( !currentChart.getDimension( )				.equals( getDimensionFor( sNewDimension ) ) )		{			currentChart.setDimension( getDimensionFor( sNewDimension ) );		}		if ( sNewDimension.equals( THREE_DIMENSION_TYPE )				&& getDimensionFor( sNewDimension ) != oldDimension )		{			( (ChartWithAxes) currentChart ).setRotation( Rotation3DImpl.create( new Angle3D[]{				Angle3DImpl.create( -20, 45, 0 )			} ) );			( (ChartWithAxes) currentChart ).setUnitSpacing( 50 );			( (ChartWithAxes) currentChart ).getPrimaryBaseAxes( )[0].getAncillaryAxes( )					.clear( );			Axis zAxisAncillary = AxisImpl.create( Axis.ANCILLARY_BASE );			zAxisAncillary.setTitlePosition( Position.BELOW_LITERAL );			zAxisAncillary.getTitle( )					.getCaption( )					.setValue( Messages.getString( "ChartWithAxesImpl.Z_Axis.title" ) ); //$NON-NLS-1$			zAxisAncillary.getTitle( ).setVisible( true );			zAxisAncillary.setPrimaryAxis( true );			zAxisAncillary.setLabelPosition( Position.BELOW_LITERAL );			zAxisAncillary.setOrientation( Orientation.HORIZONTAL_LITERAL );			zAxisAncillary.getOrigin( ).setType( IntersectionType.MIN_LITERAL );			zAxisAncillary.getOrigin( )					.setValue( NumberDataElementImpl.create( 0 ) );			zAxisAncillary.getTitle( ).setVisible( false );			zAxisAncillary.setType( AxisType.TEXT_LITERAL );			( (ChartWithAxes) currentChart ).getPrimaryBaseAxes( )[0].getAncillaryAxes( )					.add( zAxisAncillary );			SeriesDefinition sdZ = SeriesDefinitionImpl.create( );			sdZ.getSeriesPalette( ).update( 0 );			sdZ.getSeries( ).add( SeriesImpl.create( ) );			zAxisAncillary.getSeriesDefinitions( ).add( sdZ );			if ( currentChart.getSampleData( )					.getAncillarySampleData( )					.isEmpty( ) )			{				BaseSampleData sdAncillary = DataFactory.eINSTANCE.createBaseSampleData( );				sdAncillary.setDataSetRepresentation( "Series 1" ); //$NON-NLS-1$				currentChart.getSampleData( )						.getAncillarySampleData( )						.add( sdAncillary );			}		}		return currentChart;	}