comparison 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
comparison
equal deleted inserted replaced
8411:b8c6cb36607e 8412:17db08570637
204 map.put(key, range); 204 map.put(key, range);
205 205
206 return range; 206 return range;
207 } 207 }
208 208
209 public List<MeasurementStation> getMeasurementStations(String river, double station) { 209 public List<MeasurementStation> getMeasurementStations(
210 River river,
211 double station
212 ) {
213 String rivername = river.getName();
214
210 if (riversToMeasurementStations == null) { 215 if (riversToMeasurementStations == null) {
211 riversToMeasurementStations = 216 riversToMeasurementStations =
212 new HashMap<String, Map<Double, List<MeasurementStation>>>(); 217 new HashMap<String, Map<Double, List<MeasurementStation>>>();
213 } 218 }
214 219
215 Map<Double, List<MeasurementStation>> km2Stations = 220 Map<Double, List<MeasurementStation>> km2Stations =
216 riversToMeasurementStations.get(river); 221 riversToMeasurementStations.get(rivername);
217 if (km2Stations == null) { 222 if (km2Stations == null) {
218 km2Stations = 223 km2Stations =
219 new TreeMap<Double, List<MeasurementStation>>(EpsilonComparator.CMP); 224 new TreeMap<Double, List<MeasurementStation>>(EpsilonComparator.CMP);
220 riversToMeasurementStations.put(river, km2Stations); 225 riversToMeasurementStations.put(rivername, km2Stations);
221 Query query = databaseSession.createQuery( 226 Query query = databaseSession.createQuery(
222 "from MeasurementStation where river.name = :name"); 227 "from MeasurementStation where range.river = :river");
223 query.setParameter("name", river); 228 query.setParameter("river", river);
224 for (Iterator iter = query.iterate(); iter.hasNext();) { 229 for (Iterator iter = query.iterate(); iter.hasNext();) {
225 MeasurementStation st = (MeasurementStation)iter.next(); 230 MeasurementStation st = (MeasurementStation)iter.next();
226 List<MeasurementStation> ms = km2Stations.get(st.getStation()); 231
232 // In case river is km_up, station is at larger value of range
233 double stKm = river.getKmUp() && st.getRange().getB() != null
234 ? st.getRange().getB().doubleValue()
235 : st.getRange().getA().doubleValue();
236
237 List<MeasurementStation> ms = km2Stations.get(stKm);
227 if (ms == null) { 238 if (ms == null) {
228 ms = new ArrayList<MeasurementStation>(2); 239 ms = new ArrayList<MeasurementStation>(2);
229 km2Stations.put(st.getStation(), ms); 240 km2Stations.put(stKm, ms);
230 } 241 }
231 ms.add(st); 242 ms.add(st);
232 } 243 }
233 244
234 } 245 }

http://dive4elements.wald.intevation.org