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;
+
+    }
 }

http://dive4elements.wald.intevation.org