diff backend/src/main/java/org/dive4elements/river/importer/ImportSedimentLoad.java @ 8056:d86cc6a17b7a

Importer: Import sediment load at measurement stations.
author Tom Gottfried <tom@intevation.de>
date Fri, 18 Jul 2014 15:37:26 +0200
parents aa054f72e887
children bde5f5ec7c72
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/importer/ImportSedimentLoad.java	Fri Jul 18 13:03:28 2014 +0200
+++ b/backend/src/main/java/org/dive4elements/river/importer/ImportSedimentLoad.java	Fri Jul 18 15:37:26 2014 +0200
@@ -1,10 +1,12 @@
 package org.dive4elements.river.importer;
 
 import java.util.List;
+import java.util.ArrayList;
 
 import org.dive4elements.river.model.GrainFraction;
 import org.dive4elements.river.model.SedimentLoad;
 import org.dive4elements.river.model.TimeInterval;
+import org.dive4elements.river.model.MeasurementStation;
 import org.hibernate.Query;
 import org.hibernate.Session;
 
@@ -18,28 +20,61 @@
     private String              description;
     private Integer             kind;
 
+    private List<ImportSedimentLoadValue> values;
+
     public ImportSedimentLoad() {
+        this.values = new ArrayList<ImportSedimentLoadValue>();
+    }
+
+    public ImportSedimentLoad (
+        ImportGrainFraction grainFraction,
+        ImportTimeInterval  timeInterval,
+        String              description,
+        Integer             kind
+    ) {
+        this.grainFraction = grainFraction;
+        this.timeInterval  = timeInterval;
+        this.description   = description;
+        this.kind          = kind;
+
+        this.values = new ArrayList<ImportSedimentLoadValue>();
+    }
+
+    public void addValue(ImportSedimentLoadValue value) {
+        values.add(value);
     }
 
     public void storeDependencies() {
         grainFraction.getPeer();
         timeInterval.getPeer();
-        sqTimeInterval.getPeer();
+
+        if (sqTimeInterval != null) {
+            sqTimeInterval.getPeer();
+        }
 
         getPeer();
+
+        for (ImportSedimentLoadValue value : values) {
+            value.storeDependencies(peer);
+        }
+
     }
 
     public SedimentLoad getPeer() {
 
         if (peer == null) {
             Session session = ImporterSession.getInstance().getDatabaseSession();
+
+            String sqtquery = sqTimeInterval == null ?
+                "sq_time_interval_id is null" :
+                "sqTimeInterval = :sqTimeInterval";
             Query query = session.createQuery(
                 "from SedimentLoad where " +
                 "   grainFraction = :grainFraction and " +
                 "   timeInterval = :timeInterval and " +
-                "   sqTimeInterval = :sqTimeInterval and " +
                 "   description = :description and " +
-                "   kind = :kind");
+                "   kind = :kind and " +
+                    sqtquery);
 
             GrainFraction gf = grainFraction.getPeer();
             TimeInterval  ti = timeInterval.getPeer();
@@ -50,7 +85,10 @@
 
             query.setParameter("grainFraction", gf);
             query.setParameter("timeInterval", ti);
-            query.setParameter("sqTimeInterval", sqti);
+
+            if (sqti != null) {
+                query.setParameter("sqTimeInterval", sqti);
+            }
             query.setParameter("description", description);
             query.setParameter("kind", kind);
 

http://dive4elements.wald.intevation.org