diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 721:7298d58a1f5a

Generate facets for "Abflusskurven am Pegel". Not working by now. :-/ flys-artifacts/trunk@2198 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 22 Jun 2011 09:19:16 +0000
parents 2f25ca828efd
children 8900966ad945
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java	Wed Jun 22 06:51:36 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java	Wed Jun 22 09:19:16 2011 +0000
@@ -1,5 +1,6 @@
 package de.intevation.flys.artifacts;
 
+import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -447,31 +448,52 @@
     /**
      * Returns the data that is used to create discharge curves.
      *
-     * @return a map where the key is the name of the gauge and a double[][]
-     * which are the values.
      */
-    public Map<String, double[][]> getDischargeCurveData() {
-        River       river  = getRiver();
-        List<Gauge> gauges = getGauges();
+    public CalculationResult getDischargeCurveData() {
 
-        if (gauges == null) {
-            logger.warn("No gauges found for the current kilometer range.");
-            return null;
+        River river = getRiver();
+        if (river == null) {
+            return error(new WQKms[0], "no river found");
         }
 
-        int num = gauges.size();
-
-        logger.debug("Found " + num + " gauges.");
+        double [] distance = getDistance();
 
-        String[] gaugeNames = new String[num];
-
-        for (int i = 0; i < num; i++) {
-            gaugeNames[i] = gauges.get(i).getName();
+        if (distance == null) {
+            return error(new WQKms[0], "no range found");
         }
 
-        DischargeTables dt = new DischargeTables(river.getName(), gaugeNames);
+        List<Gauge> gauges = river.determineGauges(distance[0], distance[1]);
 
-        return dt.getValues(100d);
+        if (gauges.isEmpty()) {
+            return error(new WQKms[0], "no gauges found");
+        }
+
+        String [] names = new String[gauges.size()];
+
+        for (int i = 0; i < names.length; ++i) {
+            names[i] = gauges.get(i).getName();
+        }
+
+        DischargeTables dt = new DischargeTables(river.getName(), names);
+
+        Map<String, double [][]> map = dt.getValues(100d);
+
+        ArrayList<WQKms> res = new ArrayList<WQKms>();
+
+        for (Gauge gauge: gauges) {
+            String name = gauge.getName();
+            double [][] values = map.get(name);
+            if (values == null) {
+                continue;
+            }
+            double [] kms = new double[values[0].length];
+            Arrays.fill(kms, gauge.getStation().doubleValue());
+            res.add(new WQKms(values[1], values[0], kms, name));
+        }
+
+        return new CalculationResult(
+            res.toArray(new WQKms[res.size()]),
+            new Calculation());
     }
 
 

http://dive4elements.wald.intevation.org