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 :

http://dive4elements.wald.intevation.org