我正试图以编程方式在我的BIRT应用程序中创建一个雷达图。似乎BIRT缺乏文档,所以我正在努力使用它(我想知道为什么它在如此少的文档下如此受欢迎)。
所以我的问题是,我不知道API和操作的顺序,我必须调用它有一个完全集成的图表。我想做的就是从数据库中获取一些数据,并在雷达图中显示它们(如这些:如何规范化雷达图的统计数据)
现在,我创建了一个这样的Servlet:
public class ChartRenderingServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private ChartEngine chartEngine = null;
private Chart chart = null;
private IDeviceRenderer iDeviceRenderer = null;
private IDisplayServer iDisplayServer = null;
private IGenerator iGenerator = null;
private String fontName = "Arial";
private float size = 10;
private boolean bBold = false;
private boolean bItalic = false;
private ColorDefinition cd = ColorDefinitionImpl.BLACK();
/**
* @see HttpServlet#HttpServlet()
*/
public ChartRenderingServlet() {
super();
// Starting platform
PlatformConfig platformConfig = new PlatformConfig();
platformConfig.setProperty("STANDALONE", true);
// Creating chart Engine
chartEngine = ChartEngine.instance(platformConfig);
iGenerator = chartEngine.getGenerator();
try {
iDeviceRenderer = chartEngine.getRenderer("dv.PNG");
iDisplayServer = iDeviceRenderer.getDisplayServer();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
RunTimeContext context;
chart = ChartWithoutAxesImpl.create();
chart.setType("RADAR");
try {
// PREPARE PHASE
context = Generator.instance().prepare(chart, null, null, ULocale.getDefault());
// BIND PHASE
//Long id = Long.valueOf(request.getParameter("id"));
NumberDataSet orthoValues = NumberDataSetImpl.create(new double[] {25, 35, 15, 5, 20});
RadarSeries radarSeries = RadarSeriesImpl.create();
radarSeries.setDataSet(orthoValues);
// RENDER PHASE
GeneratedChartState generatedChartState = iGenerator.build(iDisplayServer, chart, null, null, context);
iGenerator.render(iDeviceRenderer, generatedChartState);
} catch (ChartException e) {
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
任何帮助都将非常感激,因为我甚至不知道这是否正确。
谢谢,
没关系,
在开发BIRT报告驱动的应用程序时,在编码时尝试采用更高的抽象级别。我的意思是,没有必要针对低级API编写代码:只需使用rptdesign文件并利用Birt Runtime API直接编写应用程序。如果我有什么建议的话,我会说使用可用的主要API,也就是报告引擎API,它会加快你的开发。
很酷的是,你有很多可用的文档,因为它是开发基于birt的应用程序的最常见的方式。
tchusss…