changeset 726:cbaa3ca86f2f

Added base class WQ for WQKms. flys-artifacts/trunk@2216 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 23 Jun 2011 12:19:12 +0000
parents 51afeced47de
children 11e9489eb1a7
files flys-artifacts/ChangeLog flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/NamedObject.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQ.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQKms.java
diffstat 4 files changed, 141 insertions(+), 86 deletions(-) [+]
line wrap: on
line diff
--- a/flys-artifacts/ChangeLog	Thu Jun 23 08:58:30 2011 +0000
+++ b/flys-artifacts/ChangeLog	Thu Jun 23 12:19:12 2011 +0000
@@ -1,4 +1,21 @@
-2011-06-22  Sascha L. Teichmann <sascha.teichmann@intevation.de>
+2011-06-23  Sascha L. Teichmann <sascha.teichmann@intevation.de>
+
+	* src/main/java/de/intevation/flys/artifacts/model/WQ.java:
+	  New. Base class for WQKms.
+
+	  TODO 1: make it a base class for WQDay, too,
+	  TODO 2: Generate instances of WQ instead of WQKms in "Abflusskurven"
+	          calculations. This will save memory.
+
+	  AT exporter will get instances of this class as data model
+
+	* src/main/java/de/intevation/flys/artifacts/model/NamedObject.java:
+	  Add default constructor to ease inheritance.
+
+	* src/main/java/de/intevation/flys/artifacts/model/WQKms.java:
+	  Based on WQ now. Removed code allready defined in base class.
+
+2011-06-23  Sascha L. Teichmann <sascha.teichmann@intevation.de>
 
 	* doc/conf/artifacts/winfo.xml: Add TODOs for error reports
 	  of "Abflusskurven am Pegel". Maybe we don't need them?
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/NamedObject.java	Thu Jun 23 08:58:30 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/NamedObject.java	Thu Jun 23 12:19:12 2011 +0000
@@ -14,6 +14,8 @@
     /** The name of this object.*/
     protected String name;
 
+    public NamedObject() {
+    }
 
     public NamedObject(String name) {
         this.name = name;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQ.java	Thu Jun 23 12:19:12 2011 +0000
@@ -0,0 +1,107 @@
+package de.intevation.flys.artifacts.model;
+
+import gnu.trove.TDoubleArrayList;
+
+public class WQ
+extends      NamedObject
+{
+    protected TDoubleArrayList w;
+
+    protected TDoubleArrayList q;
+
+    public WQ() {
+        this("");
+    }
+
+    public WQ(String name) {
+        w = new TDoubleArrayList();
+        q = new TDoubleArrayList();
+    }
+
+    public WQ(int capacity) {
+        this(capacity, "");
+    }
+
+
+    public WQ(int capacity, String name) {
+        super(name);
+        w = new TDoubleArrayList(capacity);
+        q = new TDoubleArrayList(capacity);
+    }
+
+    public WQ(double [] qs, double [] ws) {
+        this(qs, ws, "");
+    }
+
+    public WQ(double [] qs, double [] ws, String name) {
+        super(name);
+        w = new TDoubleArrayList(ws);
+        q = new TDoubleArrayList(qs);
+    }
+
+    public void add(double w, double q) {
+        this.w.add(w);
+        this.q.add(q);
+    }
+
+    public int size() {
+        return w.size();
+    }
+
+    public double getW(int idx) {
+        return w.getQuick(idx);
+    }
+
+    public double getQ(int idx) {
+        return q.getQuick(idx);
+    }
+
+    public double [] get(int idx) {
+        return get(idx, new double [2]);
+    }
+
+    public double [] get(int idx, double [] dst) {
+        dst[0] = w.getQuick(idx);
+        dst[1] = q.getQuick(idx);
+        return dst;
+    }
+
+    public double [] getWs() {
+        return w.toNativeArray();
+    }
+
+    public double [] getQs() {
+        return q.toNativeArray();
+    }
+
+    public static void removeNaNs(TDoubleArrayList [] arrays) {
+
+        int dest = 0;
+
+        int A = arrays.length;
+        int N = arrays[0].size();
+
+        OUTER: for (int i = 0; i < N; ++i) {
+            for (int j = 0; j < A; ++j) {
+                TDoubleArrayList a = arrays[j];
+                double v = a.getQuick(i);
+                if (Double.isNaN(v)) {
+                    continue OUTER;
+                }
+                a.setQuick(dest, v);
+            }
+            ++dest;
+        }
+
+        if (dest < N) {
+            for (int i = 0; i < A; ++i) {
+                arrays[i].remove(dest, N-dest);
+            }
+        }
+    }
+
+    public void removeNaNs() {
+        removeNaNs(new TDoubleArrayList [] { w, q });
+    }
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQKms.java	Thu Jun 23 08:58:30 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQKms.java	Thu Jun 23 12:19:12 2011 +0000
@@ -11,17 +11,11 @@
  *
  * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
  */
-public class WQKms extends NamedObject {
-
+public class WQKms 
+extends      WQ
+{
     private static Logger logger = Logger.getLogger(WQKms.class);
 
-
-    /** The array that contains the 'W' values.*/
-    protected TDoubleArrayList w;
-
-    /** The array that contains the 'Q' values.*/
-    protected TDoubleArrayList q;
-
     /** The array that contains the 'KMs' values.*/
     protected TDoubleArrayList kms;
 
@@ -33,9 +27,6 @@
 
     public WQKms(String name) {
         super(name);
-
-        this.w   = new TDoubleArrayList();
-        this.q   = new TDoubleArrayList();
         this.kms = new TDoubleArrayList();
     }
 
@@ -47,56 +38,23 @@
 
     public WQKms(int capacity, String name) {
         super(name);
-
-        this.w   = new TDoubleArrayList(capacity);
-        this.q   = new TDoubleArrayList(capacity);
         this.kms = new TDoubleArrayList(capacity);
     }
 
-    public static void removeNaNs(TDoubleArrayList [] arrays) {
-
-        int dest = 0;
-
-        int A = arrays.length;
-        int N = arrays[0].size();
-
-        OUTER: for (int i = 0; i < N; ++i) {
-            for (int j = 0; j < A; ++j) {
-                TDoubleArrayList a = arrays[j];
-                double v = a.getQuick(i);
-                if (Double.isNaN(v)) {
-                    continue OUTER;
-                }
-                a.setQuick(dest, v);
-            }
-            ++dest;
-        }
-
-        if (dest < N) {
-            for (int i = 0; i < A; ++i) {
-                arrays[i].remove(dest, N-dest);
-            }
-        }
-    }
-
-    public void removeNaNs() {
-        removeNaNs(new TDoubleArrayList [] { w, q, kms });
-    }
-
-
-    public WQKms(double[] kms, double[] qs, double[] ws) {
+    public WQKms(double [] kms, double [] qs, double [] ws) {
         this(kms, qs, ws, "");
     }
 
 
-    public WQKms(double[] kms, double[] qs, double[] ws, String name) {
-        super(name);
-
-        this.w   = new TDoubleArrayList(ws);
-        this.q   = new TDoubleArrayList(qs);
+    public WQKms(double [] kms, double [] qs, double [] ws, String name) {
+        super(qs, ws, name);
         this.kms = new TDoubleArrayList(kms);
     }
 
+    @Override
+    public void removeNaNs() {
+        removeNaNs(new TDoubleArrayList [] { w, q, kms });
+    }
 
     /**
      * Adds a new row to this data pool.
@@ -105,19 +63,9 @@
      * @param q a Q.
      * @param kms a Kms.
      */
-    public void add(double w, double q, double kms) {
-        this.w.add(w);
-        this.q.add(q);
-        this.kms.add(kms);
-    }
-
-    /**
-     * Returns the number of triples stored in this data pool.
-     *
-     * @return the number of triples stored in this data pool.
-     */
-    public int size() {
-        return kms.size();
+    public void add(double w, double q, double km) {
+        super.add(w, q);
+        kms.add(km);
     }
 
     /**
@@ -128,6 +76,7 @@
      *
      * @return a triple of [W, Q, Kms] in dst.
      */
+    @Override
     public double[] get(int idx, double [] dst) {
         dst[0] = w  .getQuick(idx);
         dst[1] = q  .getQuick(idx);
@@ -135,34 +84,14 @@
         return dst;
     }
 
-
     public double getKms(int idx) {
         return kms.getQuick(idx);
     }
 
-    public double getW(int idx) {
-        return w.getQuick(idx);
-    }
-
-    public double getQ(int idx) {
-        return q.getQuick(idx);
-    }
-
     public double[] getKms() {
         return kms.toNativeArray();
     }
 
-
-    public double[] getWs() {
-        return w.toNativeArray();
-    }
-
-
-    public double[] getQs() {
-        return q.toNativeArray();
-    }
-
-
     /**
      * Returns a string that consist of the first and last kilometer.
      *

http://dive4elements.wald.intevation.org