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

http://dive4elements.wald.intevation.org