diff artifacts/src/main/java/org/dive4elements/river/artifacts/model/GaugeDischargeCurveFacet.java @ 8326:10917ec29625

Inject current km and pnp into the context used to calculate W in cm at gauge.
author Raimund Renkert <rrenkert@intevation.de>
date Thu, 25 Sep 2014 17:23:12 +0200
parents d4c501d2c098
children 1c732c88a2d6
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/GaugeDischargeCurveFacet.java	Wed Sep 24 18:33:11 2014 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/GaugeDischargeCurveFacet.java	Thu Sep 25 17:23:12 2014 +0200
@@ -24,6 +24,8 @@
 
 import org.apache.log4j.Logger;
 
+import static org.dive4elements.river.exports.injector.InjectorConstants.PNP;
+
 /**
  * A Facet that returns discharge curve data at a gauge
  *
@@ -77,7 +79,23 @@
         }
         double [] kms = new double[values[0].length];
         Arrays.fill(kms, gauge.getStation().doubleValue());
-        return new WQKms(kms, values[0], values[1], name, WQKms.CENTIMETER_AT_GAUGE);
+
+        Object pnpObject = context.getContextValue(PNP);
+        if (!(pnpObject instanceof Number)) {
+            return new WQKms(kms, values[0], values[1], name, W.CENTIMETER_AT_GAUGE);
+        }
+        double pnp = Double.valueOf(pnpObject.toString());
+        double[] ws = transformToM(values[1], pnp);
+
+        return new WQKms(kms, values[0], ws, name);
+    }
+
+    private double[] transformToM(double[] ws, double pnp) {
+        double[] retVals = new double[ws.length];
+        for (int i = 0; i < ws.length; i++) {
+            retVals[i] = ws[i]/100 + pnp;
+        }
+        return retVals;
     }
 
     @Override

http://dive4elements.wald.intevation.org