view artifacts/src/main/java/org/dive4elements/river/artifacts/model/WstLine.java @ 7471:fff862f4ef76

Experimental caching of datacage recommendations. The respective hook is called a lot and running the datacage over and over again when loading data can be expensive. So the generated recommendations are cached for some time. Hopefully this improves the overall speed of loading data from the datacage.
author Sascha L. Teichmann <teichmann@intevation.de>
date Wed, 30 Oct 2013 15:26:21 +0100
parents af13ceeba52a
children 05549a84ee83
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU AGPL (>=v3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * documentation coming with Dive4Elements River for details.
 */

package org.dive4elements.river.artifacts.model;

import gnu.trove.TDoubleArrayList;


/**
 * A model class that is used to store a line of a WST.
 *
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 */
public class WstLine {

    /** The kilometer value of the line.*/
    protected double km;

    /** The W values.*/
    protected TDoubleArrayList ws;

    /** The Q values.*/
    protected TDoubleArrayList qs;


    /**
     * A constructor that builds a new WstLine for a specific kilometer.
     *
     * @param km The kilometer.
     */
    public WstLine(double km) {
        this.km = km;
        this.ws = new TDoubleArrayList();
        this.qs = new TDoubleArrayList();
    }


    /**
     * Adds a pair of W/Q to this line.
     *
     * @param w The W value.
     * @param q The Q value.
     */
    public void add(double w, double q) {
        ws.add(w);
        qs.add(q);
    }


    /**
     * Returns the kilometer of this line.
     *
     * @return the kilomter of this line.
     */
    public double getKm() {
        return km;
    }


    /**
     * Returns the W value at index <i>idx</i> of this line.
     *
     * @param idx The position of the desired W value.
     *
     * @return the W at position <i>idx</i>.
     */
    public double getW(int idx) {
        return ws.size() > idx ? ws.get(idx) : -1d;
    }


    /**
     * Returns the Q values of this line.
     *
     * @return the Q values of this line.
     */
    public double[] getQs() {
        return qs.toNativeArray();
    }


    /**
     * Returns the number of columns this line consists of.
     *
     * @return the columns this line consists of.
     */
    public int getSize() {
        return qs.size();
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org