# HG changeset patch # User Sascha L. Teichmann # Date 1306162918 0 # Node ID 677a6fceea6e7cf3119f8a7b705075927018581c # Parent 06e8d0b8fad91d893eae60f6342ff4e1c40b91f0 flys/issue76: Close gaps between q ranges flys-backend/trunk@1981 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 06e8d0b8fad9 -r 677a6fceea6e flys-backend/ChangeLog --- a/flys-backend/ChangeLog Fri May 20 09:30:08 2011 +0000 +++ b/flys-backend/ChangeLog Mon May 23 15:01:58 2011 +0000 @@ -1,3 +1,10 @@ +2011-05-23 Sascha L. Teichmann + + flys/issue76 + + * src/main/java/de/intevation/flys/importer/WstParser.java: + Close gaps between q ranges. + 2011-05-20 Ingo Weinzierl Tagged RELEASE 2.3.1 diff -r 06e8d0b8fad9 -r 677a6fceea6e flys-backend/src/main/java/de/intevation/flys/importer/WstParser.java --- a/flys-backend/src/main/java/de/intevation/flys/importer/WstParser.java Fri May 20 09:30:08 2011 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/WstParser.java Mon May 23 15:01:58 2011 +0000 @@ -44,8 +44,13 @@ public static final Pattern UNIT = Pattern.compile("[^\\[]*\\[([^]]+)\\].*"); + public static final BigDecimal INTERVAL_GAP = + new BigDecimal(0.00001); + protected ImportWst wst; + protected ImportRange lastRange; + public WstParser() { } @@ -339,11 +344,31 @@ ImportRange range = new ImportRange(from, to); + // little workaround to make the q ranges tightly fit. + // Leave a very small gap to ensure that the range queries + // still work. + + if (lastRange != null) { + double d1 = Math.abs( + lastRange.getB().doubleValue() - range.getA().doubleValue()); + double d2 = Math.abs( + range.getB().doubleValue() - lastRange.getA().doubleValue()); + + if (d1 < d2) { + lastRange.setB(range.getA().subtract(INTERVAL_GAP)); + } + else { + range.setA(lastRange.getB().subtract(INTERVAL_GAP)); + } + } + for (int i = 0; i < values.length; ++i) { ImportWstColumn column = wst.getColumn(i); ImportWstQRange wstQRange = new ImportWstQRange(range, values[i]); column.addColumnQRange(wstQRange); } + + lastRange = range; } private static final BigDecimal [] parseLineAsDouble(