diff backend/src/main/java/org/dive4elements/river/importer/ImporterSession.java @ 8412:17db08570637

SCHEMA CHANGE: removed superfluous columns station and river_id from measurement_stations and adapted other components accordingly.
author Tom Gottfried <tom@intevation.de>
date Wed, 15 Oct 2014 19:20:26 +0200
parents 3bb1c62ad732
children 67e53dbe05d2
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/importer/ImporterSession.java	Wed Oct 15 14:58:46 2014 +0200
+++ b/backend/src/main/java/org/dive4elements/river/importer/ImporterSession.java	Wed Oct 15 19:20:26 2014 +0200
@@ -206,27 +206,38 @@
         return range;
     }
 
-    public List<MeasurementStation> getMeasurementStations(String river, double station) {
+    public List<MeasurementStation> getMeasurementStations(
+        River river,
+        double station
+    ) {
+        String rivername = river.getName();
+
         if (riversToMeasurementStations == null) {
             riversToMeasurementStations =
                 new HashMap<String, Map<Double, List<MeasurementStation>>>();
         }
 
         Map<Double, List<MeasurementStation>> km2Stations =
-            riversToMeasurementStations.get(river);
+            riversToMeasurementStations.get(rivername);
         if (km2Stations == null) {
             km2Stations =
                 new TreeMap<Double, List<MeasurementStation>>(EpsilonComparator.CMP);
-            riversToMeasurementStations.put(river, km2Stations);
+            riversToMeasurementStations.put(rivername, km2Stations);
             Query query = databaseSession.createQuery(
-                "from MeasurementStation where river.name = :name");
-            query.setParameter("name", river);
+                "from MeasurementStation where range.river = :river");
+            query.setParameter("river", river);
             for (Iterator iter = query.iterate(); iter.hasNext();) {
                 MeasurementStation st = (MeasurementStation)iter.next();
-                List<MeasurementStation> ms = km2Stations.get(st.getStation());
+
+                // In case river is km_up, station is at larger value of range
+                double stKm = river.getKmUp() && st.getRange().getB() != null
+                    ? st.getRange().getB().doubleValue()
+                    : st.getRange().getA().doubleValue();
+
+                List<MeasurementStation> ms = km2Stations.get(stKm);
                 if (ms == null) {
                     ms = new ArrayList<MeasurementStation>(2);
-                    km2Stations.put(st.getStation(), ms);
+                    km2Stations.put(stKm, ms);
                 }
                 ms.add(st);
             }

http://dive4elements.wald.intevation.org