view artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/SQ.java @ 6780:b8f94e865875

S/Q relation: Part I of 'faking' fitting linear data. S/Qs can now be subclassed and processed through views. TODO: Add knob to setup a linear data path.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 08 Aug 2013 12:17:03 +0200
parents af13ceeba52a
children 84929f882fa2
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.sq;

import java.io.Serializable;


/** Represents S/Q pairs. They are immutable! */
public class SQ implements Serializable {

    public interface Factory {
        SQ createSQ(double s, double q);
    }

    public static final Factory SQ_FACTORY = new Factory() {
        @Override
        public SQ createSQ(double s, double q) {
            return new SQ(s, q);
        }
    };

    public interface View {
        double getS(SQ sq);
        double getQ(SQ sq);
    }

    public static final View SQ_VIEW = new View() {
        @Override
        public double getS(SQ sq) {
            return sq.getS();
        }

        @Override
        public double getQ(SQ sq) {
            return sq.getQ();
        }
    };

    protected double s;
    protected double q;

    public SQ() {
    }

    public SQ(double s, double q) {
        this.s = s;
        this.q = q;
    }


    public double getS() {
        return s;
    }

    public double getQ() {
        return q;
    }

    public boolean isValid() {
        return !Double.isNaN(s) && !Double.isNaN(q);
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org