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);
             }

http://dive4elements.wald.intevation.org