ingo@446: package de.intevation.flys.artifacts.model;
ingo@446: 
ingo@446: import gnu.trove.TDoubleArrayList;
ingo@446: 
ingo@446: 
ingo@446: /**
ingo@446:  * A model class that is used to store a line of a WST.
ingo@446:  *
ingo@446:  * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
ingo@446:  */
ingo@446: public class WstLine {
ingo@446: 
ingo@446:     /** The kilometer value of the line.*/
ingo@446:     protected double km;
ingo@446: 
ingo@446:     /** The W values.*/
ingo@446:     protected TDoubleArrayList ws;
ingo@446: 
ingo@446:     /** The Q values.*/
ingo@446:     protected TDoubleArrayList qs;
ingo@446: 
ingo@446: 
ingo@446:     /**
ingo@446:      * A constructor that builds a new WstLine for a specific kilometer.
ingo@446:      *
ingo@446:      * @param km The kilometer.
ingo@446:      */
ingo@446:     public WstLine(double km) {
ingo@446:         this.km = km;
ingo@446:         this.ws = new TDoubleArrayList();
ingo@446:         this.qs = new TDoubleArrayList();
ingo@446:     }
ingo@446: 
ingo@446: 
ingo@446:     /**
ingo@446:      * Adds a pair of W/Q to this line.
ingo@446:      *
ingo@446:      * @param w The W value.
ingo@446:      * @param q The Q value.
ingo@446:      */
ingo@446:     public void add(double w, double q) {
ingo@446:         ws.add(w);
ingo@446:         qs.add(q);
ingo@446:     }
ingo@446: 
ingo@446: 
ingo@446:     /**
ingo@446:      * Returns the kilometer of this line.
ingo@446:      *
ingo@446:      * @return the kilomter of this line.
ingo@446:      */
ingo@446:     public double getKm() {
ingo@446:         return km;
ingo@446:     }
ingo@446: 
ingo@446: 
ingo@446:     /**
ingo@446:      * Returns the W value at index <i>idx</i> of this line.
ingo@446:      *
ingo@446:      * @param idx The position of the desired W value.
ingo@446:      *
ingo@446:      * @return the W at position <i>idx</i>.
ingo@446:      */
ingo@446:     public double getW(int idx) {
ingo@446:         return ws.size() > idx ? ws.get(idx) : -1d;
ingo@446:     }
ingo@446: 
ingo@446: 
ingo@446:     /**
ingo@446:      * Returns the Q values of this line.
ingo@446:      *
ingo@446:      * @return the Q values of this line.
ingo@446:      */
ingo@446:     public double[] getQs() {
ingo@446:         return qs.toNativeArray();
ingo@446:     }
ingo@446: 
ingo@446: 
ingo@446:     /**
ingo@446:      * Returns the number of columns this line consists of.
ingo@446:      *
ingo@446:      * @return the columns this line consists of.
ingo@446:      */
ingo@446:     public int getSize() {
ingo@446:         return qs.size();
ingo@446:     }
ingo@446: }
ingo@446: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :