view artifacts/src/main/java/org/dive4elements/river/artifacts/common/JasperDesigner.java @ 9005:460fcc128794

jasper multiple
author gernotbelger
date Tue, 17 Apr 2018 13:19:56 +0200
parents
children e6b63b2b41b9
line wrap: on
line source
/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
 * Software engineering by
 *  Björnsen Beratende Ingenieure GmbH
 *  Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
 *
 * This file is Free Software under the GNU AGPL (>=v3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * documentation coming with Dive4Elements River for details.
 */
package org.dive4elements.river.artifacts.common;

import net.sf.jasperreports.engine.JRBand;
import net.sf.jasperreports.engine.JRChild;
import net.sf.jasperreports.engine.JRElement;
import net.sf.jasperreports.engine.design.JasperDesign;

/**
 * @author Domenico Nardi Tironi
 */
public class JasperDesigner {

    private final JasperDesign design;
    private final MetaAndTableJRDataSource source;
    private int startpageOffset = 0;

    public JasperDesigner(final JasperDesign design, final MetaAndTableJRDataSource source) {
        this.design = design;
        this.source = source;
    }

    public void removeColumn(final String key) {

        final JRBand colchildren = this.design.getColumnHeader();
        final JRBand datachildren = this.design.getDetailSection().getBands()[0];
        int width = 0;
        if (colchildren != null && datachildren != null) {

            final JRElement elementCol = colchildren.getElementByKey(key);
            final JRElement elementData = datachildren.getElementByKey(key);
            if (elementCol != null && elementData != null) {
                width = elementCol.getWidth() + width;
                final int indexCol = colchildren.getChildren().indexOf(elementCol);
                final int indexData = datachildren.getChildren().indexOf(elementData);

                elementCol.getElementGroup().getChildren().remove(elementCol);
                elementData.getElementGroup().getChildren().remove(elementData);

                for (int j = indexCol; j < colchildren.getChildren().size(); j++) {
                    final JRChild element = colchildren.getChildren().get(j);
                    if (element instanceof JRElement) {
                        ((JRElement) element).setX(((JRElement) element).getX() - width);
                    }
                }
                for (int j = indexData; j < datachildren.getChildren().size(); j++) {
                    final JRChild element = datachildren.getChildren().get(j);
                    if (element instanceof JRElement) {
                        ((JRElement) element).setX(((JRElement) element).getX() - width);
                    }
                }
            }

            // width auf letzte spalte schlagen
            final JRElement elementColLast = colchildren.getElements()[colchildren.getElements().length - 1];
            if (elementColLast != null) {
                elementColLast.setWidth(elementColLast.getWidth() + width);
            }
            final JRElement elementDataLast = datachildren.getElements()[datachildren.getElements().length - 1];
            if (elementDataLast != null) {
                elementDataLast.setWidth(elementDataLast.getWidth() + width);
            }
        } else {
            // TODO: LOG
            System.out.print("Column not found for key: " + key);
        }

    }

    JasperDesign getDesign() {
        return this.design;
    }

    public MetaAndTableJRDataSource getSource() {
        return this.source;
    }

    public void setPagesCount(final int pagesCount) {
        this.startpageOffset = pagesCount;
    }

    public int getPagesCount() {

        return this.startpageOffset;
    }
}

http://dive4elements.wald.intevation.org