Mercurial > dive4elements > river
comparison 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 |
comparison
equal
deleted
inserted
replaced
2373:056b3a5aa181 | 2374:ab1e642e7c85 |
---|---|
16 import javax.persistence.OneToMany; | 16 import javax.persistence.OneToMany; |
17 | 17 |
18 import org.apache.log4j.Logger; | 18 import org.apache.log4j.Logger; |
19 | 19 |
20 import org.hibernate.Session; | 20 import org.hibernate.Session; |
21 import org.hibernate.SQLQuery; | |
21 import org.hibernate.Query; | 22 import org.hibernate.Query; |
23 import org.hibernate.type.StandardBasicTypes; | |
22 | 24 |
23 import de.intevation.flys.backend.SessionHolder; | 25 import de.intevation.flys.backend.SessionHolder; |
24 | 26 |
25 | 27 |
26 @Entity | 28 @Entity |
34 private River river; | 36 private River river; |
35 private String description; | 37 private String description; |
36 private Integer kind; | 38 private Integer kind; |
37 | 39 |
38 private List<WstColumn> columns; | 40 private List<WstColumn> columns; |
41 | |
42 | |
43 public static final String SQL_SELECT_MINMAX = | |
44 "select min(q) as minQ, max(q) as maxQ from wst_q_values " + | |
45 "where wst_id = :wst and not (a > :km or b < :km)"; | |
39 | 46 |
40 public Wst() { | 47 public Wst() { |
41 } | 48 } |
42 | 49 |
43 public Wst(River river, String description) { | 50 public Wst(River river, String description) { |
174 | 181 |
175 return new double [] { | 182 return new double [] { |
176 ((BigDecimal)result[0]).doubleValue(), | 183 ((BigDecimal)result[0]).doubleValue(), |
177 ((BigDecimal)result[1]).doubleValue() }; | 184 ((BigDecimal)result[1]).doubleValue() }; |
178 } | 185 } |
186 | |
187 | |
188 public double[] determineMinMaxQFree(double km) { | |
189 Session session = SessionHolder.HOLDER.get(); | |
190 | |
191 SQLQuery sqlQuery = session.createSQLQuery(SQL_SELECT_MINMAX) | |
192 .addScalar("minQ", StandardBasicTypes.DOUBLE) | |
193 .addScalar("maxQ", StandardBasicTypes.DOUBLE); | |
194 | |
195 sqlQuery.setInteger("wst", getId()); | |
196 sqlQuery.setDouble("km", km); | |
197 | |
198 List<Object[]> minmaxQ = sqlQuery.list(); | |
199 | |
200 if (minmaxQ.isEmpty()) { | |
201 return null; | |
202 } | |
203 | |
204 Object[] mm = minmaxQ.get(0); | |
205 | |
206 return new double[] { (Double) mm[0], (Double) mm[1] }; | |
207 } | |
179 } | 208 } |
180 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 209 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |