Mercurial > dive4elements > river
diff backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/SelectedAdditionalParser.java @ 8988:ae76f618d990
Checks added for missing import directory
author | mschaefer |
---|---|
date | Sun, 08 Apr 2018 18:09:32 +0200 |
parents | bf8a9df86f32 |
children |
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/SelectedAdditionalParser.java Sun Apr 08 18:08:35 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/SelectedAdditionalParser.java Sun Apr 08 18:09:32 2018 +0200 @@ -17,6 +17,7 @@ import java.io.LineNumberReader; import java.io.Serializable; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import org.apache.log4j.Logger; @@ -43,9 +44,7 @@ private static final Logger log = Logger.getLogger(SelectedAdditionalParser.class); - private static final String IMPORT_Q_FILENAME = "Mit_Abflussdaten.txt"; - - private static final String IMPORT_W_FILENAME = "Ohne_Abflussdaten.txt"; + private static final String IMPORT_FILENAME = "Zus_Laengsschnitte.txt"; private enum SelectionType { WITH_Q("Q", "with discharge"), // @@ -66,6 +65,13 @@ public String getLogText() { return this.logText; } + + public static SelectionType parse(final String path) { + if (path.toLowerCase().endsWith(".wst")) + return WITH_Q; + else + return WITHOUT_Q; + } } private final File importPath; @@ -74,19 +80,16 @@ private final ImportRiver river; - private final SelectionType selectionType; - - private final List<String> links; + private final HashMap<String, SelectionType> links; /***** CONSTRUCTORS *****/ - public SelectedAdditionalParser(final File importPath, final File rootRelativePath, final ImportRiver river, final SelectionType selectionType) { + public SelectedAdditionalParser(final File importPath, final File rootRelativePath, final ImportRiver river) { this.importPath = importPath; this.rootRelativePath = rootRelativePath; this.river = river; - this.selectionType = selectionType; - this.links = new ArrayList<>(); + this.links = new HashMap<>(); } @@ -104,10 +107,9 @@ */ public static List<SelectedAdditionalParser> createParsers(final File importDir, final File relativeDir, final ImportRiver river) { final List<SelectedAdditionalParser> parsers = new ArrayList<>(); - parsers.add(new SelectedAdditionalParser(new File(importDir, IMPORT_Q_FILENAME), new File(relativeDir, IMPORT_Q_FILENAME), - river, SelectionType.WITH_Q)); - parsers.add(new SelectedAdditionalParser(new File(importDir, IMPORT_W_FILENAME), new File(relativeDir, IMPORT_W_FILENAME), - river, SelectionType.WITHOUT_Q)); + final File importFile = new File(importDir, IMPORT_FILENAME); + if (importFile.exists()) + parsers.add(new SelectedAdditionalParser(importFile, new File(relativeDir, IMPORT_FILENAME), river)); return parsers; } @@ -123,8 +125,8 @@ line = in.readLine(); if (line == null) break; - if (!line.trim().isEmpty() && !line.trim().startsWith(AbstractParser.START_META_CHAR)) - this.links.add(line.trim()); + if (!line.trim().isEmpty() && !line.trim().startsWith(AbstractParser.START_META_CHAR) && !this.links.containsKey(line.trim())) + this.links.put(line.trim(), SelectionType.parse(line.trim())); } log.info("Number of file links found: " + this.links.size()); } @@ -138,17 +140,16 @@ public void store() { final Session session = ImporterSession.getInstance().getDatabaseSession(); final SQLQuery reset = session.createSQLQuery("UPDATE wsts SET sinfo_selection = NULL WHERE (river_id=:river_id) AND (kind=1)" - + " AND (sinfo_selection=:seltype)"); + + " AND (sinfo_selection IS NOT NULL)"); reset.setParameter("river_id", this.river.getPeer().getId()); - reset.setParameter("seltype", this.selectionType.getKey()); reset.executeUpdate(); final Query query = session.createQuery("FROM Wst WHERE (river=:river) AND (kind=1) AND (lower(description) LIKE :path)"); query.setParameter("river", this.river.getPeer()); int count = 0; - for (final String wstfile : this.links) { - count += updateWst(session, query, this.river.getPeer(), wstfile, this.selectionType); + for (final String wstfile : this.links.keySet()) { + count += updateWst(session, query, this.river.getPeer(), wstfile, this.links.get(wstfile)); } - log.info("Updated " + count + " wsts for selected additionals " + this.selectionType.getLogText()); + log.info("Updated " + count + " wsts for selected additionals"); } private int updateWst(final Session session, final Query query, final River river, final String path, final SelectionType selectionType) {