Mercurial > dive4elements > river
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/common/JasperDesigner.java Tue Apr 17 13:19:56 2018 +0200 @@ -0,0 +1,94 @@ +/** 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; + } +} \ No newline at end of file