Mercurial > dive4elements > river
diff backend/src/main/java/org/dive4elements/river/model/sinfo/DailyDischargeValue.java @ 9404:bc9a45d2b1fa
common time range for gauges incl. error messages
author | gernotbelger |
---|---|
date | Wed, 15 Aug 2018 13:59:09 +0200 |
parents | e4a6679b868f |
children | 34cd4faf43f4 |
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/model/sinfo/DailyDischargeValue.java Wed Aug 15 13:22:00 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/model/sinfo/DailyDischargeValue.java Wed Aug 15 13:59:09 2018 +0200 @@ -11,6 +11,7 @@ package org.dive4elements.river.model.sinfo; import java.io.Serializable; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -29,7 +30,6 @@ import org.hibernate.Query; import org.hibernate.Session; - /** * Hibernate binding for the DB table daily_discharge_values * @@ -62,7 +62,6 @@ private Double discharge; - /***** CONSTRUCTORS *****/ public DailyDischargeValue() { @@ -81,7 +80,6 @@ this(dailyDischarge, day, Double.valueOf(discharge)); } - /***** METHODS *****/ @Id @@ -130,13 +128,33 @@ public static List<DailyDischargeValue> getValues(final Gauge gauge, final Date startDate, final Date endDate, final OrderByField orderBy) { final Session session = SessionHolder.HOLDER.get(); final String orderField = (orderBy == OrderByField.DISCHARGE) ? "discharge" : "day"; - final Query query = session.createQuery("SELECT v" - + " FROM DailyDischargeValue AS v JOIN v.dailyDischarge AS s" - + " WHERE (s.gauge.id=:gaugeid) AND (v.day BETWEEN :startDate AND :endDate)" - + " ORDER BY " + orderField); + final Query query = session.createQuery("SELECT v" + " FROM DailyDischargeValue AS v JOIN v.dailyDischarge AS s" + + " WHERE (s.gauge.id=:gaugeid) AND (v.day BETWEEN :startDate AND :endDate)" + " ORDER BY " + orderField); query.setParameter("gaugeid", gauge.getId()); query.setParameter("startDate", startDate); query.setParameter("endDate", endDate); return query.list(); } + + /** + * Selects from the database the daily discharge, puts the first and the last into a List (min, max day) + */ + public static List<DailyDischargeValue> getGlobalMinMax(final Gauge gauge) { + final Session session = SessionHolder.HOLDER.get(); + final Query query = session + .createQuery("SELECT v" + " FROM DailyDischargeValue AS v JOIN v.dailyDischarge AS s" + " WHERE (s.gauge.id=:gaugeid) ORDER BY day"); + query.setParameter("gaugeid", gauge.getId()); + return minMaxFromDbResultHelper(query.list()); + } + + private static List<DailyDischargeValue> minMaxFromDbResultHelper(final List<DailyDischargeValue> values) { + if (values != null && values.size() > 1) { + final List<DailyDischargeValue> newList = new ArrayList<>(); + newList.add(values.get(0)); + newList.add(values.get(values.size() - 1)); + return newList; + } + return null; + + } }