# HG changeset patch # User Andre Heinecke # Date 1369659634 -7200 # Node ID 776229dd5bf724259a69372356f499f98874d3ed # Parent d79bfbe55417b71d9bf84192ea7ba850c5e5bc93 determineGauge tries now to find the correct Gauge by handling overlapping borders otherwise for the exact borders of a gauge the upstream/downstream element was selected. diff -r d79bfbe55417 -r 776229dd5bf7 backend/src/main/java/org/dive4elements/river/model/River.java --- a/backend/src/main/java/org/dive4elements/river/model/River.java Mon May 27 13:35:08 2013 +0200 +++ b/backend/src/main/java/org/dive4elements/river/model/River.java Mon May 27 15:00:34 2013 +0200 @@ -290,19 +290,36 @@ /** * This method returns the first gauge that is intersected by a and - * b, + * b, but which possibly does not ends with a or starts with b. * * @param a A start point. * @param b An end point. * - * @return the first intersecting gauge. + * @return the first intersecting gauge that does not border with a or b, + * the first intersecting gauge if that is impossible. */ public Gauge determineGauge(double a, double b) { List gauges = determineGauges(a, b); int idx = a < b ? 0 : gauges.size() - 1; - return gauges.isEmpty() ? null : gauges.get(idx); + if (a > b) { + for (int i = gauges.size() - 1; i >= 0; i--) { + Gauge g = gauges.get(i); + if (g.getRange().getA().doubleValue() == b) + continue; + return g; + } + } + + for (Gauge g: gauges) { + if ( g.getRange().getB().doubleValue() == a ) { + continue; + } + return g; + } + + return null; } /**