Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/GaugeTimerangeState.java @ 2415:64dd65aa620d
Partial fix for flys/issue499
flys-artifacts/trunk@4046 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 13 Feb 2012 17:49:04 +0000 |
parents | 2966787b5188 |
children | e86cd5176678 |
line wrap: on
line source
package de.intevation.flys.artifacts.states; import java.util.Calendar; import java.util.List; import org.apache.log4j.Logger; import org.hibernate.Session; import org.hibernate.SQLQuery; import org.hibernate.type.StandardBasicTypes; import de.intevation.flys.model.Gauge; import de.intevation.flys.backend.SessionHolder; import de.intevation.flys.artifacts.FLYSArtifact; import de.intevation.flys.utils.FLYSUtils; /** * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class GaugeTimerangeState extends IntRangeState { private static final Logger logger = Logger.getLogger(GaugeTimerangeState.class); protected int[] getLowerUpper(FLYSArtifact flys) { Gauge gauge = FLYSUtils.getReferenceGauge(flys); if (gauge == null) { logger.warn("No reference gauge specified!"); return new int[] { 0, 0 }; } 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)"); query.addScalar("min", StandardBasicTypes.CALENDAR); query.addScalar("max", StandardBasicTypes.CALENDAR); query.setInteger("gid", gauge.getId()); List results = query.list(); if (results != null) { Object[] res = (Object[]) results.get(0); Calendar lo = (Calendar) res[0]; Calendar up = (Calendar) res[1]; return new int[] { lo.get(Calendar.YEAR), up.get(Calendar.YEAR) }; } logger.warn("Could not determine time range for gauge: " + gauge); return null; } @Override protected Object getLower(FLYSArtifact flys) { int[] lowerUpper = getLowerUpper(flys); return lowerUpper != null ? lowerUpper[0] : 0; } @Override protected Object getUpper(FLYSArtifact flys) { int[] lowerUpper = getLowerUpper(flys); return lowerUpper != null ? lowerUpper[1] : 0; } @Override protected String getUIProvider() { return "gaugetimerange"; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :