Mercurial > dive4elements > river
diff flys-aft/src/main/java/de/intevation/aft/SyncContext.java @ 4090:d556e29592f5
Create new discharge tables if needed.
flys-aft/trunk@3590 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 04 Jan 2012 17:59:26 +0000 |
parents | 859b4781554a |
children | b6a18d706cbe |
line wrap: on
line diff
--- a/flys-aft/src/main/java/de/intevation/aft/SyncContext.java Tue Jan 03 12:25:06 2012 +0000 +++ b/flys-aft/src/main/java/de/intevation/aft/SyncContext.java Wed Jan 04 17:59:26 2012 +0000 @@ -3,8 +3,7 @@ import java.util.Map; import java.util.Date; import java.util.HashMap; -import java.util.Set; -import java.util.TreeSet; +import java.util.TreeMap; import java.sql.SQLException; import java.sql.ResultSet; @@ -22,11 +21,12 @@ { private static Logger log = Logger.getLogger(SyncContext.class); - protected ConnectedStatements aftStatements; - protected ConnectedStatements flysStatements; - protected Document dips; - protected Map<Long, DIPSGauge> numberToGauge; - protected Set<TimeInterval> flysTimeIntervals; + protected ConnectedStatements aftStatements; + protected ConnectedStatements flysStatements; + protected Document dips; + + protected Map<Long, DIPSGauge> numberToGauge; + protected Map<TimeInterval, TimeInterval> flysTimeIntervals; public SyncContext() { } @@ -112,11 +112,14 @@ return map; } - protected Set<TimeInterval> loadTimeIntervals() throws SQLException { + protected Map<TimeInterval, TimeInterval> loadTimeIntervals() + throws SQLException { boolean debug = log.isDebugEnabled(); - Set<TimeInterval> intervals = new TreeSet<TimeInterval>(); + Map<TimeInterval, TimeInterval> intervals = + new TreeMap<TimeInterval, TimeInterval>(); + ResultSet rs = null; try { @@ -136,7 +139,7 @@ } TimeInterval ti = new TimeInterval(id, start, stop); - intervals.add(ti); + intervals.put(ti, ti); } } finally { @@ -152,6 +155,44 @@ return intervals; } + public TimeInterval fetchOrCreateFLYSTimeInterval(TimeInterval key) + throws SQLException + { + TimeInterval old = flysTimeIntervals.get(key); + if (old != null) { + return old; + } + + ResultSet rs = null; + try { + rs = flysStatements.getStatement("next.timeinterval.id") + .executeQuery(); + rs.next(); + key.setId(rs.getInt("time_interval_id")); + rs.close(); rs = null; + + flysStatements.getStatement("insert.timeinterval") + .clearParameters() + .setInt("id", key.getId()) + .setObject("start_time", key.getStart()) + .setObject("stop_time", key.getStop()) + .execute(); + + if (log.isDebugEnabled()) { + log.debug("FLYS: Created time interval id: " + key.getId()); + } + } + finally { + if (rs != null) { + rs.close(); + } + } + + flysTimeIntervals.put(key, key); + + return key; + } + } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :