ingo@385: package de.intevation.flys.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 <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
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 :