[PATCH 1 of 2] Support the "new" HYK format which enables setting the end of the last flow zone

Wald Commits scm-commit at wald.intevation.org
Wed Jul 9 16:03:14 CEST 2014


# HG changeset patch
# User Sascha L. Teichmann <teichmann at intevation.de>
# Date 1404914508 -7200
# Node ID 139b057a39ddbcb75a11e8ca6973e87854d06de0
# Parent  bcb05a98bb3fe60bc3bdafa660372e2aa907c55a
Support the "new" HYK format which enables setting the end of the last flow zone.

diff -r bcb05a98bb3f -r 139b057a39dd backend/src/main/java/org/dive4elements/river/importer/parsers/HYKParser.java
--- a/backend/src/main/java/org/dive4elements/river/importer/parsers/HYKParser.java	Tue Jul 08 19:44:54 2014 +0200
+++ b/backend/src/main/java/org/dive4elements/river/importer/parsers/HYKParser.java	Wed Jul 09 16:01:48 2014 +0200
@@ -111,6 +111,8 @@
             ImportHYKEntry     entry     = null;
             ImportHYKFormation formation = null;
 
+            BigDecimal lastZoneEnd = null;
+
             while ((line = in.readLine()) != null) {
 
                 if (line.startsWith("*") || line.startsWith("----")) {
@@ -186,6 +188,22 @@
                                 "failed in line " + in.getLineNumber());
                             return false;
                         }
+
+                        if (parts.length > 3) {
+                            try {
+                                lastZoneEnd = new BigDecimal(parts[3]);
+                            }
+                            catch (NumberFormatException nfe) {
+                                log.error(
+                                    "HYK: parsing last flow zone end in " +
+                                    "failed in line " + in.getLineNumber());
+                                return false;
+                            }
+                        }
+                        else {
+                            lastZoneEnd = null;
+                        }
+
                         formation = new ImportHYKFormation();
                         formation.setBottom(bottom);
                         formation.setTop(top);
@@ -247,7 +265,10 @@
                         }
                         for (int i = 0; i < coords.length; ++i) {
                             BigDecimal a = coords[i];
-                            BigDecimal b = coords[i == coords.length-1 ? i : i+1];
+                            BigDecimal b = i == coords.length-1
+                                ? (lastZoneEnd != null ? lastZoneEnd : coords[i])
+                                : coords[i+1];
+
                             if (a.compareTo(b) > 0) {
                                 log.warn("HYK: zone coordinates swapped in line " +
                                     in.getLineNumber());


More information about the Dive4Elements-commits mailing list