diff flys-backend/src/main/java/de/intevation/flys/importer/ImporterSession.java @ 498:8ab04de0b879

Importer: Cache the discharge table values, too. flys-backend/trunk@1852 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 08 May 2011 17:55:49 +0000
parents 67fd63e4ef66
children cce054f27dac
line wrap: on
line diff
--- a/flys-backend/src/main/java/de/intevation/flys/importer/ImporterSession.java	Sun May 08 15:29:45 2011 +0000
+++ b/flys-backend/src/main/java/de/intevation/flys/importer/ImporterSession.java	Sun May 08 17:55:49 2011 +0000
@@ -14,6 +14,8 @@
 
 import de.intevation.flys.model.WstColumnValue;
 import de.intevation.flys.model.WstColumn;
+import de.intevation.flys.model.DischargeTableValue;
+import de.intevation.flys.model.DischargeTable;
 
 public class ImporterSession
 {
@@ -27,7 +29,9 @@
 
     protected Session databaseSession;
 
-    protected Map<WstColumnValueKey, WstColumnValue> wstColumnValues;
+    protected Map<IdValueKey, WstColumnValue> wstColumnValues;
+
+    protected Map<IdValueKey, DischargeTableValue> dischargeTableValues;
 
     public static ImporterSession getInstance() {
         return SESSION.get();
@@ -52,7 +56,7 @@
             loadWstColumnValues();
         }
 
-        WstColumnValueKey key = new WstColumnValueKey(
+        IdValueKey key = new IdValueKey(
             column.getId(),
             position.doubleValue(),
             w.doubleValue());
@@ -73,13 +77,53 @@
     }
 
     protected void loadWstColumnValues() {
-        wstColumnValues = new HashMap<WstColumnValueKey, WstColumnValue>();
+        wstColumnValues = new HashMap<IdValueKey, WstColumnValue>();
 
         Query query = databaseSession.createQuery("from WstColumnValue");
 
         for (Iterator iter = query.iterate(); iter.hasNext();) {
             WstColumnValue wcv = (WstColumnValue)iter.next();
-            wstColumnValues.put(new WstColumnValueKey(wcv), wcv);
+            wstColumnValues.put(new IdValueKey(wcv), wcv);
+        }
+    }
+
+    public DischargeTableValue getDischargeTableValue(
+        DischargeTable table,
+        BigDecimal     q,
+        BigDecimal     w
+    ) {
+        if (dischargeTableValues == null) {
+            loadDischargeTableValues();
+        }
+
+        IdValueKey key = new IdValueKey(
+            table.getId(),
+            q.doubleValue(),
+            w.doubleValue());
+
+        DischargeTableValue dtv = dischargeTableValues.get(key);
+
+        if (dtv != null) {
+            return dtv;
+        }
+
+        dtv = new DischargeTableValue(table, q, w);
+
+        databaseSession.save(dtv);
+
+        dischargeTableValues.put(key, dtv);
+
+        return dtv;
+    }
+
+    protected void loadDischargeTableValues() {
+        dischargeTableValues = new HashMap<IdValueKey, DischargeTableValue>();
+
+        Query query = databaseSession.createQuery("from DischargeTableValue");
+
+        for (Iterator iter = query.iterate(); iter.hasNext();) {
+            DischargeTableValue dtv = (DischargeTableValue)iter.next();
+            dischargeTableValues.put(new IdValueKey(dtv), dtv);
         }
     }
 }

http://dive4elements.wald.intevation.org