comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadDataFactory.java @ 8210:3bb00338228c

(issue1448) Use left join to permit loads with empty sq_time intervals to be handled.
author Andre Heinecke <andre.heinecke@intevation.de>
date Fri, 05 Sep 2014 15:09:44 +0200
parents 42ac86ec19c7
children 204905c16ade
comparison
equal deleted inserted replaced
8209:5114b643a6d6 8210:3bb00338228c
46 "ms.station AS ms_station, " + 46 "ms.station AS ms_station, " +
47 "ms.measurement_type AS ms_type " + 47 "ms.measurement_type AS ms_type " +
48 "FROM sediment_load_values slv " + 48 "FROM sediment_load_values slv " +
49 "JOIN sediment_load sl ON slv.sediment_load_id = sl.id " + 49 "JOIN sediment_load sl ON slv.sediment_load_id = sl.id " +
50 "JOIN time_intervals ti ON sl.time_interval_id = ti.id " + 50 "JOIN time_intervals ti ON sl.time_interval_id = ti.id " +
51 "JOIN time_intervals sqti ON sl.sq_time_interval_id = sqti.id " + 51 "LEFT JOIN time_intervals sqti ON sl.sq_time_interval_id = sqti.id " +
52 "JOIN grain_fraction gf ON sl.grain_fraction_id = gf.id " + 52 "JOIN grain_fraction gf ON sl.grain_fraction_id = gf.id " +
53 "JOIN measurement_station ms ON slv.measurement_station_id = ms.id " + 53 "JOIN measurement_station ms ON slv.measurement_station_id = ms.id " +
54 "JOIN rivers r ON ms.river_id = r.id " + 54 "JOIN rivers r ON ms.river_id = r.id " +
55 "WHERE r.name = :river " + 55 "WHERE r.name = :river " +
56 "ORDER BY sl.id"; 56 "ORDER BY sl.id";
145 Integer ms_id = (Integer)row[10]; 145 Integer ms_id = (Integer)row[10];
146 Double ms_station = (Double)row[11]; 146 Double ms_station = (Double)row[11];
147 String ms_type = (String)row[12]; 147 String ms_type = (String)row[12];
148 148
149 if (load == null || load.getId() != sl_id) { 149 if (load == null || load.getId() != sl_id) {
150 load = new SedimentLoadData.Load( 150 if (sq_id == null) {
151 sl_id, sl_kind, sl_description, 151 /* Avoid NPE when converting the objects. */
152 ti_start_time, ti_stop_time, sq_id, 152 load = new SedimentLoadData.Load(
153 sq_start_time, sq_stop_time); 153 sl_id, sl_kind, sl_description,
154 ti_start_time, ti_stop_time);
155 } else {
156 load = new SedimentLoadData.Load(
157 sl_id, sl_kind, sl_description,
158 ti_start_time, ti_stop_time, sq_id,
159 sq_start_time, sq_stop_time);
160 }
154 161
155 // Grain fractions only change when a new sediment load starts. 162 // Grain fractions only change when a new sediment load starts.
156 grainFractionIndex = 163 grainFractionIndex =
157 SedimentLoadData.grainFractionIndex(gf_name); 164 SedimentLoadData.grainFractionIndex(gf_name);
158 165

http://dive4elements.wald.intevation.org