diff backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/TkhParser.java @ 9010:dcbdff96d1a8

Tkh import with day instead of year
author mschaefer
date Wed, 18 Apr 2018 07:42:06 +0200
parents ae76f618d990
children 1f63e9d3b0ec
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/TkhParser.java	Wed Apr 18 07:38:47 2018 +0200
+++ b/backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/TkhParser.java	Wed Apr 18 07:42:06 2018 +0200
@@ -15,7 +15,10 @@
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.LineNumberReader;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -43,7 +46,7 @@
 
     private static final Logger log = Logger.getLogger(TkhParser.class);
 
-    private static final Pattern META_YEAR = Pattern.compile("^#\\sBezugsjahr:\\s*([12]\\d\\d\\d).*", Pattern.CASE_INSENSITIVE);
+    private static final Pattern META_DATUM = Pattern.compile("^#\\sDatum:\\s*([^;]*).*", Pattern.CASE_INSENSITIVE);
 
     private static final Pattern META_EVALUATOR = Pattern.compile("^#\\sAuswerter:\\s*([^;]*).*", Pattern.CASE_INSENSITIVE);
 
@@ -53,6 +56,8 @@
 
     private static final Pattern COLUMN_TITLE = Pattern.compile("Transportk((.)|(oe))rperh((.)|(oe))he\\s*\\((.+?)\\)\\s*\\[cm\\].*", Pattern.CASE_INSENSITIVE);
 
+    private static final DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
+
     private final TkhSeriesImport tkhGroup;
 
     private final List<TkhColumnParser> colParsers;
@@ -136,7 +141,7 @@
 
     @Override
     protected boolean handleMetaOther() {
-        if (handleMetaYear())
+        if (handleMetaDay())
             return true;
         else if (handleMetaType())
             return true;
@@ -148,11 +153,21 @@
             return false;
     }
 
-    private boolean handleMetaYear() {
-        final Matcher m = META_YEAR.matcher(this.currentLine);
+    private boolean handleMetaDay() {
+        final Matcher m = META_DATUM.matcher(this.currentLine);
         if (m.matches()) {
-            this.metaPatternsMatched.add(META_YEAR);
-            this.tkhGroup.setYear(Integer.parseInt(m.group(1)));
+            Date day = null;
+            try {
+                if (!m.group(1).isEmpty())
+                    day = dateFormat.parse(m.group(1));
+            }
+            catch (final Exception e) {
+                logError("Invalid date in line " + this.in.getLineNumber());
+            }
+            this.metaPatternsMatched.add(META_DATUM);
+            this.tkhGroup.setDay(day);
+            if (day == null)
+                logWarning("No date specified");
             return true;
         }
         return false;

http://dive4elements.wald.intevation.org