Mercurial > dive4elements > river
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 |