diff artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesExporter.java @ 9006:7134a4c7d1b6

U-Info S-Info general work
author gernotbelger
date Tue, 17 Apr 2018 13:20:25 +0200
parents fb9430250899
children ea3908c3cbb6
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesExporter.java	Tue Apr 17 13:19:56 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesExporter.java	Tue Apr 17 13:20:25 2018 +0200
@@ -9,17 +9,22 @@
  */
 package org.dive4elements.river.artifacts.uinfo.vegetationzones;
 
+import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 
+import org.apache.commons.lang.math.DoubleRange;
 import org.apache.log4j.Logger;
-import org.dive4elements.river.artifacts.common.GeneralResultType;
+import org.dive4elements.river.artifacts.common.I18NStrings;
+import org.dive4elements.river.artifacts.common.JasperReporter;
+import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource;
 import org.dive4elements.river.artifacts.common.ResultRow;
-import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType;
 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
 import org.dive4elements.river.artifacts.uinfo.commons.AbstractUInfoExporter;
+import org.dive4elements.river.artifacts.uinfo.commons.UInfoResultType;
 
 import au.com.bytecode.opencsv.CSVWriter;
+import net.sf.jasperreports.engine.JRException;
 
 /**
  * @author Domenico Nardi Tironi
@@ -30,7 +35,7 @@
     /** The log used in this exporter. */
     private static Logger log = Logger.getLogger(VegetationZonesExporter.class);
 
-    private static final String JASPER_FILE = "/jasper/uinfo.vegetationzones.jasper";
+    private static final String JASPER_FILE = "/jasper/templates/uinfo.vegetationzones.jrxml";
 
     @Override
     protected Logger getLog() {
@@ -41,6 +46,13 @@
     protected void writeCSVGlobalMetadata(final CSVWriter writer, final VegetationZonesCalculationResults results) {
         log.info("SalixLineExporter.writeCSVMeta");
         super.writeCSVGlobalMetadataDefaults(writer, results);
+
+        final DoubleRange calcRange = results.getCalcRange();
+        if (calcRange != null) {
+            // "# Ort/Bereich (km): "
+            writeCSVMetaEntry(writer, I18NStrings.CSV_META_RANGE, msg(I18NStrings.CSV_META_RANGE_LABEL), getKmFormatter().format(calcRange.getMinimumDouble()),
+                    getKmFormatter().format(calcRange.getMaximumDouble()));
+        }
     }
 
     /**
@@ -56,16 +68,9 @@
 
         final Collection<String> header = new ArrayList<>(11);
 
-        header.add(msg(GeneralResultType.station.getCsvHeader()));
-        header.add(msgUnit(SInfoResultType.flowdepth.getCsvHeader(), SInfoResultType.flowdepth.getUnit()));
-
-        header.add(msgUnit(SInfoResultType.waterlevel.getCsvHeader(), river.getWstUnit()));
-        header.add(msgUnit(SInfoResultType.discharge.getCsvHeader(), SInfoResultType.discharge.getUnit()));
-        header.add(msg(SInfoResultType.waterlevelLabel.getCsvHeader()));
-        header.add(msg(SInfoResultType.gaugeLabel.getCsvHeader()));
-        header.add(msgUnit(SInfoResultType.meanBedHeight.getCsvHeader(), river.getWstUnit()));
-        header.add(msg(SInfoResultType.soundingLabel.getCsvHeader()));
-        header.add(msg(SInfoResultType.location.getCsvHeader()));
+        header.add(msg(UInfoResultType.vegname.getCsvHeader()));
+        header.add(msg(UInfoResultType.vegdauervon.getCsvHeader()));
+        header.add(msg(UInfoResultType.vegdauerbis.getCsvHeader()));
 
         writer.writeNext(header.toArray(new String[header.size()]));
     }
@@ -82,31 +87,42 @@
 
         final Collection<String> lines = new ArrayList<>(11);
 
-        lines.add(row.exportValue(this.context, GeneralResultType.station));
-        lines.add(row.exportValue(this.context, SInfoResultType.flowdepth));
-
-        lines.add(row.exportValue(this.context, SInfoResultType.waterlevel));
-        lines.add(row.exportValue(this.context, SInfoResultType.discharge));
-        lines.add(row.exportValue(this.context, SInfoResultType.waterlevelLabel));
-        lines.add(row.exportValue(this.context, SInfoResultType.gaugeLabel));
-        lines.add(row.exportValue(this.context, SInfoResultType.meanBedHeight));
-        lines.add(row.exportValue(this.context, SInfoResultType.soundingLabel));
-        lines.add(row.exportValue(this.context, SInfoResultType.location));
+        lines.add(row.exportValue(this.context, UInfoResultType.vegname));
+        lines.add(row.exportValue(this.context, UInfoResultType.vegdauervon));
+        lines.add(row.exportValue(this.context, UInfoResultType.vegdauerbis));
 
         return lines.toArray(new String[lines.size()]);
     }
 
     @Override
-    protected String getJasperFile() {
-        // TODO Auto-generated method stub
-        return JASPER_FILE;
+    protected void writeCSVResultMetadata(final CSVWriter writer, final VegetationZonesCalculationResults results,
+            final VegetationZonesCalculationResult result) {
+
     }
 
     @Override
-    protected void writeCSVResultMetadata(final CSVWriter writer, final VegetationZonesCalculationResults results,
-            final VegetationZonesCalculationResult result) {
-        // TODO Auto-generated method stub
+    protected final void addJRMetaData(final MetaAndTableJRDataSource source, final VegetationZonesCalculationResults results) {
 
+        super.addJRMetaData(source, results);
+
+        /* additional column headings */
+        source.addMetaData("veg_name", UInfoResultType.vegname.getPdfHeader(this.context.getMeta()));
+        source.addMetaData("veg_dauervon", UInfoResultType.vegdauervon.getPdfHeader(this.context.getMeta()));
+        source.addMetaData("veg_dauerbis", UInfoResultType.vegdauerbis.getPdfHeader(this.context.getMeta()));
+    }
+
+    @Override
+    protected void writePDF(final OutputStream out) {
+        try {
+            final MetaAndTableJRDataSource source = createJRData(this.data);
+
+            final JasperReporter reporter = new JasperReporter();
+            reporter.addReport(JASPER_FILE, source);
+            reporter.exportPDF(out);
+        }
+        catch (final JRException je) {
+            getLog().warn("Error generating PDF Report!", je);
+        }
     }
 
 }
\ No newline at end of file

http://dive4elements.wald.intevation.org