net.sf.dynamicreports.test.jasper.tableofcontents.TableOfContents3Test.java Source code

Java tutorial

Introduction

Here is the source code for net.sf.dynamicreports.test.jasper.tableofcontents.TableOfContents3Test.java

Source

/**
 * DynamicReports - Free Java reporting library for creating reports dynamically
 *
 * Copyright (C) 2010 - 2014 Ricardo Mariaca
 * http://www.dynamicreports.org
 *
 * This file is part of DynamicReports.
 *
 * DynamicReports is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * DynamicReports is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with DynamicReports. If not, see <http://www.gnu.org/licenses/>.
 */

package net.sf.dynamicreports.test.jasper.tableofcontents;

import static net.sf.dynamicreports.report.builder.DynamicReports.*;
import junit.framework.Assert;
import net.sf.dynamicreports.jasper.builder.JasperReportBuilder;
import net.sf.dynamicreports.report.builder.component.TextFieldBuilder;
import net.sf.dynamicreports.report.definition.expression.DRIExpression;
import net.sf.dynamicreports.test.jasper.AbstractJasperValueTest;
import net.sf.jasperreports.engine.DefaultJasperReportsContext;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRPrintText;
import net.sf.jasperreports.engine.util.JRStyledTextUtil;

import org.apache.commons.lang3.StringUtils;

/**
 * @author Ricardo Mariaca (r.mariaca@dynamicreports.org)
 */
public class TableOfContents3Test extends AbstractJasperValueTest {
    private DRIExpression<String> labelExpression1;
    private DRIExpression<String> labelExpression2;
    private DRIExpression<String> labelExpression3;
    private DRIExpression<String> labelExpression4;
    private DRIExpression<String> labelExpression5;
    private DRIExpression<String> labelExpression6;

    @Override
    protected void configureReport(JasperReportBuilder rb) {
        TextFieldBuilder<String> textField1 = cmp.text("text1");
        labelExpression1 = textField1.getComponent().getValueExpression();
        TextFieldBuilder<String> textField6 = cmp.text("text6");
        labelExpression6 = textField6.getComponent().getValueExpression();

        rb.tableOfContents()
                .title(textField1.setTableOfContentsHeading(tableOfContentsHeading()),
                        cmp.subreport(createSubreport1()))
                .summary(cmp.subreport(createSubreport3()),
                        textField6.setTableOfContentsHeading(tableOfContentsHeading()));
    }

    private JasperReportBuilder createSubreport1() {
        TextFieldBuilder<String> textField2 = cmp.text("text2");
        labelExpression2 = textField2.getComponent().getValueExpression();
        TextFieldBuilder<String> textField4 = cmp.text("text4");
        labelExpression4 = textField4.getComponent().getValueExpression();

        JasperReportBuilder report = report();
        report.title(textField2.setTableOfContentsHeading(tableOfContentsHeading()));
        report.title(cmp.subreport(createSubreport2()));
        report.title(textField4.setTableOfContentsHeading(tableOfContentsHeading()));
        report.detailHeader(cmp.verticalGap(10));
        report.setDataSource(new JREmptyDataSource(50));
        return report;
    }

    private JasperReportBuilder createSubreport2() {
        TextFieldBuilder<String> textField3 = cmp.text("text3");
        labelExpression3 = textField3.getComponent().getValueExpression();

        JasperReportBuilder report = report();
        report.title(textField3.setTableOfContentsHeading(tableOfContentsHeading()));
        report.detailHeader(cmp.verticalGap(10));
        report.setDataSource(new JREmptyDataSource(80));
        return report;
    }

    private JasperReportBuilder createSubreport3() {
        TextFieldBuilder<String> textField5 = cmp.text("text5");
        labelExpression5 = textField5.getComponent().getValueExpression();

        JasperReportBuilder report = report();
        report.title(textField5.setTableOfContentsHeading(tableOfContentsHeading()));
        report.detailHeader(cmp.verticalGap(10));
        report.setDataSource(new JREmptyDataSource(50));
        return report;
    }

    @Override
    protected boolean serializableTest() {
        return false;
    }

    @Override
    public void test() {
        super.test();

        numberOfPagesTest(4);

        elementValueTest("title.textField1", "Table of contents");

        elementCountTest("detail.textField1", 6);

        String anchorName = labelExpression1.getName() + "_0";
        elementValueTest("detail.textField1", 0, "text1");
        JRPrintText text = (JRPrintText) getElementAt("detail.textField1", 0);
        Assert.assertEquals("text anchor", anchorName, text.getHyperlinkAnchor());
        JRPrintText dots = (JRPrintText) getElementAt("detail.textField2", 0);
        String value = JRStyledTextUtil.getInstance(DefaultJasperReportsContext.getInstance())
                .getTruncatedText(dots);
        Assert.assertTrue("dots", StringUtils.containsOnly(value, "."));
        Assert.assertEquals("dots anchor", anchorName, dots.getHyperlinkAnchor());
        JRPrintText pageIndex = (JRPrintText) getElementAt("detail.textField3", 0);
        Assert.assertEquals("pageIndex anchor", anchorName, pageIndex.getHyperlinkAnchor());

        anchorName = labelExpression2.getName() + "_0";
        elementValueTest("detail.textField1", 1, "text2");
        text = (JRPrintText) getElementAt("detail.textField1", 1);
        Assert.assertEquals("text anchor", anchorName, text.getHyperlinkAnchor());
        dots = (JRPrintText) getElementAt("detail.textField2", 1);
        value = JRStyledTextUtil.getInstance(DefaultJasperReportsContext.getInstance()).getTruncatedText(dots);
        Assert.assertTrue("dots", StringUtils.containsOnly(value, "."));
        Assert.assertEquals("dots anchor", anchorName, dots.getHyperlinkAnchor());
        pageIndex = (JRPrintText) getElementAt("detail.textField3", 1);
        Assert.assertEquals("pageIndex anchor", anchorName, pageIndex.getHyperlinkAnchor());

        anchorName = labelExpression3.getName() + "_0";
        elementValueTest("detail.textField1", 2, "text3");
        text = (JRPrintText) getElementAt("detail.textField1", 2);
        Assert.assertEquals("text anchor", anchorName, text.getHyperlinkAnchor());
        dots = (JRPrintText) getElementAt("detail.textField2", 2);
        value = JRStyledTextUtil.getInstance(DefaultJasperReportsContext.getInstance()).getTruncatedText(dots);
        Assert.assertTrue("dots", StringUtils.containsOnly(value, "."));
        Assert.assertEquals("dots anchor", anchorName, dots.getHyperlinkAnchor());
        pageIndex = (JRPrintText) getElementAt("detail.textField3", 2);
        Assert.assertEquals("pageIndex anchor", anchorName, pageIndex.getHyperlinkAnchor());

        anchorName = labelExpression4.getName() + "_0";
        elementValueTest("detail.textField1", 3, "text4");
        text = (JRPrintText) getElementAt("detail.textField1", 3);
        Assert.assertEquals("text anchor", anchorName, text.getHyperlinkAnchor());
        dots = (JRPrintText) getElementAt("detail.textField2", 3);
        value = JRStyledTextUtil.getInstance(DefaultJasperReportsContext.getInstance()).getTruncatedText(dots);
        Assert.assertTrue("dots", StringUtils.containsOnly(value, "."));
        Assert.assertEquals("dots anchor", anchorName, dots.getHyperlinkAnchor());
        pageIndex = (JRPrintText) getElementAt("detail.textField3", 3);
        Assert.assertEquals("pageIndex anchor", anchorName, pageIndex.getHyperlinkAnchor());

        anchorName = labelExpression5.getName() + "_0";
        elementValueTest("detail.textField1", 4, "text5");
        text = (JRPrintText) getElementAt("detail.textField1", 4);
        Assert.assertEquals("text anchor", anchorName, text.getHyperlinkAnchor());
        dots = (JRPrintText) getElementAt("detail.textField2", 4);
        value = JRStyledTextUtil.getInstance(DefaultJasperReportsContext.getInstance()).getTruncatedText(dots);
        Assert.assertTrue("dots", StringUtils.containsOnly(value, "."));
        Assert.assertEquals("dots anchor", anchorName, dots.getHyperlinkAnchor());
        pageIndex = (JRPrintText) getElementAt("detail.textField3", 4);
        Assert.assertEquals("pageIndex anchor", anchorName, pageIndex.getHyperlinkAnchor());

        anchorName = labelExpression6.getName() + "_0";
        elementValueTest("detail.textField1", 5, "text6");
        text = (JRPrintText) getElementAt("detail.textField1", 5);
        Assert.assertEquals("text anchor", anchorName, text.getHyperlinkAnchor());
        dots = (JRPrintText) getElementAt("detail.textField2", 5);
        value = JRStyledTextUtil.getInstance(DefaultJasperReportsContext.getInstance()).getTruncatedText(dots);
        Assert.assertTrue("dots", StringUtils.containsOnly(value, "."));
        Assert.assertEquals("dots anchor", anchorName, dots.getHyperlinkAnchor());
        pageIndex = (JRPrintText) getElementAt("detail.textField3", 5);
        Assert.assertEquals("pageIndex anchor", anchorName, pageIndex.getHyperlinkAnchor());

        elementValueTest("detail.textField3", "1", "1", "1", "2", "2", "3");

        String name1 = labelExpression1.getName() + ".tocReference";
        String name2 = "title.textField1";
        elementCountTest(name1, 1);
        anchorName = labelExpression1.getName() + "_0";
        elementValueTest(name1, 0, "");
        JRPrintText reference = (JRPrintText) getElementAt(name1, 0);
        Assert.assertEquals("reference anchorName " + name1, anchorName, reference.getAnchorName());
        elementValueTest(name2, 1, "text1");
        reference = (JRPrintText) getElementAt(name2, 1);
        Assert.assertEquals("reference anchorName " + name2, anchorName, reference.getAnchorName());

        name1 = labelExpression2.getName() + ".tocReference";
        name2 = "title.textField1";
        elementCountTest(name1, 1);
        anchorName = labelExpression2.getName() + "_0";
        elementValueTest(name1, 0, "");
        reference = (JRPrintText) getElementAt(name1, 0);
        Assert.assertEquals("reference anchorName " + name1, anchorName, reference.getAnchorName());
        elementValueTest(name2, 2, "text2");
        reference = (JRPrintText) getElementAt(name2, 2);
        Assert.assertEquals("reference anchorName " + name2, anchorName, reference.getAnchorName());

        name1 = labelExpression3.getName() + ".tocReference";
        name2 = "title.textField1";
        elementCountTest(name1, 1);
        anchorName = labelExpression3.getName() + "_0";
        elementValueTest(name1, 0, "");
        reference = (JRPrintText) getElementAt(name1, 0);
        Assert.assertEquals("reference anchorName " + name1, anchorName, reference.getAnchorName());
        elementValueTest(name2, 3, "text3");
        reference = (JRPrintText) getElementAt(name2, 3);
        Assert.assertEquals("reference anchorName " + name2, anchorName, reference.getAnchorName());

        name1 = labelExpression4.getName() + ".tocReference";
        name2 = "title.textField2";
        elementCountTest(name1, 1);
        anchorName = labelExpression4.getName() + "_0";
        elementValueTest(name1, 0, "");
        reference = (JRPrintText) getElementAt(name1, 0);
        Assert.assertEquals("reference anchorName " + name1, anchorName, reference.getAnchorName());
        elementValueTest(name2, 0, "text4");
        reference = (JRPrintText) getElementAt(name2, 0);
        Assert.assertEquals("reference anchorName " + name2, anchorName, reference.getAnchorName());

        name1 = labelExpression5.getName() + ".tocReference";
        name2 = "title.textField1";
        elementCountTest(name1, 1);
        anchorName = labelExpression5.getName() + "_0";
        elementValueTest(name1, 0, "");
        reference = (JRPrintText) getElementAt(name1, 0);
        Assert.assertEquals("reference anchorName " + name1, anchorName, reference.getAnchorName());
        elementValueTest(name2, 4, "text5");
        reference = (JRPrintText) getElementAt(name2, 4);
        Assert.assertEquals("reference anchorName " + name2, anchorName, reference.getAnchorName());

        name1 = labelExpression6.getName() + ".tocReference";
        name2 = "summary.textField1";
        elementCountTest(name1, 1);
        anchorName = labelExpression6.getName() + "_0";
        elementValueTest(name1, 0, "");
        reference = (JRPrintText) getElementAt(name1, 0);
        Assert.assertEquals("reference anchorName " + name1, anchorName, reference.getAnchorName());
        elementValueTest(name2, 0, "text6");
        reference = (JRPrintText) getElementAt(name2, 0);
        Assert.assertEquals("reference anchorName " + name2, anchorName, reference.getAnchorName());
    }
}