changeset 5885:09d9c14145a3

Do not import discharge tables twice if no time interval given
author Sascha L. Teichmann <teichmann@intevation.de>
date Tue, 30 Apr 2013 19:03:44 +0200
parents 11e74ca3229a
children 6a63456b99d9
files backend/src/main/java/org/dive4elements/river/importer/ImportDischargeTable.java
diffstat 1 files changed, 33 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/importer/ImportDischargeTable.java	Tue Apr 30 17:46:29 2013 +0200
+++ b/backend/src/main/java/org/dive4elements/river/importer/ImportDischargeTable.java	Tue Apr 30 19:03:44 2013 +0200
@@ -76,34 +76,41 @@
         this.timeInterval = timeInterval;
     }
 
+    
 
     public DischargeTable getPeer(Gauge gauge) {
-        if (peer == null) {
-            TimeInterval ti = timeInterval != null
-                ? timeInterval.getPeer()
-                : null;
-            Session session = ImporterSession.getInstance().getDatabaseSession();
-
-            Query query = session.createQuery(
-                "from DischargeTable where " +
-                "gauge.id=:gauge and kind=:kind and " +
-                "description=:description and timeInterval=:interval");
-            query.setParameter("gauge",       gauge.getId());
-            query.setParameter("description", description);
-            query.setParameter("kind",        kind);
-            query.setParameter("interval",    ti);
-
-            List<DischargeTable> dischargeTables = query.list();
-            if (dischargeTables.isEmpty()) {
-                peer = new DischargeTable(gauge, description, null, kind, ti);
-                session.save(peer);
-            }
-            else {
-                peer = dischargeTables.get(0);
-            }
-        }
-
-        return peer;
+	if (peer == null) {
+                TimeInterval ti = timeInterval != null
+                    ? timeInterval.getPeer()
+                    : null;
+                Session session = ImporterSession.getInstance().getDatabaseSession();
+     
+                String timeIntervalQuery = ti != null
+                    ? "timeInterval=:interval"
+                    : "timeInterval is null";
+     
+                Query query = session.createQuery(
+                    "from DischargeTable where " +
+                    "gauge.id=:gauge and kind=:kind and " +
+                    "description=:description and " + timeIntervalQuery);
+                query.setParameter("gauge",       gauge.getId());
+                query.setParameter("description", description);
+                query.setParameter("kind",        kind);
+                if (ti != null) {
+                    query.setParameter("interval", ti);
+                }
+     
+                List<DischargeTable> dischargeTables = query.list();
+                if (dischargeTables.isEmpty()) {
+                    peer = new DischargeTable(gauge, description, null, kind, ti);
+                    session.save(peer);
+                }
+                else {
+                    peer = dischargeTables.get(0);
+                }
+	}
+     
+	return peer;
     }
 
 

http://dive4elements.wald.intevation.org