# HG changeset patch # User Tom Gottfried # Date 1382024878 -7200 # Node ID ad2fdc34910a4150c736076509f6234a6c821df2 # Parent 4b26fd60105f034333b31956e00cf1ad4fb95913 Importer: Avoid 0-lenght Q-ranges in WST-CSV-parsers. diff -r 4b26fd60105f -r ad2fdc34910a backend/src/main/java/org/dive4elements/river/importer/parsers/WaterlevelDifferencesParser.java --- a/backend/src/main/java/org/dive4elements/river/importer/parsers/WaterlevelDifferencesParser.java Thu Oct 17 15:26:12 2013 +0200 +++ b/backend/src/main/java/org/dive4elements/river/importer/parsers/WaterlevelDifferencesParser.java Thu Oct 17 17:47:58 2013 +0200 @@ -46,6 +46,8 @@ public static final Pattern YEARS_IN_COLUMN = Pattern.compile(".*(\\d{4})-(\\d{4})$"); + public static final double INTERVAL_GAP = 0.00001d; + /** List of parsed differences as ImportWst s. */ private List differences; @@ -98,14 +100,23 @@ } // For all differences columns, add a single Q-Range with - // 0. + // -1. + // 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 for (ImportWstColumn column: columns) { List cValues = column.getColumnValues(); + BigDecimal a = cValues.get(0).getPosition(); + BigDecimal b = cValues.get(cValues.size() - 1).getPosition(); + if (a.compareTo(b) == 0) { + b = new BigDecimal(b.doubleValue() + INTERVAL_GAP); + } column.addColumnQRange( new ImportWstQRange( - cValues.get(0).getPosition(), - cValues.get(cValues.size() - 1).getPosition(), - new BigDecimal(0d)) + a, + b, + new BigDecimal(-1d)) ); } current = null; diff -r 4b26fd60105f -r ad2fdc34910a backend/src/main/java/org/dive4elements/river/importer/parsers/WaterlevelParser.java --- 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 waterlevels; private ImportWst current; @@ -117,8 +119,20 @@ if (current != null) { if (currentQRange != null) { List 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); }