diff backend/src/main/java/org/dive4elements/river/model/River.java @ 6229:3fea9701d58d

Fix gauge determination. If we look upstream ( a > b ) we still have to compare the start value of our range against the gauge and not the end value. The start value is always the relevant value as we handle the direction by checking this against A or B of the gauge. Also: I will never compare doubles with == again. I will never compare doubles with == again. I will never compare doubles with == again. I will never compare doubles with == again. I will never compare doubles with == again.
author Andre Heinecke <aheinecke@intevation.de>
date Thu, 06 Jun 2013 18:23:17 +0200
parents 776229dd5bf7
children 6ff574778491
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/model/River.java	Thu Jun 06 18:10:19 2013 +0200
+++ b/backend/src/main/java/org/dive4elements/river/model/River.java	Thu Jun 06 18:23:17 2013 +0200
@@ -301,19 +301,17 @@
     public Gauge determineGauge(double a, double b) {
         List<Gauge> gauges = determineGauges(a, b);
 
-        int idx = a < b ? 0 : gauges.size() - 1;
-
         if (a > b) {
             for (int i = gauges.size() - 1; i >= 0; i--) {
                 Gauge g = gauges.get(i);
-                if (g.getRange().getA().doubleValue() == b)
+                if (KM_CMP.compare(g.getRange().getA().doubleValue(), a) == 0)
                     continue;
                 return g;
             }
         }
 
         for (Gauge g: gauges) {
-            if ( g.getRange().getB().doubleValue() == a ) {
+            if (KM_CMP.compare(g.getRange().getB().doubleValue(), a) == 0) {
                 continue;
             }
             return g;

http://dive4elements.wald.intevation.org