Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/model/HistoricalWQTimerange.java @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-artifacts/src/main/java/org/dive4elements/river/artifacts/model/HistoricalWQTimerange.java@bd047b71ab37 |
children | 4897a58c8746 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/HistoricalWQTimerange.java Thu Apr 25 15:23:37 2013 +0200 @@ -0,0 +1,86 @@ +package org.dive4elements.river.artifacts.model; + +import gnu.trove.TDoubleArrayList; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + + +/** + * A subclass of WQTimerange that stores besides W, Q and Timerange values + * another double value (difference to something). + * + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public class HistoricalWQTimerange extends WQTimerange { + + public static class HistoricalTimerangeItem extends TimerangeItem { + public double diff; + + public HistoricalTimerangeItem (Timerange timerange, double q, double w, double diff) { + super(timerange, q, w); + this.diff = diff; + } + + public double[] get(double[] wq) { + if (wq.length >= 3) { + wq[0] = w; + wq[1] = q; + wq[2] = diff; + } + else if (wq.length >= 2) { + return super.get(wq); + } + + return wq; + } + } + + protected TDoubleArrayList diffs; + + + public HistoricalWQTimerange(String name) { + super(name); + + diffs = new TDoubleArrayList(); + } + + + public void add(double w, double q, double diff, Timerange t) { + ws.add(w); + qs.add(q); + timeranges.add(t); + diffs.add(diff); + } + + + /** + * This method requires a 3dim double array for <i>res</i>! + */ + @Override + public double[] get(int idx, double[] res) { + res[0] = ws.getQuick(idx); + res[1] = qs.getQuick(idx); + res[2] = diffs.getQuick(idx); + + return res; + } + + + public double[] getDiffs() { + return diffs.toNativeArray(); + } + + @Override + public List<TimerangeItem> sort() { + ArrayList<TimerangeItem> items = new ArrayList<TimerangeItem>(timeranges.size()); + for (int i = 0, n = size(); i < n; i++) { + items.add(new HistoricalTimerangeItem(getTimerange(i), getQ(i), getW(i), diffs.get(i))); + } + + Collections.sort(items); + return items; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :