Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/org/dive4elements/river/artifacts/states/GaugeTimerangeState.java @ 5831:bd047b71ab37
Repaired internal references
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 12:06:39 +0200 |
parents | flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/GaugeTimerangeState.java@12766ab27a36 |
children |
comparison
equal
deleted
inserted
replaced
5830:160f53ee0870 | 5831:bd047b71ab37 |
---|---|
1 package org.dive4elements.river.artifacts.states; | |
2 | |
3 import java.util.Calendar; | |
4 import java.util.List; | |
5 | |
6 import org.apache.log4j.Logger; | |
7 import org.hibernate.SQLQuery; | |
8 import org.hibernate.Session; | |
9 import org.hibernate.type.StandardBasicTypes; | |
10 | |
11 import org.dive4elements.river.artifacts.FLYSArtifact; | |
12 import org.dive4elements.river.backend.SessionHolder; | |
13 import org.dive4elements.river.model.Gauge; | |
14 import org.dive4elements.river.utils.FLYSUtils; | |
15 | |
16 | |
17 /** | |
18 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | |
19 */ | |
20 public class GaugeTimerangeState extends IntRangeState { | |
21 | |
22 /** Private logger. */ | |
23 private static final Logger logger = | |
24 Logger.getLogger(GaugeTimerangeState.class); | |
25 | |
26 | |
27 /** Get 'min' and 'max'times of gauge time intervals. */ | |
28 protected long[] getLowerUpper(FLYSArtifact flys) { | |
29 Gauge gauge = FLYSUtils.getReferenceGauge(flys); | |
30 | |
31 if (gauge == null) { | |
32 logger.warn("No reference gauge specified!"); | |
33 return new long[] { 0, 0 }; | |
34 } | |
35 | |
36 Session session = SessionHolder.HOLDER.get(); | |
37 | |
38 SQLQuery query = session.createSQLQuery( | |
39 "SELECT min(start_time) as min, max(stop_time) as max " + | |
40 "FROM time_intervals WHERE id in " + | |
41 "(SELECT time_interval_id FROM discharge_tables " + | |
42 "WHERE gauge_id =:gid)"); | |
43 | |
44 query.addScalar("min", StandardBasicTypes.CALENDAR); | |
45 query.addScalar("max", StandardBasicTypes.CALENDAR); | |
46 | |
47 query.setInteger("gid", gauge.getId()); | |
48 | |
49 List<?> results = query.list(); | |
50 | |
51 if (results != null) { | |
52 Object[] res = (Object[]) results.get(0); | |
53 | |
54 Calendar lo = (Calendar) res[0]; | |
55 Calendar up = (Calendar) res[1]; | |
56 | |
57 if (lo != null && up != null) { | |
58 return new long[] { lo.getTimeInMillis(), up.getTimeInMillis() }; | |
59 } | |
60 } | |
61 | |
62 logger.warn("Could not determine time range for gauge: " + gauge); | |
63 | |
64 return null; | |
65 } | |
66 | |
67 | |
68 @Override | |
69 protected Object getLower(FLYSArtifact flys) { | |
70 long[] lowerUpper = getLowerUpper(flys); | |
71 | |
72 return lowerUpper != null ? lowerUpper[0] : 0; | |
73 } | |
74 | |
75 | |
76 @Override | |
77 protected Object getUpper(FLYSArtifact flys) { | |
78 long[] lowerUpper = getLowerUpper(flys); | |
79 | |
80 return lowerUpper != null ? lowerUpper[1] : 0; | |
81 } | |
82 | |
83 | |
84 @Override | |
85 protected String getUIProvider() { | |
86 return "gaugetimerange"; | |
87 } | |
88 | |
89 @Override | |
90 protected String getType() { | |
91 return "longrange"; | |
92 } | |
93 } | |
94 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |