To create and add a chart to a report

  1. Create a new ChartDefinition object and set its type.
    ChartDefinition chartDefinition = new ChartDefinition();
    chartDefinition.setChartType(ChartType.group);
  2. Get the conditional field of the report's first group and set the field using the setConditonalFields method.
    IDataDefinition dataDefinition = rcd.getDataDefController().getDataDefinition();
    Fields<IField> conditionFields = new Fields<IField>();
    IField field = dataDefinition.getGroups().getGroup(0).getConditionField();
    conditionFields.addElement(field); 
    chartDefinition.setConditionFields(conditionFields);
  3. Loop through the report's summary fields until the one matching the specified name is found, and set the summary field of the ChartDefinition object using the setDataFields method.
    Fields<IField> dataFields = new Fields<IField>();
    for (int i = 0; i < dataDefinition.getSummaryFields().size(); i++)
    {
        IField summaryField = dataDefinition.getSummaryFields().getField(i);
        dataFields.addElement(summaryField);
    }
      
    chartDefinition.setDataFields(dataFields);
  4. Create a new ChartObject to represent the chart that will be added and set the ChartDefinition property.
    ChartObject chartObject = new ChartObject();
    chartObject.setChartDefinition(chartDefinition);
  5. Create a ChartStyleType object and a AreaSectionKind object.
    ChartStyleType chartStyleType = ChartStyleType.pie;
    AreaSectionKind chartPlacement = AreaSectionKind.pageHeader;
  6. Set the chart type, chart placement, and chart title.
    chartObject.getChartStyle().setType(chartStyleType);
    chartObject.setChartReportArea(chartPlacement);
    chartObject.getChartStyle().getTextOptions().setTitle(chartTitle);
  7. Set the width, height, and top of the chart.
    chartObject.setHeight(5000); 
    chartObject.setWidth(5000);
    chartObject.setTop(1000);
  8. Add the chart to a section in the report using the ReportDefController object.
    ReportDefController reportDefController = rcd.getReportDefController();
    IArea reportHeaderArea = reportDefController.getReportDefinition().getReportHeaderArea();
    Section chartSection = (Section)reportHeaderArea.getSections().getSection(0);
    reportDefController.getReportObjectController().add(chartObject, chartSection, 1);
Example: 
This sample creates and adds a pie chart to the header section of a report.
void addChart(ReportClientDocument rcd) throws ReportSDKException
{
  String chartTitle = "myChart";
  ChartDefinition chartDefinition = new ChartDefinition();
  chartDefinition.setChartType(ChartType.group);
        
  IDataDefinition dataDefinition = rcd.getDataDefController().getDataDefinition();
        
  Fields<IField> conditionFields = new Fields<IField>();
  IField field = dataDefinition.getGroups().getGroup(0).getConditionField();
  conditionFields.addElement(field);
  chartDefinition.setConditionFields(conditionFields);
        
  Fields<IField> dataFields = new Fields<IField>();
  for (int i = 0; i < dataDefinition.getSummaryFields().size(); i++)
  {
      IField summaryField = dataDefinition.getSummaryFields().getField(i);
      dataFields.addElement(summaryField);
  }
  
  chartDefinition.setDataFields(dataFields);
        
  ChartObject chartObject = new ChartObject();
  chartObject.setChartDefinition(chartDefinition);
        
  ChartStyleType chartStyleType = ChartStyleType.pie;
  AreaSectionKind chartPlacement = AreaSectionKind.pageHeader;
        
  chartObject.getChartStyle().setType(chartStyleType);
  chartObject.setChartReportArea(chartPlacement);
  chartObject.getChartStyle().getTextOptions().setTitle(chartTitle);
        
  chartObject.setHeight(5000);
  chartObject.setWidth(5000);
  chartObject.setTop(1000);
        
  ReportDefController reportDefController = rcd.getReportDefController();
  IArea reportHeaderArea = reportDefController.getReportDefinition().getReportHeaderArea();
  Section chartSection = (Section)reportHeaderArea.getSections().getSection(0);
  reportDefController.getReportObjectController().add(chartObject, chartSection, 1);
}
This list includes the classes used by the sample code:
  • com.crystaldecisions.sdk.occa.report.application.ReportClientDocument
  • com.crystaldecisions.sdk.occa.report.application.ReportDefController
  • com.crystaldecisions.sdk.occa.report.data.IField
  • com.crystaldecisions.sdk.occa.report.data.Field
  • com.crystaldecisions.sdk.occa.report.data.Fields
  • com.crystaldecisions.sdk.occa.report.data.IDataDefinition
  • com.crystaldecisions.sdk.occa.report.definition.AreaSectionKind
  • com.crystaldecisions.sdk.occa.report.definition.ChartDefinition
  • com.crystaldecisions.sdk.occa.report.definition.ChartType
  • com.crystaldecisions.sdk.occa.report.definition.ChartStyleType
  • com.crystaldecisions.sdk.occa.report.definition.ChartObject
  • com.crystaldecisions.sdk.occa.report.definition.IArea
  • com.crystaldecisions.sdk.occa.report.definition.Section
  • com.crystaldecisions.sdk.occa.report.lib.ReportSDKException