Mercurial > dive4elements > river
changeset 6895:e5675e85ac38
Potential fix for flys/1453.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Wed, 21 Aug 2013 16:15:37 +0200 |
parents | 389bf6b7d371 |
children | 84b1e87e8669 |
files | etl/src/main/java/org/dive4elements/river/etl/aft/River.java etl/src/main/resources/sql/flys-common.properties |
diffstat | 2 files changed, 29 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/etl/src/main/java/org/dive4elements/river/etl/aft/River.java Wed Aug 21 16:14:29 2013 +0200 +++ b/etl/src/main/java/org/dive4elements/river/etl/aft/River.java Wed Aug 21 16:15:37 2013 +0200 @@ -15,9 +15,11 @@ import java.sql.SQLException; import java.util.ArrayList; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.TreeMap; import org.apache.log4j.Logger; @@ -136,11 +138,25 @@ .clearParameters() .setInt("river_id", id1).executeQuery(); + TreeMap<Double, String> station2gaugeName = new TreeMap<Double, String>( + new Comparator<Double>() { + @Override + public int compare(Double a, Double b) { + double diff = a - b; + if (diff < -0.0001) return -1; + if (diff > 0.0001) return +1; + return 0; + } + }); + try { while (gaugesRs.next()) { int gaugeId = gaugesRs.getInt("id"); String name = gaugesRs.getString("name"); long number = gaugesRs.getLong("official_number"); + double station = gaugesRs.getDouble("station"); + station2gaugeName.put(station, name); + if (gaugesRs.wasNull()) { log.warn("FLYS: Gauge '" + name + "' has no official number. Ignored."); @@ -163,7 +179,8 @@ gaugesRs.close(); } - boolean modified = createGauges(context, aftDIPSGauges); + boolean modified = createGauges( + context, aftDIPSGauges, station2gaugeName); modified |= updateGauges(context, updateGauges); @@ -364,7 +381,8 @@ protected boolean createGauges( SyncContext context, - Map<Long, DIPSGauge> gauges + Map<Long, DIPSGauge> gauges, + Map<Double, String> station2gaugeName ) throws SQLException { @@ -385,6 +403,14 @@ log.info("Gauge '" + gauge.getAftName() + "' not in FLYS but in AFT/DIPS. -> Create"); + String flysGaugeName = station2gaugeName.get(gauge.getStation()); + if (flysGaugeName != null) { + log.warn("FLYS: AFT gauge " + gauge.getName() + + " has same station as FLYS gauge " + flysGaugeName + + " -> ignored."); + continue; + } + if (!gauge.hasDatums()) { log.warn("DIPS: Gauge '" + gauge.getAftName() + "' has no datum. Ignored.");
--- a/etl/src/main/resources/sql/flys-common.properties Wed Aug 21 16:14:29 2013 +0200 +++ b/etl/src/main/resources/sql/flys-common.properties Wed Aug 21 16:15:37 2013 +0200 @@ -7,7 +7,7 @@ WHERE w.kind = 0 \ GROUP BY r.id, r.name select.gauges = \ - SELECT id, name, official_number \ + SELECT id, name, official_number, station \ FROM gauges \ WHERE river_id = :river_id next.gauge.id = \