Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамические графики в BIRT 
:(
    Опции темы
StandartenFuhrer
Дата 30.11.2009, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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 &lt;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 "кружочка"  smile.

так и не победил это(((.

Прошу помощи.

Это сообщение отредактировал(а) StandartenFuhrer - 2.12.2009, 13:06
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java tools & IDE's | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.