gernotbelger@9005: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9005: * Software engineering by gernotbelger@9005: * Björnsen Beratende Ingenieure GmbH gernotbelger@9005: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@9005: * gernotbelger@9005: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9005: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9005: * documentation coming with Dive4Elements River for details. gernotbelger@9005: */ gernotbelger@9005: package org.dive4elements.river.artifacts.common; gernotbelger@9005: gernotbelger@9005: import net.sf.jasperreports.engine.JRBand; gernotbelger@9005: import net.sf.jasperreports.engine.JRChild; gernotbelger@9005: import net.sf.jasperreports.engine.JRElement; gernotbelger@9005: import net.sf.jasperreports.engine.design.JasperDesign; gernotbelger@9005: gernotbelger@9005: /** gernotbelger@9005: * @author Domenico Nardi Tironi gernotbelger@9005: */ gernotbelger@9005: public class JasperDesigner { gernotbelger@9005: gernotbelger@9005: private final JasperDesign design; gernotbelger@9005: private final MetaAndTableJRDataSource source; gernotbelger@9005: private int startpageOffset = 0; gernotbelger@9005: gernotbelger@9005: public JasperDesigner(final JasperDesign design, final MetaAndTableJRDataSource source) { gernotbelger@9005: this.design = design; gernotbelger@9005: this.source = source; gernotbelger@9005: } gernotbelger@9005: gernotbelger@9005: public void removeColumn(final String key) { gernotbelger@9005: gernotbelger@9005: final JRBand colchildren = this.design.getColumnHeader(); gernotbelger@9005: final JRBand datachildren = this.design.getDetailSection().getBands()[0]; gernotbelger@9005: int width = 0; gernotbelger@9005: if (colchildren != null && datachildren != null) { gernotbelger@9005: gernotbelger@9005: final JRElement elementCol = colchildren.getElementByKey(key); gernotbelger@9005: final JRElement elementData = datachildren.getElementByKey(key); gernotbelger@9005: if (elementCol != null && elementData != null) { gernotbelger@9005: width = elementCol.getWidth() + width; gernotbelger@9005: final int indexCol = colchildren.getChildren().indexOf(elementCol); gernotbelger@9005: final int indexData = datachildren.getChildren().indexOf(elementData); gernotbelger@9005: gernotbelger@9005: elementCol.getElementGroup().getChildren().remove(elementCol); gernotbelger@9005: elementData.getElementGroup().getChildren().remove(elementData); gernotbelger@9005: gernotbelger@9005: for (int j = indexCol; j < colchildren.getChildren().size(); j++) { gernotbelger@9005: final JRChild element = colchildren.getChildren().get(j); gernotbelger@9005: if (element instanceof JRElement) { gernotbelger@9005: ((JRElement) element).setX(((JRElement) element).getX() - width); gernotbelger@9005: } gernotbelger@9005: } gernotbelger@9005: for (int j = indexData; j < datachildren.getChildren().size(); j++) { gernotbelger@9005: final JRChild element = datachildren.getChildren().get(j); gernotbelger@9005: if (element instanceof JRElement) { gernotbelger@9005: ((JRElement) element).setX(((JRElement) element).getX() - width); gernotbelger@9005: } gernotbelger@9005: } gernotbelger@9005: } gernotbelger@9005: gernotbelger@9005: // width auf letzte spalte schlagen gernotbelger@9005: final JRElement elementColLast = colchildren.getElements()[colchildren.getElements().length - 1]; gernotbelger@9005: if (elementColLast != null) { gernotbelger@9005: elementColLast.setWidth(elementColLast.getWidth() + width); gernotbelger@9005: } gernotbelger@9005: final JRElement elementDataLast = datachildren.getElements()[datachildren.getElements().length - 1]; gernotbelger@9005: if (elementDataLast != null) { gernotbelger@9005: elementDataLast.setWidth(elementDataLast.getWidth() + width); gernotbelger@9005: } gernotbelger@9005: } else { gernotbelger@9005: // TODO: LOG gernotbelger@9005: System.out.print("Column not found for key: " + key); gernotbelger@9005: } gernotbelger@9005: gernotbelger@9005: } gernotbelger@9005: gernotbelger@9005: JasperDesign getDesign() { gernotbelger@9005: return this.design; gernotbelger@9005: } gernotbelger@9005: gernotbelger@9005: public MetaAndTableJRDataSource getSource() { gernotbelger@9005: return this.source; gernotbelger@9005: } gernotbelger@9005: gernotbelger@9005: public void setPagesCount(final int pagesCount) { gernotbelger@9005: this.startpageOffset = pagesCount; gernotbelger@9005: } gernotbelger@9005: gernotbelger@9005: public int getPagesCount() { gernotbelger@9005: gernotbelger@9005: return this.startpageOffset; gernotbelger@9005: } gernotbelger@9005: }