comparison backend/src/main/java/org/dive4elements/river/model/BedHeight.java @ 9447:3f4215ddd6b4

Changed bundu bzws soundings selection to single select, added bed height query variant for field bed heights
author mschaefer
date Wed, 22 Aug 2018 09:00:54 +0200
parents c08d5cfa4981
children 299c1c61d8ef
comparison
equal deleted inserted replaced
9446:e60584f2a531 9447:3f4215ddd6b4
204 public void setValues(final List<BedHeightValue> values) { 204 public void setValues(final List<BedHeightValue> values) {
205 this.values = values; 205 this.values = values;
206 } 206 }
207 207
208 public static List<BedHeight> getBedHeights(final River river, final double kmLo, final double kmHi) { 208 public static List<BedHeight> getBedHeights(final River river, final double kmLo, final double kmHi) {
209 final Session session = SessionHolder.HOLDER.get(); 209 return getBedHeights(river, kmLo, kmHi, false);
210 210 }
211 final Query query = session.createQuery("from BedHeight" + " where river=:river" + " and id in (select bedHeight.id from BedHeightValue" 211
212 + " where station between :kmfrom and :kmto" + " group by bedHeight.id)"); 212 /**
213 213 * Fetch the soundings with values in a river km range, optionally only those that also have field 01 etc. values
214 query.setParameter("river", river); 214 */
215 query.setParameter("kmfrom", kmLo); 215 public static List<BedHeight> getBedHeights(final River river, final double startKm, final double endKm, final boolean withHeightFieldsOnly) {
216 query.setParameter("kmto", kmHi); 216
217 217 final Session session = SessionHolder.HOLDER.get();
218 final List<BedHeight> singles = query.list(); 218
219 219 final String fieldsClause = withHeightFieldsOnly ? " AND (height01 IS NOT NULL)" : "";
220 return singles; 220 final Query query = session.createQuery("FROM BedHeight"
221 + " WHERE (river=:river)"
222 + " AND (id IN (SELECT bedHeight.id FROM BedHeightValue"
223 + " WHERE (station BETWEEN :kmfrom - 0.0001 AND :kmto + 0.0001)"
224 + fieldsClause
225 + " GROUP BY bed_height_id))");
226 query.setParameter("river", river);
227 query.setParameter("kmfrom", startKm);
228 query.setParameter("kmto", endKm);
229
230 final List<BedHeight> singles = query.list();
231
232 return ((singles != null) && !singles.isEmpty()) ? singles : null;
221 } 233 }
222 234
223 public static BedHeight getBedHeightById(final int id) { 235 public static BedHeight getBedHeightById(final int id) {
224 final Session session = SessionHolder.HOLDER.get(); 236 final Session session = SessionHolder.HOLDER.get();
225 237

http://dive4elements.wald.intevation.org