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