teichmann@5831: package org.dive4elements.river.artifacts.model; ingo@385: ingo@385: import gnu.trove.TIntArrayList; 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: */ sascha@727: public class WQDay sascha@727: extends WQ sascha@727: { ingo@385: protected TIntArrayList days; ingo@385: ingo@385: public WQDay() { sascha@727: super(""); ingo@385: days = new TIntArrayList(); ingo@385: } ingo@385: ingo@385: public WQDay(int capacity) { sascha@2182: super(capacity); ingo@385: days = new TIntArrayList(capacity); ingo@385: } ingo@385: ingo@686: public WQDay(int [] days, double [] ws, double [] qs) { sascha@727: super(qs, ws, ""); ingo@686: this.days = new TIntArrayList(days); ingo@686: } ingo@686: ingo@385: ingo@385: public void add(int day, double w, double q) { sascha@727: super.add(w, q); ingo@385: days.add(day); ingo@385: } ingo@385: ingo@1689: ingo@1689: public boolean isIncreasing() { ingo@1689: int lo = getDay(0); ingo@1689: int hi = getDay(size()-1); ingo@1689: ingo@1689: return lo < hi; ingo@1689: } ingo@1689: ingo@1689: ingo@385: public int getDay(int idx) { ingo@686: return days.getQuick(idx); ingo@385: } ingo@385: sascha@727: @Override ingo@686: public void removeNaNs() { ingo@686: ingo@686: int dest = 0; sascha@2182: int N = ws.size(); ingo@686: ingo@686: for (int i = 0; i < N; ++i) { sascha@2182: double wi = ws.getQuick(i); sascha@2182: double qi = qs.getQuick(i); ingo@686: sascha@727: if (Double.isNaN(wi) || Double.isNaN(qi)) { ingo@686: continue; ingo@686: } ingo@686: ingo@686: days.setQuick(dest, days.getQuick(i)); sascha@2182: ws.setQuick(dest, wi); sascha@2182: qs.setQuick(dest, qi); ingo@686: ++dest; ingo@686: } ingo@686: ingo@686: if (dest < N) { ingo@686: days.remove(dest, N-dest); sascha@2182: ws .remove(dest, N-dest); sascha@2182: 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 :