diff 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 diff
--- a/flys-aft/src/main/java/de/intevation/aft/River.java	Wed Dec 21 15:16:58 2011 +0000
+++ b/flys-aft/src/main/java/de/intevation/aft/River.java	Thu Dec 22 12:07:29 2011 +0000
@@ -1,5 +1,8 @@
 package de.intevation.aft;
 
+import java.util.List;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.Map;
 
 import java.sql.ResultSet;
@@ -42,6 +45,10 @@
             .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");
@@ -51,14 +58,29 @@
                 continue;
             }
             DIPSGauge dipsGauge = dipsGauges.get(number);
-            if (dipsGauges == null) {
-                log.warn("MESSSTELLE '" + name + "' not found in DIPS.");
+            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()
@@ -67,10 +89,31 @@
         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() {

http://dive4elements.wald.intevation.org