diff flys-artifacts/src/main/java/de/intevation/flys/exports/HistoricalDischargeCurveGenerator.java @ 2311:b8df8d1476ba

Compute differences between discharge table values and reference discharge table values in historical discharge curve calculation. flys-artifacts/trunk@3991 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 09 Feb 2012 10:57:35 +0000
parents 997df76c6f58
children 991e4a5df323
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/HistoricalDischargeCurveGenerator.java	Thu Feb 09 10:21:16 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/HistoricalDischargeCurveGenerator.java	Thu Feb 09 10:57:35 2012 +0000
@@ -21,6 +21,7 @@
 
 import de.intevation.flys.artifacts.FLYSArtifact;
 import de.intevation.flys.artifacts.model.FacetTypes;
+import de.intevation.flys.artifacts.model.HistoricalWQTimerange;
 import de.intevation.flys.artifacts.model.Timerange;
 import de.intevation.flys.artifacts.model.WQTimerange;
 import de.intevation.flys.utils.FLYSUtils;
@@ -168,6 +169,15 @@
                 theme,
                 visible);
         }
+        else if (name.equals(HISTORICAL_DISCHARGE_Q_DIFF)) {
+            doHistoricalDischargeDifferenceOut(
+                (FLYSArtifact) artifactFacet.getArtifact(),
+                artifactFacet.getData(context),
+                artifactFacet.getFacetDescription(),
+                theme,
+                visible);
+        }
+        // TODO ADD THE CASE FOR DISPLAYING W VALUES
         else {
            logger.warn("doOut(): unknown facet name: " + name);
            return;
@@ -186,7 +196,30 @@
 
         WQTimerange wqt = (WQTimerange) data;
 
-        TimeSeriesCollection tsc = newTimeSeriesCollection(wqt, desc);
+        TimeSeriesCollection tsc = newTimeSeriesCollection(
+            wqt.getTimeranges(),
+            wqt.getQs(),
+            desc);
+
+        addAxisDataset(tsc, 0, visible);
+    }
+
+
+    protected void doHistoricalDischargeDifferenceOut(
+        FLYSArtifact artifact,
+        Object       data,
+        String       desc,
+        Document     theme,
+        boolean      visible
+    ) {
+        logger.debug("doHistoricalDischargeDifferenceOut: desc = " + desc);
+
+        HistoricalWQTimerange wqt = (HistoricalWQTimerange) data;
+
+        TimeSeriesCollection tsc = newTimeSeriesCollection(
+            wqt.getTimeranges(),
+            wqt.getDiffs(),
+            desc);
 
         addAxisDataset(tsc, 0, visible);
     }
@@ -199,7 +232,8 @@
      * looks like a "step chart".
      */
     protected TimeSeriesCollection newTimeSeriesCollection(
-        WQTimerange wqt,
+        Timerange[] timeranges,
+        double[]    values,
         String      desc
     ) {
         logger.debug("Create new TimeSeriesCollection for: " + desc);
@@ -207,30 +241,22 @@
         TimeSeriesCollection tsc = new TimeSeriesCollection();
         TimeSeries        series = new TimeSeries(desc);
 
-        Timerange tr = null;
-        double[] res = new double[2];
-
-        for (int i = 0, n = wqt.size(); i < n; i++) {
-            res = wqt.get(i, res);
-
-            RegularTimePeriod[] rtp = newRegularTimePeriod(wqt.getTimerange(i));
+        for (int i = 0, n = timeranges.length; i < n; i++) {
+            RegularTimePeriod[] rtp = newRegularTimePeriod(timeranges[i]);
 
             try {
-                // TODO WHICH (W/Q) IS REQUIRED?
-                double y = res[1];
-
-                if (Double.isNaN(y)) {
+                if (Double.isNaN(values[i])) {
                     logger.warn("Skip TimePeriod because value is NaN.");
                     continue;
                 }
 
-                series.add(rtp[0], y);
-                series.add(rtp[1], y);
+                series.add(rtp[0], values[i]);
+                series.add(rtp[1], values[i]);
 
                 if (logger.isDebugEnabled()) {
                     logger.debug("added Item to TimeSeries:");
                     logger.debug("   TimePeriod: " + rtp[0] + " - " + rtp[1]);
-                    logger.debug("   Value:      " + res[1]);
+                    logger.debug("   Value:      " + values[i]);
                 }
             }
             catch (SeriesException se) {

http://dive4elements.wald.intevation.org