diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQKms.java @ 402:eb22ffe4d74c

Implemented methods to retrieve and compute the data used to create discharge longitudinal sections. flys-artifacts/trunk@1843 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 06 May 2011 14:19:27 +0000
parents 5f55047a17e8
children 5606ba4139e0
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQKms.java	Thu May 05 12:34:53 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQKms.java	Fri May 06 14:19:27 2011 +0000
@@ -4,6 +4,8 @@
 
 import gnu.trove.TDoubleArrayList;
 
+import org.apache.log4j.Logger;
+
 
 /**
  * This class represents a pool of data triples that consists of 'W', 'Q' and
@@ -13,6 +15,9 @@
  */
 public class WQKms implements Serializable {
 
+    private static Logger logger = Logger.getLogger(WQKms.class);
+
+
     /** The array that contains the 'W' values.*/
     protected TDoubleArrayList w;
 
@@ -36,6 +41,13 @@
     }
 
 
+    public WQKms(double[] kms, double[] qs, double[] ws) {
+        this.w   = new TDoubleArrayList(ws);
+        this.q   = new TDoubleArrayList(qs);
+        this.kms = new TDoubleArrayList(kms);
+    }
+
+
     /**
      * Adds a new row to this data pool.
      *
@@ -50,6 +62,13 @@
     }
 
 
+    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.
      *
@@ -78,5 +97,62 @@
     public double getKms(int idx) {
         return kms.get(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.
+     *
+     * @return a string that consist of the first and last kilometer.
+     */
+    public String toString() {
+        double from = getKms(0);
+        double to   = getKms(size()-1);
+        return Double.toString(from) + " - " + Double.toString(to);
+    }
+
+
+    /**
+     * Merges the WQKms objects of an incoming 2dim array (table) where the
+     * objects of a column belong together.
+     *
+     * @param toMerge The objects that need to be merged.
+     *
+     * @return an array of merged WQKms objects.
+     */
+    public static WQKms[] merge(WQKms[][] toMerge) {
+        int num = toMerge[0].length;
+
+        // TODO IS THE LENGTH CORRECT?
+        WQKms[] merged = new WQKms[num];
+        for (int i = 0; i < num; i++) {
+            merged[i] = new WQKms();
+        }
+
+        for (int i = 0; i < toMerge.length; i++) {
+            WQKms[] tmp = toMerge[i];
+
+            for (int j = 0; j < num; j++) {
+                WQKms toAdd = tmp[j];
+                merged[j].add(toAdd.getWs(), toAdd.getQs(), toAdd.getKms());
+            }
+        }
+
+        return merged;
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org