Mercurial > dive4elements > river
diff backend/src/main/java/org/dive4elements/river/model/BedHeight.java @ 9246:c08d5cfa4981
some hibernate queries on bedheigts for salix
author | gernotbelger |
---|---|
date | Thu, 12 Jul 2018 11:15:42 +0200 |
parents | f5cff8708531 |
children | 3f4215ddd6b4 |
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/model/BedHeight.java Wed Jul 11 14:45:01 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/model/BedHeight.java Thu Jul 12 11:15:42 2018 +0200 @@ -9,6 +9,7 @@ package org.dive4elements.river.model; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; import javax.persistence.Column; @@ -278,4 +279,46 @@ return ((singles != null) && !singles.isEmpty()) ? singles : null; } + + public static Range getRangeFromBedHeights(final BedHeight bh) { + final List<Range> ranges = new ArrayList<>(); + + final Session session = SessionHolder.HOLDER.get(); + + final Query query = session.createQuery("FROM Range" + " WHERE id=:range_id)"); + query.setParameter("range_id", bh.getRange().getId()); + + final List<Range> singles = query.list(); + + return ((singles != null) && !singles.isEmpty()) ? singles.get(0) : null; + } + + public static List<BedHeight> getBedHeightYearEpoch(final boolean isEpoch, final Integer year, final River river, final double lowerKm, + final double upperKm) { + + final Session session = SessionHolder.HOLDER.get(); + final String description = "epoch"; + + final StringBuilder builder = new StringBuilder(); + builder.append("FROM BedHeight"); + if (isEpoch) { + builder.append(" WHERE lower(description) LIKE :description "); + } else { + builder.append(" WHERE lower(description) NOT LIKE :description "); + } + builder.append(" AND year =:year"); + + builder.append( + " AND river=:river AND id IN (SELECT bedHeight.id FROM BedHeightValue WHERE station BETWEEN :kmfrom AND :kmto GROUP BY bedHeight.id )"); + final Query query = session.createQuery(builder.toString()); + query.setParameter("river", river); + query.setParameter("year", year); + query.setParameter("description", "%" + description + "%"); + query.setParameter("kmfrom", lowerKm); + query.setParameter("kmto", upperKm); + + final List<BedHeight> singles = query.list(); + + return ((singles != null) && !singles.isEmpty()) ? singles : null; + } } \ No newline at end of file