Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/MainValuesFactory.java @ 385:478940d06876
Enabled the WINFO artifact to create duration curves - new OutGenerator, added methods for data computation.
flys-artifacts/trunk@1802 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 03 May 2011 12:05:32 +0000 |
parents | 4791fd92a208 |
children | 3e1149adc8b9 |
comparison
equal
deleted
inserted
replaced
384:88614ddfc1e3 | 385:478940d06876 |
---|---|
1 package de.intevation.flys.artifacts.model; | 1 package de.intevation.flys.artifacts.model; |
2 | 2 |
3 import java.math.BigDecimal; | |
3 import java.util.List; | 4 import java.util.List; |
5 | |
6 import org.apache.log4j.Logger; | |
4 | 7 |
5 import org.hibernate.Session; | 8 import org.hibernate.Session; |
6 import org.hibernate.Query; | 9 import org.hibernate.Query; |
7 | 10 |
8 import de.intevation.flys.backend.SessionHolder; | 11 import de.intevation.flys.backend.SessionHolder; |
14 /** | 17 /** |
15 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 18 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
16 */ | 19 */ |
17 public class MainValuesFactory { | 20 public class MainValuesFactory { |
18 | 21 |
22 private static Logger logger = Logger.getLogger(MainValuesFactory.class); | |
23 | |
19 public static List<MainValue> getMainValues(Gauge gauge) { | 24 public static List<MainValue> getMainValues(Gauge gauge) { |
20 Session session = SessionHolder.HOLDER.get(); | 25 Session session = SessionHolder.HOLDER.get(); |
21 | 26 |
22 Query query = session.createQuery( | 27 Query query = session.createQuery( |
23 "from MainValue where gauge=:gauge"); | 28 "from MainValue where gauge=:gauge"); |
24 query.setParameter("gauge", gauge); | 29 query.setParameter("gauge", gauge); |
25 | 30 |
26 return query.list(); | 31 return query.list(); |
27 } | 32 } |
33 | |
34 | |
35 /** | |
36 * Returns an array of [days, qs] necessary to create duration curves. | |
37 * | |
38 * @param gauge The selected gauge. | |
39 * | |
40 * @return a 2dim array of [days, qs] where days is an int[] and qs is | |
41 * an double[]. | |
42 */ | |
43 public static Object[] getDurationCurveData(Gauge gauge) { | |
44 Session session = SessionHolder.HOLDER.get(); | |
45 | |
46 Query query = session.createQuery( | |
47 "select cast(nmv.name as integer) as days, mv.value as q " + | |
48 "from MainValue as mv " + | |
49 "join mv.mainValue as nmv " + | |
50 "join nmv.type mvt " + | |
51 "where mvt.name = 'D' and mv.gauge.id = :gauge_id " + | |
52 "order by days"); | |
53 | |
54 query.setParameter("gauge_id", gauge.getId()); | |
55 | |
56 List<Object> results = query.list(); | |
57 int[] days = new int[results.size()]; | |
58 double[] qs = new double[results.size()]; | |
59 | |
60 int idx = 0; | |
61 | |
62 for (Object obj: results) { | |
63 Object[] arr = (Object[]) obj; | |
64 | |
65 try { | |
66 int day = ((Integer) arr[0]).intValue(); | |
67 double q = ((BigDecimal) arr[1]).doubleValue(); | |
68 | |
69 days[idx] = day; | |
70 qs[idx++] = q; | |
71 } | |
72 catch (NumberFormatException nfe) { | |
73 logger.warn(nfe, nfe); | |
74 } | |
75 } | |
76 | |
77 return new Object[] { days, qs }; | |
78 } | |
28 } | 79 } |
29 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : | 80 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |