Шустрый

Профиль
Группа: Участник
Сообщений: 87
Регистрация: 22.10.2006
Репутация: нет Всего: нет
|
Собстна графики созданые с помощью BIRT Report Design в Eclipse рисует на ура. А вот если динамически, то нет. имейдж с крафиком в темпой директории - 0 байт(((. Шаблон отчета (чистый лист) | Код | <?xml version="1.0" encoding="UTF-8"?> <report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.20" id="1"> <property name="createdBy">Eclipse BIRT Designer Version 2.5.1.v20090903 Build <2.5.1.v20090917-1447></property> <property name="units">in</property> <property name="iconFile">/templates/blank_report.gif</property> <property name="bidiLayoutOrientation">ltr</property> <styles> <style name="report" id="4"> <property name="fontFamily">sans-serif</property> <property name="fontSize">10pt</property> </style> <style name="crosstab-cell" id="5"> <property name="borderBottomColor">#CCCCCC</property> <property name="borderBottomStyle">solid</property> <property name="borderBottomWidth">1pt</property> <property name="borderLeftColor">#CCCCCC</property> <property name="borderLeftStyle">solid</property> <property name="borderLeftWidth">1pt</property> <property name="borderRightColor">#CCCCCC</property> <property name="borderRightStyle">solid</property> <property name="borderRightWidth">1pt</property> <property name="borderTopColor">#CCCCCC</property> <property name="borderTopStyle">solid</property> <property name="borderTopWidth">1pt</property> </style> <style name="crosstab" id="6"> <property name="borderBottomColor">#CCCCCC</property> <property name="borderBottomStyle">solid</property> <property name="borderBottomWidth">1pt</property> <property name="borderLeftColor">#CCCCCC</property> <property name="borderLeftStyle">solid</property> <property name="borderLeftWidth">1pt</property> <property name="borderRightColor">#CCCCCC</property> <property name="borderRightStyle">solid</property> <property name="borderRightWidth">1pt</property> <property name="borderTopColor">#CCCCCC</property> <property name="borderTopStyle">solid</property> <property name="borderTopWidth">1pt</property> </style> </styles> <page-setup> <simple-master-page name="Simple MasterPage" id="2"> <page-footer> <text id="3"> <property name="contentType">html</property> <text-property name="content"><![CDATA[<value-of>new Date()</value-of>]]></text-property> </text> </page-footer> </simple-master-page> </page-setup> </report>
|
| Код | package servlets;
import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.logging.Level; import java.util.logging.Logger;
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import org.eclipse.birt.chart.model.ChartWithoutAxes; import org.eclipse.birt.chart.model.attribute.DataPointComponent; import org.eclipse.birt.chart.model.attribute.DataPointComponentType; import org.eclipse.birt.chart.model.attribute.impl.BoundsImpl; import org.eclipse.birt.chart.model.attribute.impl.ColorDefinitionImpl; import org.eclipse.birt.chart.model.attribute.impl.DataPointComponentImpl; import org.eclipse.birt.chart.model.attribute.impl.GradientImpl; import org.eclipse.birt.chart.model.attribute.impl.JavaNumberFormatSpecifierImpl; import org.eclipse.birt.chart.model.component.Series; import org.eclipse.birt.chart.model.component.impl.SeriesImpl; import org.eclipse.birt.chart.model.data.BaseSampleData; import org.eclipse.birt.chart.model.data.DataFactory; import org.eclipse.birt.chart.model.data.OrthogonalSampleData; import org.eclipse.birt.chart.model.data.Query; import org.eclipse.birt.chart.model.data.SampleData; import org.eclipse.birt.chart.model.data.SeriesDefinition; import org.eclipse.birt.chart.model.data.impl.QueryImpl; import org.eclipse.birt.chart.model.data.impl.SeriesDefinitionImpl; import org.eclipse.birt.chart.model.impl.ChartWithoutAxesImpl; import org.eclipse.birt.chart.model.type.PieSeries; import org.eclipse.birt.chart.model.type.impl.PieSeriesImpl; import org.eclipse.birt.report.engine.api.EngineConstants; import org.eclipse.birt.report.engine.api.HTMLRenderContext; import org.eclipse.birt.report.engine.api.HTMLRenderOption; import org.eclipse.birt.report.engine.api.HTMLServerImageHandler; import org.eclipse.birt.report.engine.api.IReportEngine; import org.eclipse.birt.report.engine.api.IReportRunnable; import org.eclipse.birt.report.engine.api.IRunAndRenderTask; import org.eclipse.birt.report.model.api.ElementFactory; import org.eclipse.birt.report.model.api.ExtendedItemHandle; import org.eclipse.birt.report.model.api.OdaDataSetHandle; import org.eclipse.birt.report.model.api.OdaDataSourceHandle; import org.eclipse.birt.report.model.api.PropertyHandle; import org.eclipse.birt.report.model.api.ReportDesignHandle; import org.eclipse.birt.report.model.api.StructureFactory; import org.eclipse.birt.report.model.api.activity.SemanticException; import org.eclipse.birt.report.model.api.command.ContentException; import org.eclipse.birt.report.model.api.command.NameException; import org.eclipse.birt.report.model.api.elements.structures.ComputedColumn; import org.eclipse.birt.report.model.api.extension.ExtendedElementException;
import report.BirtEngine;
public class DynamicChart2 extends HttpServlet {
/** * */ private static final long serialVersionUID = 1L; /** * Constructor of the object. */ private IReportEngine birtReportEngine = null; protected static Logger logger = Logger.getLogger("org.eclipse.birt");
public DynamicChart2() { super(); }
/** * Destruction of the servlet. */ public void destroy() { super.destroy(); BirtEngine.destroyBirtEngine(); }
/** * The doGet method of the servlet. * * */ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// get report name and launch the engine resp.setContentType("text/html"); // resp.setContentType( "application/pdf" ); // resp.setHeader ("Content-Disposition","inline; filename=test.pdf"); String reportName = req.getParameter("ReportName"); reportName = "Blank.rptdesign"; // String[] cols = (String[])req.getParameterMap().get("dyna1"); String[] cols = { "CUST_ID", "test" }; ServletContext sc = req.getSession().getServletContext(); this.birtReportEngine = BirtEngine.getBirtEngine(sc); HTMLRenderContext renderContext = new HTMLRenderContext(); renderContext.setSupportedImageFormats("JPG;PNG;BMP;SVG"); renderContext.setBaseImageURL(req.getContextPath() + "/Images"); renderContext.setImageDirectory(sc.getRealPath("/Images")); logger.log(Level.FINE, "image directory " + sc.getRealPath("/Images")); System.out.println("stdout image directory " + sc.getRealPath("/Images"));
HashMap<String, HTMLRenderContext> contextMap = new HashMap<String, HTMLRenderContext>(); contextMap.put(EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, renderContext); IReportRunnable design; try { // Open report design design = birtReportEngine.openReportDesign(sc .getRealPath("/Reports") + "/" + reportName); ReportDesignHandle report = (ReportDesignHandle) design .getDesignHandle(); buildReport(cols, report);
// create task to run and render report IRunAndRenderTask task = birtReportEngine .createRunAndRenderTask(design); task.setAppContext(contextMap);
// set output options HTMLRenderOption options = new HTMLRenderOption(); options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML); options.setImageHandler(new HTMLServerImageHandler()); options.setSupportedImageFormats("JPG;PNG;BMP;SVG"); options.setBaseImageURL(req.getContextPath() + "/Images"); options.setImageDirectory(sc.getRealPath("/Images")); // options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_PDF); options.setOutputStream(resp.getOutputStream()); task.setRenderOption(options);
// run report task.run(); task.close(); } catch (Exception e) {
e.printStackTrace(); throw new ServletException(e); } }
public void buildReport(String[] cols, ReportDesignHandle designHandle) {
ExtendedItemHandle eih = null;//$NON-NLS-1$ try { ElementFactory elementFactory = designHandle.getElementFactory();
buildDataSource(elementFactory, designHandle);
buildDataSet(cols, "From LF_CUSTOMERS", elementFactory, designHandle);
eih = elementFactory.newExtendedItem(null, "Chart");
ComputedColumn cs1, cs2; cs1 = StructureFactory.createComputedColumn(); cs1.setName("CUST_ID"); cs1.setDataType("string"); cs2 = StructureFactory.createComputedColumn(); cs2.setName("test"); cs2.setDataType("integer");
try { eih.setHeight("400pt");//$NON-NLS-1$ eih.setWidth("400pt");//$NON-NLS-1$ // eih.setProperty ( ExtendedItemHandle.DATA_SET_PROP, "ChartData");//$NON-NLS-1$ eih.setProperty("outputFormat", "JPG"); eih.setProperty(ExtendedItemHandle.DATA_SET_PROP, designHandle.findDataSet("ds"));//$NON-NLS-1$
PropertyHandle computedSet = eih.getColumnBindings(); cs1.setExpression("dataSetRow[\"CUST_ID\"]");//$NON-NLS-1$ computedSet.addItem(cs1); cs2.setExpression("dataSetRow[\"test\"]");//$NON-NLS-1$ computedSet.addItem(cs2); } catch (SemanticException e) { e.printStackTrace(); }
ChartWithoutAxes cwoaPie = ChartWithoutAxesImpl.create(); cwoaPie.setType("Pie Chart"); cwoaPie.setSubType("Standard"); cwoaPie.getTitle().setVisible(false); cwoaPie.getBlock().setBounds(BoundsImpl.create(0, 0, 252, 288)); cwoaPie.getBlock().getOutline().setVisible(true); cwoaPie.getBlock().setBackground( GradientImpl.create(ColorDefinitionImpl.create(204, 254, 204), ColorDefinitionImpl.create(254, 226, 240), -35, false)); cwoaPie.getPlot().getClientArea().setBackground(ColorDefinitionImpl.TRANSPARENT()); cwoaPie.getLegend().setBackground(ColorDefinitionImpl.TRANSPARENT()); cwoaPie.getLegend().getClientArea().setBackground(ColorDefinitionImpl.TRANSPARENT());
SampleData sd = DataFactory.eINSTANCE.createSampleData(); BaseSampleData sdBase = DataFactory.eINSTANCE.createBaseSampleData(); sdBase.setDataSetRepresentation("'A','B','C','D','E'"); sd.getBaseSampleData().add(sdBase);
OrthogonalSampleData sdOrthogonal = DataFactory.eINSTANCE.createOrthogonalSampleData(); sdOrthogonal.setDataSetRepresentation("6,4,12,8,10"); sdOrthogonal.setSeriesDefinitionIndex(0); sd.getOrthogonalSampleData().add(sdOrthogonal);
cwoaPie.setSampleData(sd);
Series seCategory = SeriesImpl.create(); Query query = QueryImpl.create("row[\"CUST_ID\"]"); seCategory.getDataDefinition().add(query);
SeriesDefinition series = SeriesDefinitionImpl.create(); series.getSeries().add(seCategory); cwoaPie.getSeriesDefinitions().add(series);
PieSeries ps = (PieSeries) PieSeriesImpl.create(); Query query2 = QueryImpl.create("row[\"test\"]"); ps.getDataDefinition().add(query2); ps.setExplosion(0);
SeriesDefinition seGroup = SeriesDefinitionImpl.create(); Query query1 = QueryImpl.create("row[\"CUST_ID\"]"); seGroup.setQuery(query1); series.getSeriesPalette().update(0); series.getSeriesDefinitions().add(seGroup); seGroup.getSeries().add(ps);
DataPointComponent dpc = DataPointComponentImpl.create(DataPointComponentType.ORTHOGONAL_VALUE_LITERAL, JavaNumberFormatSpecifierImpl.create("###,###")); ps.getDataPoint().getComponents().clear(); ps.getDataPoint().getComponents().add(dpc); ps.getLabel().setVisible(true); try { // Add chart instance to IReportItem eih.getReportItem().setProperty("chart.instance", cwoaPie);//$NON-NLS-1$ } catch (ExtendedElementException e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } try { designHandle.getBody().add(eih); } catch (ContentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NameException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SemanticException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
void buildDataSource(ElementFactory designFactory, ReportDesignHandle designHandle) throws SemanticException {
OdaDataSourceHandle dsHandle = designFactory.newOdaDataSource( "Data Source", "org.eclipse.birt.report.data.oda.jdbc"); dsHandle.setProperty("odaDriverClass", "com.mysql.jdbc.Driver"); dsHandle.setProperty("odaURL", "jdbc:mysql://localhost:3306/loopfuse"); dsHandle.setProperty("odaUser", "root"); dsHandle.setProperty("odaPassword", "");
designHandle.getDataSources().add(dsHandle);
}
void buildDataSet(String[] cols, String fromClause, ElementFactory designFactory, ReportDesignHandle designHandle) throws SemanticException {
OdaDataSetHandle dsHandle = designFactory.newOdaDataSet("ds", "org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet"); dsHandle.setDataSource("Data Source"); String qry = "Select "; for (int i = 0; i < cols.length; i++) { qry += " " + cols[i]; if (i != (cols.length - 1)) { qry += ","; }
} qry += " " + fromClause;
dsHandle.setQueryText(qry);
designHandle.getDataSets().add(dsHandle);
}
/** * The doPost method of the servlet. * * */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html"); PrintWriter out = response.getWriter(); out .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.println(" Post Not Supported"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); }
/** * Initialization of the servlet. * * * @throws ServletException * if an error occure */ public void init() throws ServletException { BirtEngine.initBirtConfig();
}
}
|
Сразу прошу прощения за переменные... с 2-3 примеров лепил... Словом на выходе у меня 3 "кружочка"  . так и не победил это(((. Прошу помощи. Это сообщение отредактировал(а) StandartenFuhrer - 2.12.2009, 13:06
|