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

http://dive4elements.wald.intevation.org