Mercurial > dive4elements > river
diff flys-aft/src/main/java/de/intevation/aft/River.java @ 5258:da1e897c7224
Set the BFG_ID for current discharge tables in FLYS.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Tue, 12 Mar 2013 19:15:18 +0100 |
parents | 2b7f44c80857 |
children | 7a68967ca72a |
line wrap: on
line diff
--- a/flys-aft/src/main/java/de/intevation/aft/River.java Mon Mar 11 12:55:09 2013 +0100 +++ b/flys-aft/src/main/java/de/intevation/aft/River.java Tue Mar 12 19:15:18 2013 +0100 @@ -87,8 +87,8 @@ String num = messstellenRs.getString("MESSSTELLE_NR"); double station = messstellenRs.getDouble("STATIONIERUNG"); - if (!messstellenRs.wasNull() && station < from && station > to) { - log.warn("Station found in AFT but in range: " + station); + if (!messstellenRs.wasNull() && !inside(station)) { + log.warn("Station found in AFT but in not range: " + station); continue; } @@ -171,12 +171,93 @@ boolean modified = false; for (DIPSGauge gauge: gauges) { + modified |= updateBfGIdOnMasterDischargeTable(context, gauge); modified |= updateGauge(context, gauge); } return modified; } + protected boolean updateBfGIdOnMasterDischargeTable( + SyncContext context, + DIPSGauge gauge + ) throws SQLException { + log.info( + "FLYS: Updating master discharge table bfg_id for '" + + gauge.getAftName() + "'"); + ConnectedStatements flysStatements = context.getFlysStatements(); + + ResultSet rs = flysStatements + .getStatement("select.gauge.master.discharge.table") + .clearParameters() + .setInt("gauge_id", gauge.getFlysId()) + .executeQuery(); + + int flysId; + + try { + if (rs.next()) { + log.error( + "FLYS: No master discharge table found for gauge '" + + gauge.getAftName() + "'"); + return false; + } + String bfgId = rs.getString("bfg_id"); + if (!rs.wasNull()) { // already has BFG_ID + return false; + } + flysId = rs.getInt("id"); + } finally { + rs.close(); + } + + // We need to find out the BFG_ID of the current discharge table + // for this gauge in AFT. + + ConnectedStatements aftStatements = context.getAftStatements(); + + rs = aftStatements + .getStatement("select.bfg.id.current") + .clearParameters() + .setString("number", "%" + gauge.getOfficialNumber()) + .executeQuery(); + + String bfgId = null; + + try { + if (rs.next()) { + bfgId = rs.getString("BFG_ID"); + } + } finally { + rs.close(); + } + + if (bfgId == null) { + log.warn( + "No BFG_ID found for current discharge table of gauge '" + + gauge + "'"); + return false; + } + + // Set the BFG_ID in FLYS. + flysStatements.beginTransaction(); + try { + flysStatements + .getStatement("update.bfg.id.discharge.table") + .clearParameters() + .setInt("id", flysId) + .setString("bfg_id", bfgId) + .executeUpdate(); + flysStatements.commitTransaction(); + } catch (SQLException sqle) { + flysStatements.rollbackTransaction(); + log.error(sqle, sqle); + return false; + } + + return true; + } + protected boolean updateGauge( SyncContext context, DIPSGauge gauge