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: sascha@676: public WQDay(int [] days, double [] ws, double [] qs) { sascha@676: this.days = new TIntArrayList(days); sascha@676: this.ws = new TDoubleArrayList(ws); sascha@676: this.qs = new TDoubleArrayList(qs); sascha@676: } sascha@676: 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) { sascha@675: return days.getQuick(idx); ingo@385: } ingo@385: ingo@385: ingo@385: public double getW(int idx) { sascha@675: return ws.getQuick(idx); ingo@385: } ingo@385: ingo@385: ingo@385: public double getQ(int idx) { sascha@675: return qs.getQuick(idx); sascha@675: } sascha@675: sascha@675: public void removeNaNs() { sascha@675: sascha@675: int dest = 0; sascha@675: int N = ws.size(); sascha@675: sascha@675: for (int i = 0; i < N; ++i) { sascha@675: double w = ws.getQuick(i); sascha@675: double q = qs.getQuick(i); sascha@675: sascha@675: if (Double.isNaN(w) || Double.isNaN(q)) { sascha@675: continue; sascha@675: } sascha@675: sascha@675: days.setQuick(dest, days.getQuick(i)); sascha@675: ws.setQuick(dest, w); sascha@675: qs.setQuick(dest, q); sascha@675: ++dest; sascha@675: } sascha@675: sascha@675: if (dest < N) { sascha@675: days.remove(dest, N-dest); sascha@675: ws .remove(dest, N-dest); sascha@675: qs .remove(dest, N-dest); sascha@675: } ingo@385: } ingo@385: } ingo@385: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :