diff backend/src/main/java/org/dive4elements/river/importer/ImportBedHeightValue.java @ 8986:392bbcd8a88b

Database inserts accelerated by suppressing unnecessary database queries for new data series
author mschaefer
date Sun, 08 Apr 2018 18:07:06 +0200
parents a0a0a7f912ab
children 8aa7d9eaaa21
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/importer/ImportBedHeightValue.java	Fri Apr 06 14:13:14 2018 +0200
+++ b/backend/src/main/java/org/dive4elements/river/importer/ImportBedHeightValue.java	Sun Apr 08 18:07:06 2018 +0200
@@ -11,6 +11,7 @@
 import java.util.List;
 
 import org.apache.log4j.Logger;
+import org.dive4elements.river.importer.common.StoreMode;
 import org.dive4elements.river.model.BedHeight;
 import org.dive4elements.river.model.BedHeightValue;
 import org.hibernate.Query;
@@ -61,13 +62,18 @@
         if (this.peer != null)
             return this.peer;
 
+        List<BedHeightValue> values;
         final Session session = ImporterSession.getInstance().getDatabaseSession();
-        final Query query = session.createQuery("FROM BedHeightValue WHERE (bedHeight=:bedHeight)"
-                + " AND (station BETWEEN (:station-0.0001) AND (:station+0.0001))");
-        query.setParameter("bedHeight", bedHeight);
-        query.setParameter("station", this.station);
-        final List<BedHeightValue> values = query.list();
-        if (values.isEmpty()) {
+        if (this.bedHeight.storeMode == StoreMode.INSERT)
+            values = null;
+        else {
+            final Query query = session.createQuery("FROM BedHeightValue WHERE (bedHeight=:bedHeight)"
+                    + " AND (station BETWEEN (:station-0.0001) AND (:station+0.0001))");
+            query.setParameter("bedHeight", bedHeight);
+            query.setParameter("station", this.station);
+            values = query.list();
+        }
+        if ((values == null) || values.isEmpty()) {
             this.peer = new BedHeightValue(bedHeight, this.station, this.height, this.uncertainty, this.dataGap, this.soundingWidth,
                     this.minHeight, this.maxHeight);
             session.save(this.peer);

http://dive4elements.wald.intevation.org