Mercurial > dive4elements > river
diff backend/src/main/java/org/dive4elements/river/importer/parsers/WaterlevelParser.java @ 7377:ad2fdc34910a
Importer: Avoid 0-lenght Q-ranges in WST-CSV-parsers.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 17 Oct 2013 17:47:58 +0200 |
parents | 550cb41d37d9 |
children | fc8d5b5f2c99 |
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/importer/parsers/WaterlevelParser.java Thu Oct 17 15:26:12 2013 +0200 +++ b/backend/src/main/java/org/dive4elements/river/importer/parsers/WaterlevelParser.java Thu Oct 17 17:47:58 2013 +0200 @@ -50,6 +50,8 @@ public static final Pattern META_UNIT = Pattern.compile("^Einheit: \\[(.*)\\].*"); + public static final double INTERVAL_GAP = 0.00001d; + private List<ImportWst> waterlevels; private ImportWst current; @@ -117,8 +119,20 @@ if (current != null) { if (currentQRange != null) { List<ImportWstColumnValue> cValues = column.getColumnValues(); - // Set end of range to last station. - currentRange.setB(cValues.get(cValues.size() -1).getPosition()); + // Set end of range to last station + // or expand range to minimal length in case it would be 0 + // TODO: should otherwise be extended to + // (first station of next range - INTERVAL_GAP), + // assuming always ascending stations + BigDecimal lastStation = cValues.get(cValues.size() -1).getPosition(); + if (lastStation.compareTo(currentRange.getA()) == 0) { + currentRange.setB(new BigDecimal(lastStation.doubleValue() + + INTERVAL_GAP)); + } + else { + currentRange.setB(lastStation); + } + currentQRange.setRange(currentRange); column.addColumnQRange(currentQRange); }