changeset 6325:ee701de9c875

Add special case handling for Fixing AT export at a gauge
author Andre Heinecke <aheinecke@intevation.de>
date Thu, 13 Jun 2013 11:43:02 +0200
parents 3cf9e82b9c75
children 5c880567a020
files artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixATExport.java artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixATWriter.java artifacts/src/main/resources/messages.properties artifacts/src/main/resources/messages_de.properties artifacts/src/main/resources/messages_de_DE.properties artifacts/src/main/resources/messages_en.properties
diffstat 6 files changed, 50 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixATExport.java	Thu Jun 13 10:01:01 2013 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixATExport.java	Thu Jun 13 11:43:02 2013 +0200
@@ -16,6 +16,8 @@
 
 import org.dive4elements.river.artifacts.access.FixAccess;
 
+import org.dive4elements.river.utils.RiverUtils;
+
 import org.dive4elements.river.artifacts.math.fitting.Function;
 import org.dive4elements.river.artifacts.math.fitting.FunctionFactory;
 
@@ -26,6 +28,8 @@
 
 import org.dive4elements.river.exports.AbstractExporter;
 
+import org.dive4elements.river.model.River;
+
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
@@ -80,12 +84,11 @@
 
         Writer writer = new OutputStreamWriter(out, DEFAULT_CSV_CHARSET);
 
-        FixAccess access = new FixAccess((D4EArtifact)this.master);
         FixATWriter atWriter = new FixATWriter(this.function, this.parameters);
         NodeList nodes = request.getElementsByTagName("km");
         String km = nodes.item(0).getTextContent();
         double dkm = Double.parseDouble(km);
-        String river = access.getRiver();
+        River river = RiverUtils.getRiver((D4EArtifact)master);
         atWriter.write(writer, context.getMeta(), river, dkm);
         writer.close();
     }
--- a/artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixATWriter.java	Thu Jun 13 10:01:01 2013 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixATWriter.java	Thu Jun 13 11:43:02 2013 +0200
@@ -18,6 +18,9 @@
 
 import org.dive4elements.river.exports.ATWriter;
 
+import org.dive4elements.river.model.Gauge;
+import org.dive4elements.river.model.River;
+
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.Writer;
@@ -35,9 +38,15 @@
     public static final String I18N_HEADER_KEY =
         "fix.export.at.header";
 
+    public static final String I18N_GAUGE_HEADER_KEY =
+        "fix.export.at.gauge.header";
+
     public static final String I18N_HEADER_DEFAULT =
         "Exported fixings discharge curve for {0} {0}-km: {1}";
 
+    public static final String I18N_GAUGE_HEADER_DEFAULT =
+        "Exported fixings discharge curve for {0}, gauge: {1} datum[{3}] = {2}";
+
     public static final String [] Q_MAX_COLUMN = new String [] { "max_q" };
 
     private static final int    MAX_ITERATIONS = 10000;
@@ -58,12 +67,21 @@
     public void write(
         Writer   writer,
         CallMeta meta,
-        String   river,
+        River    river,
         double   km
     )
     throws IOException {
         PrintWriter out = new PrintWriter(writer);
-        printHeader(out, meta, river, km);
+
+        int subtractPNP = 0;
+        // Special case handling for at's at gauges
+        Gauge gauge = river.determineGaugeByPosition(km);
+        if (Math.abs(km - gauge.getStation().doubleValue()) < 1e-4) {
+            printGaugeHeader(out, meta, river, gauge);
+            subtractPNP = (int)Math.round(gauge.getDatum().doubleValue() * 100);
+        } else {
+            printHeader(out, meta, river.getName(), km);
+        }
 
         double [] coeffs = parameters.interpolate(
             "km", km, function.getParameterNames());
@@ -116,7 +134,7 @@
             log.debug("wcm: " + wcm);
         }
 
-        out.printf(Locale.US, "%8d", wRow);
+        out.printf(Locale.US, "%8d", wRow - subtractPNP);
 
         for (int i = 0; i < wcm; i++) {
             out.print(ATWriter.EMPTY);
@@ -140,7 +158,7 @@
             if (w > wMax) {
                 break;
             }
-            out.printf(Locale.US, "%8d", wRow += 10);
+            out.printf(Locale.US, "%8d", (wRow += 10) - subtractPNP);
             wcm = 0;
         }
 
@@ -160,6 +178,20 @@
             river, km));
     }
 
+    protected void printGaugeHeader(
+        PrintWriter out,
+        CallMeta    meta,
+        River       river,
+        Gauge       gauge
+    ) {
+        out.println("*" + Resources.format(
+            meta,
+            I18N_GAUGE_HEADER_KEY,
+            I18N_GAUGE_HEADER_DEFAULT,
+            new Object[] { river.getName(), gauge.getName(),
+                gauge.getDatum(), river.getWstUnit().getName() }));
+    }
+
     private static double minW(
         org.dive4elements.river.artifacts.math.Function function,
         double maxW,
--- a/artifacts/src/main/resources/messages.properties	Thu Jun 13 10:01:01 2013 +0200
+++ b/artifacts/src/main/resources/messages.properties	Thu Jun 13 11:43:02 2013 +0200
@@ -606,6 +606,7 @@
 fix.km.chart.interpolated=interpolated
 
 fix.export.at.header = Exported fixings discharge curve for {0} {0}-km: {1}
+fix.export.at.gauge.header = Exported fixings discharge curve for {0}, gauge: {1} datum[{3}] = {2}
 sq.km.chart.label = Measuring Points
 sq.km.chart.title = Measuring Points
 sq.km.chart.km.axis = km
--- a/artifacts/src/main/resources/messages_de.properties	Thu Jun 13 10:01:01 2013 +0200
+++ b/artifacts/src/main/resources/messages_de.properties	Thu Jun 13 11:43:02 2013 +0200
@@ -608,7 +608,8 @@
 fix.km.chart.measured=gemessen
 fix.km.chart.interpolated=interpoliert
 
-fix.export.at.header =  Abflusskurve aus der Fixierungsanalyse f\u00fcr {0} {0}-km: {1}
+fix.export.at.header = Abflusskurve aus der Fixierungsanalyse f\u00fcr {0} {0}-km: {1}
+fix.export.at.gauge.header = Abflusstafel aus der Fixierungsanalyse f\u00fcr {0}, Pegel: {1} PNP[{3}] = {2}
 sq.km.chart.label = Feststoffdaten
 sq.km.chart.title = Feststoffdatenbestand SedDB
 sq.km.chart.km.axis = km
--- a/artifacts/src/main/resources/messages_de_DE.properties	Thu Jun 13 10:01:01 2013 +0200
+++ b/artifacts/src/main/resources/messages_de_DE.properties	Thu Jun 13 11:43:02 2013 +0200
@@ -606,7 +606,8 @@
 fix.km.chart.measured=gemessen
 fix.km.chart.interpolated=interpoliert
 
-fix.export.at.header =  Abflusskurve aus der Fixierungsanalyse f\u00fcr {0} {0}-km: {1}
+fix.export.at.header = Abflusstafel aus der Fixierungsanalyse f\u00fcr {0} {0}-km: {1}
+fix.export.at.gauge.header = Abflusstafel aus der Fixierungsanalyse f\u00fcr {0}, Pegel: {1} PNP[{3}] = {2}
 sq.km.chart.label = Feststoffdaten
 sq.km.chart.title = Feststoffdatenbestand SedDB
 sq.km.chart.km.axis = km
--- a/artifacts/src/main/resources/messages_en.properties	Thu Jun 13 10:01:01 2013 +0200
+++ b/artifacts/src/main/resources/messages_en.properties	Thu Jun 13 11:43:02 2013 +0200
@@ -340,9 +340,9 @@
 export.discharge.longitudinal.section.csv.header.w = W [NN + m]
 export.discharge.longitudinal.section.csv.header.cw = W corr. [NN + m]
 export.discharge.longitudinal.section.csv.header.q = Q [m\u00b3/s]
-export.discharge.curve.at.header = Computed Discharge Curve for {0} {0}-km: {1}
-export.discharge.curve.at.gauge.header = Dischargetable for {1}/{0} since {2} Datum[{4}] = {3}
-export.discharge.curve.at.gauge.calc.header = Computed Discharge Curve for {0}, Gauge: {1} Datum[{3}] = {2}
+export.discharge.curve.at.header = Computed discharge curve for {0} {0}-km: {1}
+export.discharge.curve.at.gauge.header = Dischargetable for {1}/{0} since {2} datum[{4}] = {3}
+export.discharge.curve.at.gauge.calc.header = Computed discharge curve for {0}, gauge: {1} datum[{3}] = {2}
 export.historical.discharge.csv.header.timerange = Timerange
 export.historical.discharge.csv.header.waterlevel = Waterlevel [cm]
 export.historical.discharge.csv.header.discharge = Discharge [m\u00b3/s]
@@ -607,6 +607,7 @@
 fix.km.chart.interpolated=interpolated
 
 fix.export.at.header = Exported fixings discharge curve for {0} {0}-km: {1}
+fix.export.at.gauge.header = Exported fixings discharge curve for {0}, gauge: {1} datum[{3}] = {2}
 sq.km.chart.label = Measuring Points
 sq.km.chart.title = Measuring Points
 sq.km.chart.km.axis = km

http://dive4elements.wald.intevation.org