teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5994: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5994: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.artifacts.model.sq; sascha@3281: teichmann@4001: import java.util.Comparator; teichmann@4001: sascha@3281: public class Sieve sascha@3281: { teichmann@3992: public static final double EPSILON = 1e-6; sascha@3281: teichmann@4001: public static final Comparator DIAMETER_CMP = teichmann@4001: new Comparator() { teichmann@4001: @Override teichmann@4001: public int compare(Double a, Double b) { teichmann@4001: double diff = a - b; teichmann@4001: if (diff < -EPSILON) return -1; teichmann@4001: if (diff > EPSILON) return +1; teichmann@4001: return 0; teichmann@4001: } teichmann@4001: }; teichmann@4001: teichmann@3992: protected double diameter; teichmann@3992: protected double load; sascha@3281: teichmann@3992: /** teichmann@3992: * Constructs a new instance. teichmann@3992: */ sascha@3281: public Sieve() { teichmann@3992: this(Double.NaN, Double.NaN); sascha@3281: } sascha@3281: teichmann@3992: public Sieve(double diameter, double load) { teichmann@3992: this.diameter = diameter; teichmann@3992: this.load = load; sascha@3281: } sascha@3281: teichmann@3992: /** teichmann@3992: * Gets the diameter for this instance. teichmann@3992: * teichmann@3992: * @return The diameter. teichmann@3992: */ teichmann@3992: public double getDiameter() { teichmann@3992: return this.diameter; sascha@3281: } sascha@3281: teichmann@3992: /** teichmann@3992: * Sets the diameter for this instance. teichmann@3992: * teichmann@3992: * @param diameter The diameter. teichmann@3992: */ teichmann@3992: public void setDiameter(double diameter) { teichmann@3992: this.diameter = diameter; sascha@3281: } sascha@3281: teichmann@3992: /** teichmann@3992: * Gets the load for this instance. teichmann@3992: * teichmann@3992: * @return The load. teichmann@3992: */ teichmann@3992: public double getLoad() { teichmann@3992: return this.load; teichmann@3992: } teichmann@3992: teichmann@3992: /** teichmann@3992: * Sets the load for this instance. teichmann@3992: * teichmann@3992: * @param load The load. teichmann@3992: */ teichmann@3992: public void setLoad(double load) { teichmann@3992: this.load = load; teichmann@3992: } teichmann@3992: teichmann@3992: public boolean matchesDiameter(double diameter) { teichmann@3992: return Math.abs(diameter - this.diameter) < EPSILON; teichmann@3992: } teichmann@3992: teichmann@3992: public boolean hasDiameter() { teichmann@3992: return !Double.isNaN(diameter); sascha@3281: } teichmann@7710: teichmann@7710: public boolean hasLoad() { teichmann@7710: return !Double.isNaN(load); teichmann@7710: } teichmann@7710: teichmann@7710: public boolean isValid() { teichmann@7710: return hasDiameter() && hasLoad(); teichmann@7710: } sascha@3281: } sascha@3281: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :