# HG changeset patch # User Sascha L. Teichmann # Date 1308831552 0 # Node ID cbaa3ca86f2f2b9766616750016213c63ec97d36 # Parent 51afeced47de7b340a4104fd331d4383b732dbb7 Added base class WQ for WQKms. flys-artifacts/trunk@2216 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 51afeced47de -r cbaa3ca86f2f flys-artifacts/ChangeLog --- 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 +2011-06-23 Sascha L. Teichmann + + * 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 * doc/conf/artifacts/winfo.xml: Add TODOs for error reports of "Abflusskurven am Pegel". Maybe we don't need them? diff -r 51afeced47de -r cbaa3ca86f2f flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/NamedObject.java --- 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; diff -r 51afeced47de -r cbaa3ca86f2f flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQ.java --- /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 : diff -r 51afeced47de -r cbaa3ca86f2f flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQKms.java --- 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 Ingo Weinzierl */ -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. *