comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/GaugeTimerangeState.java @ 3745:e86cd5176678

Check to prevent NPE flys-artifacts/trunk@5429 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Christian Lins <christian.lins@intevation.de>
date Mon, 10 Sep 2012 20:32:39 +0000
parents 2966787b5188
children f6c73ee1b7f1
comparison
equal deleted inserted replaced
3744:b220287a171e 3745:e86cd5176678
2 2
3 import java.util.Calendar; 3 import java.util.Calendar;
4 import java.util.List; 4 import java.util.List;
5 5
6 import org.apache.log4j.Logger; 6 import org.apache.log4j.Logger;
7 7 import org.hibernate.SQLQuery;
8 import org.hibernate.Session; 8 import org.hibernate.Session;
9 import org.hibernate.SQLQuery;
10 import org.hibernate.type.StandardBasicTypes; 9 import org.hibernate.type.StandardBasicTypes;
11 10
11 import de.intevation.flys.artifacts.FLYSArtifact;
12 import de.intevation.flys.backend.SessionHolder;
12 import de.intevation.flys.model.Gauge; 13 import de.intevation.flys.model.Gauge;
13 import de.intevation.flys.backend.SessionHolder;
14
15 import de.intevation.flys.artifacts.FLYSArtifact;
16 import de.intevation.flys.utils.FLYSUtils; 14 import de.intevation.flys.utils.FLYSUtils;
17 15
18 16
19 /** 17 /**
20 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> 18 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
21 */ 19 */
22 public class GaugeTimerangeState extends IntRangeState { 20 public class GaugeTimerangeState extends IntRangeState {
23 21
24 private static final Logger logger = 22 private static final Logger logger =
25 Logger.getLogger(GaugeTimerangeState.class); 23 Logger.getLogger(GaugeTimerangeState.class);
26 24
27 25
28 protected int[] getLowerUpper(FLYSArtifact flys) { 26 protected int[] getLowerUpper(FLYSArtifact flys) {
29 Gauge gauge = FLYSUtils.getReferenceGauge(flys); 27 Gauge gauge = FLYSUtils.getReferenceGauge(flys);
30 28
34 } 32 }
35 33
36 Session session = SessionHolder.HOLDER.get(); 34 Session session = SessionHolder.HOLDER.get();
37 35
38 SQLQuery query = session.createSQLQuery( 36 SQLQuery query = session.createSQLQuery(
39 "SELECT min(start_time) as min, max(stop_time) as max " + 37 "SELECT min(start_time) as min, max(stop_time) as max " +
40 "FROM time_intervals WHERE id in " + 38 "FROM time_intervals WHERE id in " +
41 "(SELECT time_interval_id FROM discharge_tables " + 39 "(SELECT time_interval_id FROM discharge_tables " +
42 "WHERE gauge_id =:gid)"); 40 "WHERE gauge_id =:gid)");
43 41
44 query.addScalar("min", StandardBasicTypes.CALENDAR); 42 query.addScalar("min", StandardBasicTypes.CALENDAR);
45 query.addScalar("max", StandardBasicTypes.CALENDAR); 43 query.addScalar("max", StandardBasicTypes.CALENDAR);
46 44
47 query.setInteger("gid", gauge.getId()); 45 query.setInteger("gid", gauge.getId());
48 46
49 List results = query.list(); 47 List<?> results = query.list();
50 48
51 if (results != null) { 49 if (results != null) {
52 Object[] res = (Object[]) results.get(0); 50 Object[] res = (Object[]) results.get(0);
53 51
54 Calendar lo = (Calendar) res[0]; 52 Calendar lo = (Calendar) res[0];
55 Calendar up = (Calendar) res[1]; 53 Calendar up = (Calendar) res[1];
56 54
57 return new int[] { lo.get(Calendar.YEAR), up.get(Calendar.YEAR) }; 55 if (lo != null && up != null) {
56 return new int[] { lo.get(Calendar.YEAR), up.get(Calendar.YEAR) };
57 }
58 } 58 }
59 59
60 logger.warn("Could not determine time range for gauge: " + gauge); 60 logger.warn("Could not determine time range for gauge: " + gauge);
61 61
62 return null; 62 return null;

http://dive4elements.wald.intevation.org