ingo@385: package de.intevation.flys.artifacts.model; ingo@385: ingo@385: import java.io.Serializable; ingo@385: ingo@385: import gnu.trove.TDoubleArrayList; ingo@385: import gnu.trove.TIntArrayList; ingo@385: ingo@385: ingo@385: /** ingo@385: * This class represents a pool of data triples that consists of 'W', 'Q' and ingo@385: * 'Day' data. ingo@385: * ingo@385: * @author Ingo Weinzierl ingo@385: */ ingo@385: public class WQDay implements Serializable { ingo@385: ingo@385: protected TIntArrayList days; ingo@385: ingo@385: protected TDoubleArrayList ws; ingo@385: ingo@385: protected TDoubleArrayList qs; ingo@385: ingo@385: ingo@385: public WQDay() { ingo@385: days = new TIntArrayList(); ingo@385: ws = new TDoubleArrayList(); ingo@385: qs = new TDoubleArrayList(); ingo@385: } ingo@385: ingo@385: ingo@385: public WQDay(int capacity) { ingo@385: days = new TIntArrayList(capacity); ingo@385: ws = new TDoubleArrayList(capacity); ingo@385: qs = new TDoubleArrayList(capacity); ingo@385: } ingo@385: ingo@686: public WQDay(int [] days, double [] ws, double [] qs) { ingo@686: this.days = new TIntArrayList(days); ingo@686: this.ws = new TDoubleArrayList(ws); ingo@686: this.qs = new TDoubleArrayList(qs); ingo@686: } ingo@686: ingo@385: ingo@385: public void add(int day, double w, double q) { ingo@385: days.add(day); ingo@385: ws.add(w); ingo@385: qs.add(q); ingo@385: } ingo@385: ingo@385: ingo@385: public int size() { ingo@385: return days.size(); ingo@385: } ingo@385: ingo@385: ingo@385: public int getDay(int idx) { ingo@686: return days.getQuick(idx); ingo@385: } ingo@385: ingo@385: ingo@385: public double getW(int idx) { ingo@686: return ws.getQuick(idx); ingo@385: } ingo@385: ingo@385: ingo@385: public double getQ(int idx) { ingo@686: return qs.getQuick(idx); ingo@686: } ingo@686: ingo@686: public void removeNaNs() { ingo@686: ingo@686: int dest = 0; ingo@686: int N = ws.size(); ingo@686: ingo@686: for (int i = 0; i < N; ++i) { ingo@686: double w = ws.getQuick(i); ingo@686: double q = qs.getQuick(i); ingo@686: ingo@686: if (Double.isNaN(w) || Double.isNaN(q)) { ingo@686: continue; ingo@686: } ingo@686: ingo@686: days.setQuick(dest, days.getQuick(i)); ingo@686: ws.setQuick(dest, w); ingo@686: qs.setQuick(dest, q); ingo@686: ++dest; ingo@686: } ingo@686: ingo@686: if (dest < N) { ingo@686: days.remove(dest, N-dest); ingo@686: ws .remove(dest, N-dest); ingo@686: qs .remove(dest, N-dest); ingo@686: } ingo@385: } ingo@385: } ingo@385: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :