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 :

http://dive4elements.wald.intevation.org