diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation4.java @ 4835:8e72777c961c

Introduced a fake ConstantWQKms class to have type information to only generate w facets for curves which really carry w data.
author Sascha L. Teichmann <teichmann@intevation.de>
date Wed, 23 Jan 2013 05:53:44 +0100
parents bcf25d8c183e
children 61ebb6fb2ac4
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation4.java	Tue Jan 22 15:13:58 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation4.java	Wed Jan 23 05:53:44 2013 +0100
@@ -15,8 +15,6 @@
 
 import de.intevation.flys.utils.DoubleUtil;
 
-import gnu.trove.TDoubleArrayList;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -276,14 +274,20 @@
         }
 
         // Generate the "Umhuellende".
-        QKms [] qkms = generateInfolding(table, results, from, to, step);
+        ConstantWQKms [] infoldings =
+            generateInfolding(table, results, from, to, step);
 
         // TODO: Use qkms in a new result type.
+        WQKms [] newResults = new WQKms[results.length + infoldings.length];
+        System.arraycopy(
+            results, 0, newResults, 0, results.length);
+        System.arraycopy(
+            infoldings, 0, newResults, results.length, infoldings.length);
 
-        return new CalculationResult(results, this);
+        return new CalculationResult(newResults, this);
     }
 
-    protected QKms [] generateInfolding(
+    protected ConstantWQKms [] generateInfolding(
         WstValueTable wst,
         WQKms []      results,
         double        from,
@@ -295,20 +299,22 @@
         InfoldingColumns ic = new InfoldingColumns(columns);
         ic.markInfoldingColumns(results);
 
-        List<QKms> infoldings = new ArrayList<QKms>();
+        List<ConstantWQKms> infoldings = new ArrayList<ConstantWQKms>();
 
         boolean [] infoldingColumns = ic.getInfoldingColumns();
 
         double [] kms = null;
+        double [] ws  = null;
 
         for (int i = 0; i < infoldingColumns.length; ++i) {
             if (!infoldingColumns[i]) {
                 continue;
             }
 
-            kms = kms == null
-                ? DoubleUtil.explode(from, to, step)
-                : (double [])kms.clone();
+            if (kms == null) {
+                kms = DoubleUtil.explode(from, to, step);
+                ws  = new double[kms.length];
+            }
 
             QRangeTree.QuickQFinder qf =
                 columns[i].getQRangeTree().new QuickQFinder();
@@ -319,19 +325,16 @@
             // TODO: i18n
             String name = "Umh\u00fcllende " + columns[i].getName();
 
-            QKmsImpl qkms = new QKmsImpl(
-                new TDoubleArrayList(kms),
-                new TDoubleArrayList(qs),
-                name);
+            ConstantWQKms infolding = new ConstantWQKms(kms, qs, ws, name);
 
             if (numProblems() > numProblemsBefore) {
-                qkms.removeNaNs();
+                infolding.removeNaNs();
             }
 
-            infoldings.add(qkms);
+            infoldings.add(infolding);
         }
 
-        return infoldings.toArray(new QKms[infoldings.size()]);
+        return infoldings.toArray(new ConstantWQKms[infoldings.size()]);
     }
 
     protected String createName(int index) {

http://dive4elements.wald.intevation.org