私は開発中のアプリにチャート作成拡張機能を実装しようと懸命に努力しています: したがって、私の問題は、BIRT でこれを行うためのコード (定型コード) を作成したことです。
コードのどこかで、データセットをシリーズにリンクし、シリーズを seriesdefinition オブジェクトにリンクする必要があります。これは、最終的にチャート seriesDefinitions にこのようにアタッチされます
RadarSeries radarSeries = RadarSeriesImpl.create();
radarSeries.setDataSet(numberDataValues);
radarSeries.setSeriesIdentifier("Number data values");
radarSeries.getLabel().setVisible(true);
ここで、numberDataValues は double の配列です。次に、 seriesDefinition を作成します。
SeriesDefinition seriesDefinition = SeriesDefinitionImpl.create();
seriesDefinition.getSeriesPalette().shift(0);
しかし、ここで、次のように自分のraderSeriesをseriesDefinitionにリンクする必要があります:
seriesDefinition.getSeriesDefinitions().add(radarSeries);
問題:コードから呼び出そうとするときにgetSeriesDefinitions()メソッドがありません(Eclipse で Ctrl+Space を実行)。
言うまでもなく、 myChart オブジェクトでgetSeriesDefinitions()メソッドを呼び出すことはできません。
myChart.getSeriesDefinitions().add(seriesDefinition);
ご参考までに: 私は自分の birt jar をローカルの Maven リポジトリに手動で含めました。これらの依存関係の詳細は次のとおりです。
<dependency>
<groupId>org.eclipse.birt</groupId>
<artifactId>engineapi</artifactId>
<version>${birtVersion}</version>
</dependency>
<dependency>
<groupId>org.eclipse.birt</groupId>
<artifactId>coreapi</artifactId>
<version>${birtVersion}</version>
</dependency>
<dependency>
<groupId>org.eclipse.birt</groupId>
<artifactId>scriptapi</artifactId>
<version>${birtVersion}</version>
</dependency>
<dependency>
<groupId>org.eclipse.birt</groupId>
<artifactId>chartengineapi</artifactId>
<version>${birtVersion}</version>
</dependency>
ここで、${birtVersion} = 2.6.2
これは、RadarChart に関する birt の 2.6.2 リリースの公式例へのリンクです。レーダーチャートの公式リリースの例
誰かが私を助けることができますか?3日間のGoogle検索セッションでこれを行う方法を知らなかったなんて、本当に信じられません:それは深刻ではありません! ...その人気とその力を考えると、彼らはドキュメントにもっと力を注ぐべきだったと思います...
@Birt guyz (もしあれば) > あまりにも劇的な人で申し訳ありませんが、ドキュメント側は本当にひどいと思います...これについてあなたを助けられることを願っています(本当に、私はそうします)
コードは次のとおりです。
public String drawChart() {
// Birt Vars
IDeviceRenderer iDeviceRenderer = null;
IDisplayServer iDisplayServer = null;
RunTimeContext context;
Chart chart = null;
// Birt Platform configuration
PlatformConfig platformConfig = new PlatformConfig();
platformConfig.setProperty("STANDALONE", true);
// Creating Chart Engine
ChartEngine chartEngine = ChartEngine.instance(platformConfig);
IGenerator iGenerator = chartEngine.getGenerator();
if(iGenerator == null)
System.out.println("IGenerator NULL");
else
System.out.println("IGenerator NOT NULL");
try {
// iDeviceRenderer = chartEngine.getRenderer("dv.PNG");
iDeviceRenderer = chartEngine.getRenderer("dv.GIF");
iDisplayServer = iDeviceRenderer.getDisplayServer();
} catch (Exception e) {
e.printStackTrace();
}
// Creating Chart
ChartWithoutAxes radarChart = ChartWithoutAxesImpl.create( );
radarChart.setDimension( ChartDimension.TWO_DIMENSIONAL_LITERAL );
radarChart.setType(Radar.TYPE_LITERAL); //$NON-NLS-1$
radarChart.setSubType( "Standard Radar Chart" ); //$NON-NLS-1$
// Plot
radarChart.setSeriesThickness( 10 );
// Legend
Legend lg = radarChart.getLegend( );
lg.getOutline( ).setVisible( true );
// Title
radarChart.getTitle( )
.getLabel( )
.getCaption( )
.setValue( "Radar Chart" );//$NON-NLS-1$
try {
if(radarChart != null)
System.out.println("RADAR CHART NOT NULL");
else
System.out.println("RADAR CHART NULL!!!");
// PREPARE PHASE
context = Generator.instance().prepare(radarChart, null, null, ULocale.getDefault());
if(context == null)
System.out.println("CONTEXT NULL ");
else
System.out.println("CONTEXT NOT NULL");
//BIND PHASE : fetch data from DB
NumberDataSet numberDataValues = NumberDataSetImpl.create( new double[]{
54, 21, 75, 91, 37
} );
// Radar series
RadarSeries radarSeries = RadarSeriesImpl.create();
radarSeries.setDataSet(numberDataValues);
radarSeries.setSeriesIdentifier("Number data values");
radarSeries.getLabel().setVisible(true);
SeriesDefinitionImpl seriesDefinition = (SeriesDefinitionImpl) SeriesDefinitionImpl.create();
seriesDefinition.getSeriesPalette().shift(0);
// ERROR HERE : can't call the method
seriesDefinition.getSeriesDefinitions()
// RENDERING PHASE
if(iDisplayServer == null)
System.out.println("DISPLAY SERVER NULL");
else
System.out.println("DISPLAY SERVER NOT NULL");
GeneratedChartState generatedChartState = iGenerator.build(iDisplayServer, radarChart, null, null, context);
iGenerator.render(iDeviceRenderer, generatedChartState);
} catch (Exception e) {
e.printStackTrace();
}
}
編集+ソリューション
遅れて申し訳ありません:この質問を解決済みとしてマークするには、この回答を以前に投稿する必要がありました。RCP レポート デザイナーを使用してレポート ドキュメントを作成するだけです。ReportEngine/lib/*jars を /WEB-INF/lib にコピーします。また、WEB-INF/ の下に platform/ ディレクトリを作成し、新しく作成した WEB-INF/platform/ フォルダの下に BIRT ReportEngine の configuration/ および plugins/ ディレクトリをコピーします。BIRT RCP デザイナー ツールで作成した *.rptdesign ファイルを使用して、レポートを操作できる BIRT API を使用する必要があります...