Mercurial > dive4elements > river
view flys-aft/src/main/java/de/intevation/aft/River.java @ 4085:067341e86375
Separate FLYS gauges to be updated or to create.
flys-aft/trunk@3523 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 22 Dec 2011 12:07:29 +0000 |
parents | 9178beeb7b05 |
children | aad1886ea226 |
line wrap: on
line source
package de.intevation.aft; import java.util.List; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.log4j.Logger; import de.intevation.db.ConnectedStatements; public class River extends IdPair { private static Logger log = Logger.getLogger(River.class); protected String name; public River() { } public River(int id1, int id2, String name) { super(id1, id2); this.name = name; } public String getName() { return name; } public void sync(SyncContext context) throws SQLException { log.info("sync river: " + this); Map<Long, DIPSGauge> dipsGauges = context.getDIPSGauges(); ConnectedStatements flysStatements = context.getFlysStatements(); ConnectedStatements aftStatements = context.getAftStatements(); ResultSet messstellenRs = aftStatements .getStatement("select.messstelle") .clearParameters() .setInt("GEWAESSER_NR", id2).executeQuery(); String riverName = getName(); Map<Long, DIPSGauge> aftDIPSGauges = new HashMap<Long, DIPSGauge>(); while (messstellenRs.next()) { String name = messstellenRs.getString("NAME"); String num = messstellenRs.getString("MESSSTELLE_NR"); Long number = SyncContext.numberToLong(num); if (number == null) { log.warn("Invalid MESSSTELLE_NR for MESSSTELLE '"+name+"'"); continue; } DIPSGauge dipsGauge = dipsGauges.get(number); if (dipsGauge == null) { log.warn( "MESSSTELLE '" + name + "' not found in DIPS. " + "Gauge number used for lookup: " + number); continue; } String gaugeRiver = dipsGauge.getRiverName(); if (!gaugeRiver.equalsIgnoreCase(riverName)) { log.warn( "MESSSTELLE '" + name + "' is assigned to river '" + gaugeRiver + "'. Needs to be on '" + riverName + "'."); continue; } dipsGauge.setAftName(name); aftDIPSGauges.put(number, dipsGauge); } messstellenRs.close(); List<DIPSGauge> updateGauges = new ArrayList<DIPSGauge>(); ResultSet gaugesRs = flysStatements .getStatement("select.gauges") .clearParameters() .setInt("river_id", id1).executeQuery(); while (gaugesRs.next()) { int gaugeId = gaugesRs.getInt("id"); String name = gaugesRs.getString("name"); long number = gaugesRs.getLong("official_number"); if (gaugesRs.wasNull()) { log.warn("FLYS: Gauge '" + name + "' has no official number. Ignored."); continue; } Long key = Long.valueOf(number); DIPSGauge aftDIPSGauge = aftDIPSGauges.remove(key); if (aftDIPSGauge == null) { log.warn("FLYS: Gauge '" + name + "' number " + number + " is not found in AFT/DIPS."); continue; } aftDIPSGauge.setFlysId(gaugeId); log.info("Gauge '" + name + "' found in FLYS, AFT and DIPS. -> Update"); updateGauges.add(aftDIPSGauge); } gaugesRs.close(); for (DIPSGauge gauge: aftDIPSGauges.values()) { log.info("Gauge '" + gauge.getAftName() + "' not in FLYS but in AFT/DIPS. -> Create"); } } public String toString() { return "[River: name=" + name + ", " + super.toString() + "]"; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :