Not able to generate Min Slice Pie chart using Birt API java program.
<div>Hi, I am trying to generate Min Slice Pie chart using the below java program-</div>
<div> </div>
<div>public static void createMinSlice( ReportDesignHandle designHandle ) throws Exception</div>
<div>{</div>
<div>ExtendedItemHandle eih = designHandle.getElementFactory().newExtendedItem(null, "Chart");</div>
<div> </div>
<div>eih.setProperty("outputFormat", "SVG");</div>
<div> eih.setWidth("500pt");</div>
<div> eih.setHeight("500pt");</div>
<div> </div>
<div> applyDesign(eih);</div>
<div> </div>
<div> ChartWithoutAxes cwoaPie = ChartWithoutAxesImpl.create( );</div>
<div>cwoaPie.setType( "Pie Chart" ); //$NON-NLS-1$<span> </span></div>
<div>cwoaPie.setSubType( "Standard Pie Chart" ); //$NON-NLS-1$</div>
<div>cwoaPie.getBlock( ).setBackground( ColorDefinitionImpl.WHITE( ));</div>
<div> </div>
<div>// Plot</div>
<div>cwoaPie.getPlot( )</div>
<div>.getClientArea( )</div>
<div>.setBackground( ColorDefinitionImpl.create( 255, 255, 225 ) );</div>
<div> </div>
<div>// Legend</div>
<div>Legend lg = cwoaPie.getLegend( );</div>
<div>lg.setItemType( LegendItemType.CATEGORIES_LITERAL );</div>
<div>lg.getClientArea( ).getOutline( ).setVisible( true );</div>
<div>lg.getTitle( ).setVisible( false );</div>
<div> </div>
<div>// Title</div>
<div>cwoaPie.getTitle( )</div>
<div>.getLabel( )</div>
<div>.getCaption( )</div>
<div>.setValue( "Min Slice Pie Chart" ); //$NON-NLS-1$</div>
<div>cwoaPie.getTitle( ).getOutline( ).setVisible( false );</div>
<div> </div>
<div>// Data Set</div>
<div>TextDataSet categoryValues = TextDataSetImpl.create( new String[]{</div>
<div>"New York", "Boston", "Chicago", "San Francisco", "Dallas", "Miami"//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$//$NON-NLS-6$</div>
<div>} );</div>
<div>NumberDataSet seriesOneValues = NumberDataSetImpl.create( new double[]{</div>
<div>24, 9, 30, 36, 8, 51</div>
<div>} );</div>
<div> </div>
<div>SampleData sdata = DataFactory.eINSTANCE.createSampleData( );</div>
<div>BaseSampleData sdBase = DataFactory.eINSTANCE.createBaseSampleData( );</div>
<div>sdBase.setDataSetRepresentation( "" );//$NON-NLS-1$</div>
<div>sdata.getBaseSampleData( ).add( sdBase );</div>
<div> </div>
<div>OrthogonalSampleData sdOrthogonal = DataFactory.eINSTANCE.createOrthogonalSampleData( );</div>
<div>sdOrthogonal.setDataSetRepresentation( "" );//$NON-NLS-1$</div>
<div>sdOrthogonal.setSeriesDefinitionIndex( 0 );</div>
<div>sdata.getOrthogonalSampleData( ).add( sdOrthogonal );</div>
<div> </div>
<div>cwoaPie.setSampleData( sdata );</div>
<div> </div>
<div>// Base Series</div>
<div>SeriesDefinition sd = SeriesDefinitionImpl.create( );</div>
<div>cwoaPie.getSeriesDefinitions( ).add( sd );</div>
<div> </div>
<div>Series seCategory = (Series) SeriesImpl.create( );</div>
<div> </div>
<div>final Fill[] fiaBase = {</div>
<div>ColorDefinitionImpl.ORANGE( ),</div>
<div>GradientImpl.create( ColorDefinitionImpl.create( 225, 225, 255 ),</div>
<div>ColorDefinitionImpl.create( 255, 255, 225 ),</div>
<div>-35,</div>
<div>false ),</div>
<div>ColorDefinitionImpl.CREAM( ),</div>
<div>ColorDefinitionImpl.RED( ),</div>
<div>ColorDefinitionImpl.GREEN( ),</div>
<div>ColorDefinitionImpl.BLUE( ).brighter( ),</div>
<div>ColorDefinitionImpl.CYAN( ).darker( ),</div>
<div>};</div>
<div>sd.getSeriesPalette( ).getEntries( ).clear( );</div>
<div>for ( int i = 0; i < fiaBase.length; i++ )</div>
<div>{</div>
<div>sd.getSeriesPalette( ).getEntries( ).add( fiaBase );</div>
<div>}</div>
<div> </div>
<div>seCategory.setDataSet( categoryValues );</div>
<div>sd.getSeries( ).add( seCategory );</div>
<div> </div>
<div>// Orthogonal Series</div>
<div>SeriesDefinition sdCity = SeriesDefinitionImpl.create( );</div>
<div>sd.getSeriesDefinitions( ).add( sdCity );</div>
<div> </div>
<div>PieSeries sePie = (PieSeries) PieSeriesImpl.create( );</div>
<div>sePie.setDataSet( seriesOneValues );</div>
<div>sePie.setLabelPosition( Position.INSIDE_LITERAL );</div>
<div> </div>
<div>// Explosion</div>
<div>sePie.setExplosion( 10 );</div>
<div>sePie.setExplosionExpression( "valueData<20 ||valueData>50" );//$NON-NLS-1$</div>
<div> </div>
<div>sdCity.getSeries( ).add( sePie );</div>
<div> </div>
<div>// Min Slice</div>
<div>cwoaPie.setMinSlice( 10 );</div>
<div>cwoaPie.setMinSlicePercent( false );</div>
<div>cwoaPie.setMinSliceLabel( "Others" );//$NON-NLS-1$</div>
<div> </div>
<div> </div>
<div>eih.getReportItem().setProperty("chart.instance", cwoaPie); </div>
<div> </div>
<div> designHandle.getBody( ).add( eih ); </div>
<div> </div>
<div>}<span> </span></div>
<div> </div>
<div>I am getting "NullPointerException" in the above method-</div>
<div>
<div>java.lang.NullPointerException</div>
<div>at org.eclipse.birt.chart.factory.Generator.getRowExpressions(Generator.java:1566)</div>
<div>at org.eclipse.birt.chart.factory.Generator.getRowExpressions(Generator.java:593)</div>
<div>at org.eclipse.birt.chart.reportitem.ChartReportItemImpl.getRowExpressions(ChartReportItemImpl.java:978)</div>
<div>at org.eclipse.birt.report.model.util.BoundColumnsMgr.dealExtendedItem(BoundColumnsMgr.java:219)</div>
<div>at org.eclipse.birt.report.model.writer.BoundColumnsWriterMgr.dealExtendedItem(BoundColumnsWriterMgr.java:426)</div>
<div>at org.eclipse.birt.report.model.writer.ModuleWriterImpl.visitExtendedItem(ModuleWriterImpl.java:1875)</div>
<div>at org.eclipse.birt.report.model.writer.ModuleWriter.visitExtendedItem(ModuleWriter.java:1)</div>
<div>at org.eclipse.birt.report.model.writer.DesignWriter.visitExtendedItem(DesignWriter.java:1)</div>
<div>at org.eclipse.birt.report.model.elements.ExtendedItem.apply(ExtendedItem.java:136)</div>
<div>at org.eclipse.birt.report.model.writer.ModuleWriterImpl.writeChildren(ModuleWriterImpl.java:2966)</div>
<div>at org.eclipse.birt.report.model.writer.ModuleWriterImpl.writeContents(ModuleWriterImpl.java:2951)</div>
<div>at org.eclipse.birt.report.model.writer.ModuleWriterImpl.writeContents(ModuleWriterImpl.java:2985)</div>
<div>at org.eclipse.birt.report.model.writer.DesignWriterImpl.writeSlot(DesignWriterImpl.java:174)</div>
<div>at org.eclipse.birt.report.model.writer.DesignWriterImpl.visitReportDesign(DesignWriterImpl.java:78)</div>
<div>at org.eclipse.birt.report.model.elements.ReportDesign.apply(ReportDesign.java:65)</div>
<div>at org.eclipse.birt.report.model.writer.ModuleWriterImpl.writeFile(ModuleWriterImpl.java:320)</div>
<div>at org.eclipse.birt.report.model.writer.ModuleWriterImpl.write(ModuleWriterImpl.java:288)</div>
<div>at org.eclipse.birt.report.model.writer.ModuleWriter.write(ModuleWriter.java:1)</div>
<div>at org.eclipse.birt.report.model.writer.DesignWriter.write(DesignWriter.java:1)</div>
<div>at org.eclipse.birt.report.model.api.ModuleHandleImpl.save(ModuleHandleImpl.java:1456)</div>
<div>at org.eclipse.birt.report.model.api.ModuleHandleImpl.saveAs(ModuleHandleImpl.java:1476)</div>
<div>at CreateDynamicTable.setUp(CreateDynamicTable.java:130)</div>
<div> </div>
<div>
<div>SEVERE: Line Number:250 Error Code:Error.XMLParserException.SAX_ERROR Exception:org.xml.sax.SAXParseException; lineNumber: 250; columnNumber: 1; XML document structures must start and end within the same entity. Message:SAX detected an error with the basic XML syntax of the file. </div>
<div>Jun 08, 2015 11:15:31 AM org.eclipse.birt.report.engine.api.impl.ReportEngineHelper getReportDesignHandle...........</div>
<div> </div>
<div> </div>
<div>Can you please tell where I am going wrong. Thanks.</div>
</div>
</div>
<div> </div>
<div> </div>