# HG changeset patch # User Christian Lins # Date 1347309159 0 # Node ID e86cd517667873b0a72bc9be9bc9c37364971aa7 # Parent b220287a171e6da965eb96b17b049e3bbfa119a2 Check to prevent NPE flys-artifacts/trunk@5429 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r b220287a171e -r e86cd5176678 flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Mon Sep 10 16:52:15 2012 +0000 +++ b/flys-artifacts/ChangeLog Mon Sep 10 20:32:39 2012 +0000 @@ -1,3 +1,8 @@ +2012-09-10 Christian Lins + + * src/main/java/de/intevation/flys/artifacts/states/GaugeTimerangeState.java: + Add additional check to prevent NPE (fix for #844) + 2012-09-10 Sascha L. Teichmann * src/main/java/de/intevation/flys/artifacts/model/RangeWithValues.java: diff -r b220287a171e -r e86cd5176678 flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/GaugeTimerangeState.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/GaugeTimerangeState.java Mon Sep 10 16:52:15 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/GaugeTimerangeState.java Mon Sep 10 20:32:39 2012 +0000 @@ -4,15 +4,13 @@ import java.util.List; import org.apache.log4j.Logger; - +import org.hibernate.SQLQuery; import org.hibernate.Session; -import org.hibernate.SQLQuery; import org.hibernate.type.StandardBasicTypes; -import de.intevation.flys.model.Gauge; +import de.intevation.flys.artifacts.FLYSArtifact; import de.intevation.flys.backend.SessionHolder; - -import de.intevation.flys.artifacts.FLYSArtifact; +import de.intevation.flys.model.Gauge; import de.intevation.flys.utils.FLYSUtils; @@ -22,7 +20,7 @@ public class GaugeTimerangeState extends IntRangeState { private static final Logger logger = - Logger.getLogger(GaugeTimerangeState.class); + Logger.getLogger(GaugeTimerangeState.class); protected int[] getLowerUpper(FLYSArtifact flys) { @@ -36,17 +34,17 @@ Session session = SessionHolder.HOLDER.get(); SQLQuery query = session.createSQLQuery( - "SELECT min(start_time) as min, max(stop_time) as max " + - "FROM time_intervals WHERE id in " + - "(SELECT time_interval_id FROM discharge_tables " + - "WHERE gauge_id =:gid)"); + "SELECT min(start_time) as min, max(stop_time) as max " + + "FROM time_intervals WHERE id in " + + "(SELECT time_interval_id FROM discharge_tables " + + "WHERE gauge_id =:gid)"); query.addScalar("min", StandardBasicTypes.CALENDAR); query.addScalar("max", StandardBasicTypes.CALENDAR); query.setInteger("gid", gauge.getId()); - List results = query.list(); + List results = query.list(); if (results != null) { Object[] res = (Object[]) results.get(0); @@ -54,7 +52,9 @@ Calendar lo = (Calendar) res[0]; Calendar up = (Calendar) res[1]; - return new int[] { lo.get(Calendar.YEAR), up.get(Calendar.YEAR) }; + if (lo != null && up != null) { + return new int[] { lo.get(Calendar.YEAR), up.get(Calendar.YEAR) }; + } } logger.warn("Could not determine time range for gauge: " + gauge);