Mercurial > dive4elements > river
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 :