Приложение зависает при создании нескольких графиков с помощью JasperReports - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь сгенерировать несколько графиков, используя подход, описанный здесь: Как создать несколько диаграмм одного типа, но с разными базами данных, используя JRBeanCollectionDatasource в Jasperreports

Мне нужно создать несколько диаграмм в отчете с учетом List<List<ChartBean<Double,Double>> который заполняется данными, которые я получаю из файла.

ChartBean объявлен следующим образом:

public class ChartBean<T,U> {
    T xCoordinate;
    U yCoordinate;
    String series;

    public ChartBean(T x,U y,String series) {
        this.xCoordinate = x;
        this.yCoordinate = y;
        this.series = series;
    }

    public void setxCoordinate(T x) {
        this.xCoordinate = x;
    }

    public void setyCoordinate(U y) {
        this.yCoordinate = y;
    }

    public T getxCoordinate() {
        return xCoordinate;
    }

    public U getyCoordinate() {
        return yCoordinate;
    }

    public String setseries() {
        return series;
    }

    public String getseries() {
        return series; 
    }
}

Я передаю параметры в генератор шаблонов следующим образом parameters.put("XYDataSource", values);, где значения содержат список списка координат.

Что я получаю, так это то, что мое приложение зависает и не генерирует никаких отчетов. Я несколько раз проверил содержимое XML, и оно похоже на то, что описано в посте. Я попытался также сгенерировать один график (без использования списка списков), и он работает.

У меня есть верхний отчет, сводная полоса которого содержит подотчет «sub_charts.xml». В полосу подробностей я поместил еще один подотчет, который содержит линейную диаграмму, и использую поле "_THIS", чтобы передать List<ChartBean<Double,Double> Содержание подотчетов сообщается здесь.

sub_charts.jrxml

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="subcharts_2" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="97e07501-37b1-4c04-970b-33f120c8264d">
<parameter name="REPORT_DIR" class="java.lang.String"/>
<field name="_THIS" class="java.util.List">
    <fieldDescription><![CDATA[_THIS]]></fieldDescription>
</field>
<detail>
    <band height="359">
        <subreport>
            <reportElement x="22" y="25" width="510" height="320" uuid="6ea2325b-969e-472a-9d49-d5c33667fab5"/>
            <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{_THIS})]]></dataSourceExpression>
            <subreportExpression><![CDATA[$P{REPORT_DIR}+"/sub_chart.jasper"]]></subreportExpression>
        </subreport>
    </band>
</detail>

sub_chart.jrxml

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="subchart_2" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="6cdd6eb2-73da-4026-823b-574910e37c68">
<field name="series" class="java.lang.String"/>
<field name="xCoordinate" class="java.lang.Double"/>
<field name="yCoordinate" class="java.lang.Double"/>
<summary>
    <band height="270">
        <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
        <xyLineChart>
            <chart evaluationTime="Report">
                <reportElement isPrintRepeatedValues="false" x="0" y="0" width="555" height="270" uuid="4bfd2379-7617-47fb-9c2a-4eeb0b72eadf"/>
                <chartTitle/>
                <chartSubtitle/>
                <chartLegend/>
            </chart>
            <xyDataset>
                <xySeries autoSort="true">
                    <seriesExpression><![CDATA[$F{series}]]></seriesExpression>
                    <xValueExpression><![CDATA[$F{xCoordinate}]]></xValueExpression>
                    <yValueExpression><![CDATA[$F{yCoordinate}]]></yValueExpression>
                </xySeries>
            </xyDataset>
            <linePlot>
                <plot/>
                <categoryAxisFormat>
                    <axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
                </categoryAxisFormat>
                <valueAxisFormat>
                    <axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
                </valueAxisFormat>
            </linePlot>
        </xyLineChart>
    </band>
</summary>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...