Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/model/Range.java @ 6665:b7945db8a43b
issue1413: Only show unknown sediment loads of selected unit type.
Therefore, adjusted the factory to take the units name. Unfortunately,
names in db do not match values of data items. Thus do manual replacing.
In Facet and Calculate, take the chosen unit via access and to the string
replacement.
In Facet, do not transform data (we assume it comes in unit as labeled in
the db), and removed the possibility of m3/a-data of unknown yields in a
t/a diagram and vice versa.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Thu, 25 Jul 2013 15:08:13 +0200 |
parents | 1e97d2e95410 |
children | 9744ce3c3853 |
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 java.io.Serializable; /** A range from ... to .*/ public class Range implements Serializable { public static final double EPSILON = 1e-5; protected double start; protected double end; public Range() { } public Range(Range other) { start = other.start; end = other.end; } public Range(double start, double end) { this.start = start; this.end = end; } public void setStart(double start) { this.start = start; } public double getStart() { return start; } public void setEnd(double end) { this.end = end; } public double getEnd() { return end; } public boolean disjoint(double ostart, double oend) { return start > oend || ostart > end; } public boolean disjoint(Range other) { return start > other.end || other.start > end; } public boolean intersects(Range other) { return !disjoint(other); } public void extend(Range other) { if (other.start < start) start = other.start; if (other.end > end ) end = other.end; } public boolean clip(Range other) { if (disjoint(other)) return false; if (other.start > start) start = other.start; if (other.end < end ) end = other.end; return true; } /** True if start>x<end (+ some epsilon) . */ public boolean inside(double x) { return x > start-EPSILON && x < end+EPSILON; } public boolean contains(double x) { return inside(x); } /** Hash Code. */ @Override public int hashCode() { return new Double(this.start).hashCode() ^ new Double(this.end).hashCode(); } /** * Compares start and end values with some epsilon. */ @Override public boolean equals(Object otherRange) { if (otherRange instanceof Range) { Range oRange = (Range) otherRange; return Math.abs(oRange.start - this.start) <= EPSILON && Math.abs(oRange.end - this.end) <= EPSILON; } return false; } /** Returns clone with same start and end values. */ @Override public Object clone() { return new Range(this.start, this.end); } public String toString() { return "[Range: start=" + start + " end=" + end + "]"; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :