diff artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelExporter.java @ 9457:65f28328c9a3

ausgelagerte Wasserspiegellage AWSPL neue Spalte
author gernotbelger
date Tue, 28 Aug 2018 14:02:23 +0200
parents 86d2cbfe7f7f
children f06e3766997f
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelExporter.java	Tue Aug 28 13:50:05 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelExporter.java	Tue Aug 28 14:02:23 2018 +0200
@@ -64,10 +64,10 @@
     /** The log used in this exporter. */
     private static Logger log = Logger.getLogger(WaterlevelExporter.class);
 
-    public static final String FACET_WST = "wst";
+    private static final String FACET_WST = "wst";
 
     /* This should be the same as in the StaticWQKmsArtifact */
-    public static final String STATICWQKMSNAME = "staticwqkms";
+    private static final String STATICWQKMSNAME = "staticwqkms";
 
     public static final String CSV_KM_HEADER = "export.waterlevel.csv.header.km";
 
@@ -91,25 +91,25 @@
 
     public static final String CSV_GAUGE_HEADER = "export.waterlevel.csv.header.gauge";
 
-    public static final String CSV_META_RESULT = "export.waterlevel.csv.meta.result";
-
-    public static final String CSV_META_CREATION = "export.waterlevel.csv.meta.creation";
-
-    public static final String CSV_META_CALCULATIONBASE = "export.waterlevel.csv.meta.calculationbase";
+    private static final String CSV_META_RESULT = "export.waterlevel.csv.meta.result";
 
-    public static final String CSV_META_RIVER = "export.waterlevel.csv.meta.river";
-
-    public static final String CSV_META_RANGE = "export.waterlevel.csv.meta.range";
+    private static final String CSV_META_CREATION = "export.waterlevel.csv.meta.creation";
 
-    public static final String CSV_META_GAUGE = "export.waterlevel.csv.meta.gauge";
+    private static final String CSV_META_CALCULATIONBASE = "export.waterlevel.csv.meta.calculationbase";
 
-    public static final String CSV_META_Q = "common.export.waterlevel.csv.meta.q";
+    private static final String CSV_META_RIVER = "export.waterlevel.csv.meta.river";
 
-    public static final String CSV_META_W = "export.waterlevel.csv.meta.w";
+    private static final String CSV_META_RANGE = "export.waterlevel.csv.meta.range";
+
+    private static final String CSV_META_GAUGE = "export.waterlevel.csv.meta.gauge";
+
+    private static final String CSV_META_Q = "common.export.waterlevel.csv.meta.q";
+
+    private static final String CSV_META_W = "export.waterlevel.csv.meta.w";
 
     public static final String CSV_NOT_IN_GAUGE_RANGE = "export.waterlevel.csv.not.in.gauge.range";
 
-    public static final Pattern NUMBERS_PATTERN = Pattern.compile("\\D*(\\d++.\\d*)\\D*");
+    private static final Pattern NUMBERS_PATTERN = Pattern.compile("\\D*(\\d++.\\d*)\\D*");
 
     public static final String DEFAULT_CSV_KM_HEADER = "Fluss-Km";
     public static final String DEFAULT_CSV_W_HEADER = "W [NN + m]";
@@ -128,14 +128,14 @@
     public static final String DEFAULT_CSV_GAUGE_HEADER = "Bezugspegel";
     public static final String DEFAULT_CSV_NOT_IN_GAUGE_RANGE = "außerhalb des gewählten Bezugspegels";
 
-    public static final String PDF_HEADER_MODE = "export.waterlevel.pdf.mode";
-    public static final String JASPER_FILE = "export.waterlevel.pdf.file";
+    protected static final String PDF_HEADER_MODE = "export.waterlevel.pdf.mode";
+    private static final String JASPER_FILE = "export.waterlevel.pdf.file";
 
     /** The storage that contains all WQKms objects that are calculated. */
-    protected List<WQKms[]> data;
+    public List<WQKms[]> data;
 
     /** The storage that contains official fixings if available. */
-    protected List<WQKms> officalFixings;
+    public List<WQKms> officalFixings;
 
     public WaterlevelExporter() {
         this.data = new ArrayList<>();
@@ -216,7 +216,7 @@
      * @param wqkms
      *            A WQKms object that should be prepared.
      */
-    protected String getColumnTitle(final WINFOArtifact winfo, final WQKms wqkms) {
+    public String getColumnTitle(final WINFOArtifact winfo, final WQKms wqkms) {
         log.debug("WaterlevelExporter.getColumnTitle");
 
         final String name = wqkms.getName();
@@ -257,7 +257,7 @@
      * @deprecated Use {@link WaterlevelDescriptionBuilder} instead.
      */
     @Deprecated
-    protected String getCSVRowTitle(final WINFOArtifact winfo, final WQKms wqkms) {
+    public String getCSVRowTitle(final WINFOArtifact winfo, final WQKms wqkms) {
         log.debug("WaterlevelExporter.prepareNamedValue");
 
         final String name = wqkms.getName();
@@ -291,7 +291,7 @@
      * @deprecated Use {@link WaterlevelDescriptionBuilder} instead.
      */
     @Deprecated
-    protected String localizeWQKms(final WINFOArtifact winfo, final WQKms wqkms) {
+    public String localizeWQKms(final WINFOArtifact winfo, final WQKms wqkms) {
         final WQ_MODE wqmode = RiverUtils.getWQMode(winfo);
         final Double rawValue = wqkms.getRawValue();
 
@@ -309,7 +309,7 @@
     }
 
     @Override
-    protected void writeCSVData(final CSVWriter writer) {
+    public void writeCSVData(final CSVWriter writer) {
         log.info("WaterlevelExporter.writeData");
 
         final WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact) this.master);
@@ -371,7 +371,7 @@
      *
      * @return A new WQKms with the relevant data sorted by direction
      */
-    private WQKms filterWQKms(final WQKms wqkms, final Double first, final Double last) {
+    public final WQKms filterWQKms(final WQKms wqkms, final Double first, final Double last) {
         if (first.isNaN() || last.isNaN()) {
             log.warn("Filtering official fixing without valid first/last.");
             return wqkms;
@@ -400,7 +400,7 @@
         return filtered;
     }
 
-    protected void writeCSVMeta(final CSVWriter writer) {
+    public void writeCSVMeta(final CSVWriter writer) {
         log.info("WaterlevelExporter.writeCSVMeta");
 
         // TODO use Access instead of RiverUtils
@@ -511,7 +511,7 @@
         return null;
     }
 
-    private void writeRow4(final CSVWriter writer, final double wqkm[], final D4EArtifact flys) {
+    protected void writeRow4(final CSVWriter writer, final double wqkm[], final D4EArtifact flys, final Gauge gauge) {
         final NumberFormat kmf = getKmFormatter();
         final NumberFormat wf = getWFormatter();
         final NumberFormat qf = getQFormatter();
@@ -520,20 +520,20 @@
     }
 
     /** Write an csv-row at gauge location. */
-    private void writeRow6(final CSVWriter writer, final double wqkm[], final String wOrQDesc, final D4EArtifact flys, final String gaugeName) {
+    protected void writeRow6(final CSVWriter writer, final double wqkm[], final String wOrQDesc, final D4EArtifact flys, final Gauge gauge) {
         final NumberFormat kmf = getKmFormatter();
         final NumberFormat wf = getWFormatter();
         final NumberFormat qf = getQFormatter();
 
         writer.writeNext(new String[] { kmf.format(wqkm[2]), wf.format(wqkm[0]), qf.format(RiverUtils.roundQ(wqkm[1])), wOrQDesc,
-                RiverUtils.getLocationDescription(flys, wqkm[2]), gaugeName });
+                RiverUtils.getLocationDescription(flys, wqkm[2]), gauge.getName() });
     }
 
     /**
      * @deprecated Use {@link WaterlevelDescriptionBuilder} instead.
      */
     @Deprecated
-    private String getDesc(final WQKms wqkms, final boolean isQ) {
+    public final String getDesc(final WQKms wqkms, final boolean isQ) {
         final D4EArtifact flys = (D4EArtifact) this.master;
         String colDesc = "";
 
@@ -644,12 +644,12 @@
                     // TODO issue1114: Take correct gauge
                     gaugeN = km >= a && km <= b ? gaugeName : notinrange;
                 }
-                writeRow6(writer, result, desc, flys, gaugeN);
+                writeRow6(writer, result, desc, flys, gauge);
             }
         } else { // Not at gauge.
             for (int i = 0; i < size; ++i) {
                 result = wqkms.get(i, result);
-                writeRow4(writer, result, flys);
+                writeRow4(writer, result, flys, gauge);
             }
         }
 
@@ -663,7 +663,7 @@
     /**
      * Generates the output in WST format.
      */
-    protected void generateWST() throws IOException {
+    public void generateWST() throws IOException {
         log.info("WaterlevelExporter.generateWST");
 
         final int cols = this.data.get(0).length + this.officalFixings.size();
@@ -674,7 +674,7 @@
         writer.write(this.out);
     }
 
-    protected void writeWSTData(final WstWriter writer) {
+    public void writeWSTData(final WstWriter writer) {
         log.debug("WaterlevelExporter.writeWSTData");
 
         double[] result = new double[4];
@@ -755,27 +755,31 @@
         }
     }
 
-    @Override
-    protected void writePDF(final OutputStream out) {
-        log.debug("write PDF");
-        final WKmsJRDataSource source = createJRData();
+    public void doWritePdf(final WKmsJRDataSource source, final String jasperFile) {
 
-        final String jasperFile = // "/jasper/waterlevel_en.jasper";
-                Resources.getMsg(this.context.getMeta(), JASPER_FILE, "/jasper/waterlevel_en.jasper");
         final String confPath = Config.getConfigDirectory().toString();
 
         final Map parameters = new HashMap();
         parameters.put("ReportTitle", "Exported Data");
         try {
             final JasperPrint print = JasperFillManager.fillReport(confPath + jasperFile, parameters, source);
-            JasperExportManager.exportReportToPdfStream(print, out);
+            JasperExportManager.exportReportToPdfStream(print, this.out);
         }
         catch (final JRException je) {
             log.warn("Error generating PDF Report!", je);
         }
     }
 
-    protected WKmsJRDataSource createJRData() {
+    @Override
+    protected void writePDF(final OutputStream out) {
+        log.debug("write PDF");
+        final WKmsJRDataSource source = createJRData();
+        final String jasperFile = Resources.getMsg(this.context.getMeta(), JASPER_FILE, "/jasper/waterlevel_en.jasper");
+        doWritePdf(source, jasperFile);
+
+    }
+
+    private WKmsJRDataSource createJRData() {
         final WKmsJRDataSource source = new WKmsJRDataSource();
 
         final WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact) this.master);
@@ -819,7 +823,7 @@
         return source;
     }
 
-    protected void addMetaData(final WKmsJRDataSource source) {
+    public void addMetaData(final WKmsJRDataSource source) {
         final CallMeta meta = this.context.getMeta();
 
         final D4EArtifact flys = (D4EArtifact) this.master;
@@ -836,6 +840,10 @@
         final double[] kms = rangeAccess.getKmRange();
         source.addMetaData("range", kmf.format(kms[0]) + " - " + kmf.format(kms[kms.length - 1]));
 
+        source.addMetaData("w_at_gauge_header", Resources.getMsg(meta, "fix.export.csv.w_at_gauge")); // dürfte kein Problem sein für Vorlagen, die kein
+                                                                                                      // "w_at_gauge"
+        // haben
+
         source.addMetaData("gauge", RiverUtils.getGaugename(flys));
 
         source.addMetaData("calculation", Resources.getMsg(locale, PDF_HEADER_MODE, "Waterlevel"));
@@ -881,6 +889,7 @@
                 source.addData(new String[] { kmf.format(result[2]), wf.format(result[0]), qf.format(RiverUtils.roundQ(result[1])), desc,
                         RiverUtils.getLocationDescription(flys, result[2]), result[2] >= a && result[2] <= b ? gaugeName : notinrange });
             }
+
         }
 
         final long stopTime = System.currentTimeMillis();
@@ -889,5 +898,6 @@
             log.debug("Writing PDF data took " + (stopTime - startTime) / 1000f + " secs.");
         }
     }
+
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org