Mercurial > dive4elements > river
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;