[PATCH 2 of 2] Importer (s/u-info) extensions: further year/date checks for collision files
Wald Commits
scm-commit at wald.intevation.org
Fri Apr 3 11:56:56 CEST 2020
# HG changeset patch
# User mschaefer
# Date 1585907805 -7200
# Fri Apr 03 11:56:45 2020 +0200
# Node ID 7c1da1b3f6b88eb8b1a8a182e86b659b39b00ac4
# Parent f7738e64fce60535495501bca6f74e635e471256
Importer (s/u-info) extensions: further year/date checks for collision files
diff -r f7738e64fce6 -r 7c1da1b3f6b8 backend/src/main/java/org/dive4elements/river/importer/sinfo/importitem/CollisionSeriesImport.java
--- a/backend/src/main/java/org/dive4elements/river/importer/sinfo/importitem/CollisionSeriesImport.java Fri Apr 03 11:55:16 2020 +0200
+++ b/backend/src/main/java/org/dive4elements/river/importer/sinfo/importitem/CollisionSeriesImport.java Fri Apr 03 11:56:45 2020 +0200
@@ -48,6 +48,10 @@
this.year = year;
}
+ public int getYear() {
+ return this.year;
+ }
+
@Override
public Logger getLog() {
return log;
diff -r f7738e64fce6 -r 7c1da1b3f6b8 backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/CollisionParser.java
--- a/backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/CollisionParser.java Fri Apr 03 11:55:16 2020 +0200
+++ b/backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/CollisionParser.java Fri Apr 03 11:56:45 2020 +0200
@@ -14,6 +14,7 @@
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Date;
import java.util.EnumMap;
import java.util.HashMap;
@@ -47,7 +48,9 @@
private static final Logger log = Logger.getLogger(CollisionParser.class);
- private static final Pattern META_YEAR = Pattern.compile("^#\\sJahr:\\s*([12]\\d\\d\\d).*", Pattern.CASE_INSENSITIVE);
+ private static final Pattern IMPORT_FILENAME = Pattern.compile("Grundberuehrungen_([12]\\d{3})\\.csv", Pattern.CASE_INSENSITIVE);
+
+ private static final Pattern META_YEAR = Pattern.compile("^#\\sJahr:\\s*([12]\\d{3}).*", Pattern.CASE_INSENSITIVE);
private enum ColTitlePattern {
DATE("Datum.*"), //
@@ -72,16 +75,19 @@
private final HashMap<String, CollisionTypeImport> types;
+ private final int filenameyear;
+
/***** CONSTRUCTORS *****/
- public CollisionParser(final File importPath, final File rootRelativePath, final ImportRiver river) {
+ public CollisionParser(final File importPath, final File rootRelativePath, final ImportRiver river, final int filenameyear) {
super(importPath, rootRelativePath, river);
logDebug("CollisionParser.new: calling ImporterSession.getInstance");
final Session session = ImporterSession.getInstance().getDatabaseSession();
this.types = new HashMap<>();
for (final CollisionType type : CollisionType.getTypes(session))
this.types.put(type.getName().trim().toLowerCase(), new CollisionTypeImport(type.getName()));
+ this.filenameyear = filenameyear;
}
@@ -105,8 +111,12 @@
public static List<CollisionParser> createParsers(final File importDir, final File relativeDir, final ImportRiver river) {
final List<CollisionParser> parsers = new ArrayList<>();
if (importDir.exists()) {
- for (final File file : listFiles(importDir, ".csv"))
- parsers.add(new CollisionParser(file, new File(relativeDir, file.getName()), river));
+ for (final File file : listFiles(importDir, IMPORT_FILENAME)) {
+ final Matcher m = IMPORT_FILENAME.matcher(file.getName());
+ m.matches();
+ final String fnyear = m.group(1);
+ parsers.add(new CollisionParser(file, new File(relativeDir, file.getName()), river, Integer.valueOf(fnyear)));
+ }
}
return parsers;
}
@@ -133,7 +143,10 @@
final Matcher m = META_YEAR.matcher(this.currentLine);
if (m.matches()) {
this.metaPatternsMatched.add(META_YEAR);
- this.seriesHeader.setYear(Integer.parseInt(m.group(1)));
+ final int year = Integer.parseInt(m.group(1));
+ this.seriesHeader.setYear(year);
+ if (year != this.filenameyear)
+ logLineWarning("Year in file name differs from meta data year");
return true;
}
return false;
@@ -191,6 +204,12 @@
logLineWarning("Invalid or missing date");
return null;
}
+ final Calendar cal = Calendar.getInstance();
+ cal.setTime(eventDate);
+ if (cal.get(Calendar.YEAR) != this.seriesHeader.getYear()) {
+ logLineWarning("Invalid or missing date");
+ return null;
+ }
final String typeName = values[this.cols.get(ColTitlePattern.TYPE)].trim();
final String typeKey = typeName.toLowerCase();
CollisionTypeImport type = null;
More information about the Dive4Elements-commits
mailing list