Mercurial > dive4elements > river
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); }