changeset 8557:29ab66ce06aa

Abstract parser for bed heights is obsolete.
author "Tom Gottfried <tom@intevation.de>"
date Mon, 16 Feb 2015 09:50:39 +0100
parents d115d0ed6624
children d0ea092a32f5
files backend/src/main/java/org/dive4elements/river/importer/ImportRiver.java backend/src/main/java/org/dive4elements/river/importer/parsers/BedHeightParser.java backend/src/main/java/org/dive4elements/river/importer/parsers/BedHeightSingleParser.java
diffstat 3 files changed, 96 insertions(+), 134 deletions(-) [+]
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/importer/ImportRiver.java	Mon Feb 16 09:35:06 2015 +0100
+++ b/backend/src/main/java/org/dive4elements/river/importer/ImportRiver.java	Mon Feb 16 09:50:39 2015 +0100
@@ -14,7 +14,7 @@
 
 import org.dive4elements.river.importer.parsers.AnnotationClassifier;
 import org.dive4elements.river.importer.parsers.AnnotationsParser;
-import org.dive4elements.river.importer.parsers.BedHeightSingleParser;
+import org.dive4elements.river.importer.parsers.BedHeightParser;
 import org.dive4elements.river.importer.parsers.CrossSectionParser;
 import org.dive4elements.river.importer.parsers.DA50Parser;
 import org.dive4elements.river.importer.parsers.DA66Parser;
@@ -826,7 +826,7 @@
             return;
         }
 
-        BedHeightSingleParser parser = new BedHeightSingleParser();
+        BedHeightParser parser = new BedHeightParser();
 
         for (File file: files) {
             parser.parse(file);
--- a/backend/src/main/java/org/dive4elements/river/importer/parsers/BedHeightParser.java	Mon Feb 16 09:35:06 2015 +0100
+++ b/backend/src/main/java/org/dive4elements/river/importer/parsers/BedHeightParser.java	Mon Feb 16 09:50:39 2015 +0100
@@ -32,6 +32,7 @@
 import org.apache.log4j.Logger;
 
 import org.dive4elements.river.importer.ImportBedHeightSingle;
+import org.dive4elements.river.importer.ImportBedHeightSingleValue;
 import org.dive4elements.river.importer.ImportBedHeightType;
 import org.dive4elements.river.importer.ImportElevationModel;
 import org.dive4elements.river.importer.ImportLocationSystem;
@@ -43,7 +44,7 @@
 import org.dive4elements.river.backend.utils.EpsilonComparator;
 import org.dive4elements.river.backend.utils.DateUtil;
 
-public abstract class BedHeightParser {
+public class BedHeightParser {
 
     private static final Logger log =
         Logger.getLogger(BedHeightParser.class);
@@ -92,13 +93,10 @@
     protected List<ImportBedHeightSingle> bedHeights;
 
 
-    protected abstract ImportBedHeightSingle newImportBedHeight(String description);
+    protected ImportBedHeightSingle newImportBedHeight(String description) {
+        return new ImportBedHeightSingle(description);
+    }
 
-    /** Handle a line of file that contains data (in contrast to comments, meta). */
-    protected abstract void handleDataLine(
-        ImportBedHeightSingle importBedHeight,
-        String          line
-    );
 
     protected TreeSet<Double> kmExists;
 
@@ -414,5 +412,94 @@
 
         return false;
     }
+
+    protected void handleDataLine(ImportBedHeightSingle obj, String line) {
+        String[] values = line.split(SEPERATOR_CHAR, -1);
+
+        if (values == null) {
+            log.warn("BSP: Error while parsing data line: '" + line + "'");
+            return;
+        }
+
+        Double km;
+
+        try {
+            km = new Double(nf.parse(values[0]).doubleValue());
+
+            Double key = Double.valueOf(km);
+
+            if (kmExists.contains(key)) {
+                log.warn("duplicate station '" + km + "': -> ignored");
+                return;
+            }
+
+            kmExists.add(key);
+        }
+        catch (ParseException e) {
+            // We expect a lot of ";;;;;;" lines.
+            return;
+        }
+
+        // Handle gaps like "10,0;;;;;".
+        if (values.length <= 2) {
+            // Do not import line without useful data
+            if (values.length < 2) {
+                return;
+            }
+            if (values[1].length() == 0) {
+                return;
+            }
+        }
+
+        Double height = null;
+        if (values[1].length() > 0) {
+            try {
+                height = new Double(nf.parse(values[1]).doubleValue());
+            }
+            catch (ParseException e) {
+                log.warn("BSP: unparseable height " + values[1]);
+            }
+        }
+
+        Double uncertainty = null;
+        if (values[2].length() > 0) {
+            try {
+                uncertainty = new Double(nf.parse(values[2]).doubleValue());
+            }
+            catch (ParseException e) {
+                log.warn("BSP: unparseable uncertainty value " + values[2]);
+            }
+        }
+
+        Double dataGap = null;
+        if (values[3].length() > 0) {
+            try {
+                dataGap = new Double(nf.parse(values[3]).doubleValue());
+            }
+            catch (ParseException e) {
+                log.warn("BSP: unparseable data gap " + values[3]);
+            }
+        }
+
+        Double soundingWidth = null;
+        if (values[4].length() > 0) {
+            try {
+                soundingWidth = new Double(nf.parse(values[4]).doubleValue());
+            }
+            catch (ParseException e) {
+                log.warn("BSP: unparseable sounding width " + values[4]);
+            }
+        }
+
+        ImportBedHeightSingleValue value = new ImportBedHeightSingleValue(
+            (ImportBedHeightSingle) obj,
+            km,
+            height,
+            uncertainty,
+            dataGap,
+            soundingWidth);
+
+        obj.addValue(value);
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/backend/src/main/java/org/dive4elements/river/importer/parsers/BedHeightSingleParser.java	Mon Feb 16 09:35:06 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
- * Software engineering by Intevation GmbH
- *
- * This file is Free Software under the GNU AGPL (>=v3)
- * and comes with ABSOLUTELY NO WARRANTY! Check out the
- * documentation coming with Dive4Elements River for details.
- */
-
-package org.dive4elements.river.importer.parsers;
-
-import java.text.ParseException;
-
-import org.apache.log4j.Logger;
-
-import org.dive4elements.river.importer.ImportBedHeightSingle;
-import org.dive4elements.river.importer.ImportBedHeightSingleValue;
-
-
-public class BedHeightSingleParser extends BedHeightParser {
-
-    private static final Logger log =
-        Logger.getLogger(BedHeightSingleParser.class);
-
-
-    @Override
-    protected ImportBedHeightSingle newImportBedHeight(String description) {
-        return new ImportBedHeightSingle(description);
-    }
-
-
-    /**
-     * Create ImportBedHeightSingleValue from a line of csv file, add
-     * it to the ImportBedHeight.
-     */
-    @Override
-    protected void handleDataLine(ImportBedHeightSingle obj, String line) {
-        String[] values = line.split(SEPERATOR_CHAR, -1);
-
-        if (values == null) {
-            log.warn("BSP: Error while parsing data line: '" + line + "'");
-            return;
-        }
-
-        Double km;
-
-        try {
-            km = new Double(nf.parse(values[0]).doubleValue());
-
-            Double key = Double.valueOf(km);
-
-            if (kmExists.contains(key)) {
-                log.warn("duplicate station '" + km + "': -> ignored");
-                return;
-            }
-
-            kmExists.add(key);
-        }
-        catch (ParseException e) {
-            // We expect a lot of ";;;;;;" lines.
-            return;
-        }
-
-        // Handle gaps like "10,0;;;;;".
-        if (values.length <= 2) {
-            // Do not import line without useful data
-            if (values.length < 2) {
-                return;
-            }
-            if (values[1].length() == 0) {
-                return;
-            }
-        }
-
-        Double height = null;
-        if (values[1].length() > 0) {
-            try {
-                height = new Double(nf.parse(values[1]).doubleValue());
-            }
-            catch (ParseException e) {
-                log.warn("BSP: unparseable height " + values[1]);
-            }
-        }
-
-        Double uncertainty = null;
-        if (values[2].length() > 0) {
-            try {
-                uncertainty = new Double(nf.parse(values[2]).doubleValue());
-            }
-            catch (ParseException e) {
-                log.warn("BSP: unparseable uncertainty value " + values[2]);
-            }
-        }
-
-        Double dataGap = null;
-        if (values[3].length() > 0) {
-            try {
-                dataGap = new Double(nf.parse(values[3]).doubleValue());
-            }
-            catch (ParseException e) {
-                log.warn("BSP: unparseable data gap " + values[3]);
-            }
-        }
-
-        Double soundingWidth = null;
-        if (values[4].length() > 0) {
-            try {
-                soundingWidth = new Double(nf.parse(values[4]).doubleValue());
-            }
-            catch (ParseException e) {
-                log.warn("BSP: unparseable sounding width " + values[4]);
-            }
-        }
-
-        ImportBedHeightSingleValue value = new ImportBedHeightSingleValue(
-            (ImportBedHeightSingle) obj,
-            km,
-            height,
-            uncertainty,
-            dataGap,
-            soundingWidth);
-
-        obj.addValue(value);
-    }
-}
-// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org