diff backend/src/main/java/org/dive4elements/river/importer/ImportRiver.java @ 9650:a2a42a6bac6b

Importer (s/u-info) extensions: outer try/catch for parse and log of line no, catching parsing exception if not enough value fields, parsing error and warning log messages with line number, detecting and rejecting duplicate data series, better differentiation between error and warning log messages
author mschaefer
date Mon, 23 Mar 2020 14:57:03 +0100
parents ae76f618d990
children
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/importer/ImportRiver.java	Wed Dec 04 16:59:25 2019 +0100
+++ b/backend/src/main/java/org/dive4elements/river/importer/ImportRiver.java	Mon Mar 23 14:57:03 2020 +0100
@@ -395,7 +395,7 @@
         return this.annotationClassifier;
     }
 
-    public void parseDependencies() throws IOException {
+    public void parseDependencies() throws Exception {
         log.info("Root dir is '" + getRiverDir() + "'");
         parseGauges();
         parseAnnotations();
@@ -1667,31 +1667,36 @@
     }
 
     public River getPeer() {
-        if (this.peer == null) {
-            final Session session = ImporterSession.getInstance()
-                    .getDatabaseSession();
-            final Query query = session.createQuery("from River where name=:name");
-
-            Unit u = null;
-            if (this.wstUnit != null) {
-                u = this.wstUnit.getPeer();
-            }
+        return getPeer(true);
+    }
 
-            query.setString("name", this.name);
-            final List<River> rivers = query.list();
-            if (rivers.isEmpty()) {
-                log.info("Store new river '" + this.name + "'");
-                this.peer = new River(this.name, u, this.modelUuid);
-                if (!Config.INSTANCE.skipBWASTR()) {
-                    this.peer.setOfficialNumber(this.officialNumber);
-                }
-                session.save(this.peer);
+    public River getPeer(final boolean storeIfNew) {
+
+        if (this.peer != null)
+            return this.peer;
+
+        final Session session = ImporterSession.getInstance().getDatabaseSession();
+        final Query query = session.createQuery("FROM River WHERE name=:name");
+
+        Unit u = null;
+        if (storeIfNew && (this.wstUnit != null)) {
+            u = this.wstUnit.getPeer();
+        }
+
+        query.setString("name", this.name);
+        final List<River> rivers = query.list();
+        if (rivers.isEmpty() && storeIfNew) {
+            log.info("Store new river '" + this.name + "'");
+            this.peer = new River(this.name, u, this.modelUuid);
+            if (!Config.INSTANCE.skipBWASTR()) {
+                this.peer.setOfficialNumber(this.officialNumber);
             }
-            else {
-                this.peer = rivers.get(0);
-            }
+            session.save(this.peer);
+        }
+        else {
+            this.peer = rivers.get(0);
         }
         return this.peer;
     }
 }
-// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
+

http://dive4elements.wald.intevation.org