Mercurial > dive4elements > river
diff flys-backend/src/main/java/de/intevation/flys/model/Wst.java @ 2374:ab1e642e7c85
Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
flys-backend/trunk@3571 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 03 Jan 2012 10:10:56 +0000 |
parents | 027736510a30 |
children | 3c26e16ae6c2 |
line wrap: on
line diff
--- a/flys-backend/src/main/java/de/intevation/flys/model/Wst.java Mon Jan 02 13:42:27 2012 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/model/Wst.java Tue Jan 03 10:10:56 2012 +0000 @@ -18,7 +18,9 @@ import org.apache.log4j.Logger; import org.hibernate.Session; +import org.hibernate.SQLQuery; import org.hibernate.Query; +import org.hibernate.type.StandardBasicTypes; import de.intevation.flys.backend.SessionHolder; @@ -37,6 +39,11 @@ private List<WstColumn> columns; + + public static final String SQL_SELECT_MINMAX = + "select min(q) as minQ, max(q) as maxQ from wst_q_values " + + "where wst_id = :wst and not (a > :km or b < :km)"; + public Wst() { } @@ -176,5 +183,27 @@ ((BigDecimal)result[0]).doubleValue(), ((BigDecimal)result[1]).doubleValue() }; } + + + public double[] determineMinMaxQFree(double km) { + Session session = SessionHolder.HOLDER.get(); + + SQLQuery sqlQuery = session.createSQLQuery(SQL_SELECT_MINMAX) + .addScalar("minQ", StandardBasicTypes.DOUBLE) + .addScalar("maxQ", StandardBasicTypes.DOUBLE); + + sqlQuery.setInteger("wst", getId()); + sqlQuery.setDouble("km", km); + + List<Object[]> minmaxQ = sqlQuery.list(); + + if (minmaxQ.isEmpty()) { + return null; + } + + Object[] mm = minmaxQ.get(0); + + return new double[] { (Double) mm[0], (Double) mm[1] }; + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :