# HG changeset patch # User mschaefer # Date 1534921254 -7200 # Node ID 3f4215ddd6b47191b6b7dfee9ae60ab4070d3c85 # Parent e60584f2a531ea61ebf369ec3cbe17868d356bdf Changed bundu bzws soundings selection to single select, added bed height query variant for field bed heights diff -r e60584f2a531 -r 3f4215ddd6b4 artifacts/doc/conf/artifacts/bundu.xml --- a/artifacts/doc/conf/artifacts/bundu.xml Tue Aug 21 18:19:35 2018 +0200 +++ b/artifacts/doc/conf/artifacts/bundu.xml Wed Aug 22 09:00:54 2018 +0200 @@ -491,7 +491,7 @@ - + diff -r e60584f2a531 -r 3f4215ddd6b4 backend/src/main/java/org/dive4elements/river/model/BedHeight.java --- a/backend/src/main/java/org/dive4elements/river/model/BedHeight.java Tue Aug 21 18:19:35 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/model/BedHeight.java Wed Aug 22 09:00:54 2018 +0200 @@ -206,18 +206,30 @@ } public static List getBedHeights(final River river, final double kmLo, final double kmHi) { + return getBedHeights(river, kmLo, kmHi, false); + } + + /** + * Fetch the soundings with values in a river km range, optionally only those that also have field 01 etc. values + */ + public static List getBedHeights(final River river, final double startKm, final double endKm, final boolean withHeightFieldsOnly) { + final Session session = SessionHolder.HOLDER.get(); - final Query query = session.createQuery("from BedHeight" + " where river=:river" + " and id in (select bedHeight.id from BedHeightValue" - + " where station between :kmfrom and :kmto" + " group by bedHeight.id)"); - + final String fieldsClause = withHeightFieldsOnly ? " AND (height01 IS NOT NULL)" : ""; + final Query query = session.createQuery("FROM BedHeight" + + " WHERE (river=:river)" + + " AND (id IN (SELECT bedHeight.id FROM BedHeightValue" + + " WHERE (station BETWEEN :kmfrom - 0.0001 AND :kmto + 0.0001)" + + fieldsClause + + " GROUP BY bed_height_id))"); query.setParameter("river", river); - query.setParameter("kmfrom", kmLo); - query.setParameter("kmto", kmHi); + query.setParameter("kmfrom", startKm); + query.setParameter("kmto", endKm); final List singles = query.list(); - return singles; + return ((singles != null) && !singles.isEmpty()) ? singles : null; } public static BedHeight getBedHeightById(final int id) {