Mercurial > dive4elements > river
diff flys-aft/src/main/java/de/intevation/aft/SyncContext.java @ 4084:9178beeb7b05
Moved DIPS gauge number -> DIPS gauge index.
flys-aft/trunk@3514 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 21 Dec 2011 15:16:58 +0000 |
parents | 97de7a552b79 |
children | 859b4781554a |
line wrap: on
line diff
--- a/flys-aft/src/main/java/de/intevation/aft/SyncContext.java Wed Dec 21 14:56:29 2011 +0000 +++ b/flys-aft/src/main/java/de/intevation/aft/SyncContext.java Wed Dec 21 15:16:58 2011 +0000 @@ -1,14 +1,25 @@ package de.intevation.aft; +import java.util.Map; +import java.util.HashMap; + +import org.w3c.dom.Document; + import de.intevation.db.ConnectedStatements; -import org.w3c.dom.Document; +import org.w3c.dom.NodeList; +import org.w3c.dom.Element; + +import org.apache.log4j.Logger; public class SyncContext { - protected ConnectedStatements aftStatements; - protected ConnectedStatements flysStatements; - protected Document dips; + private static Logger log = Logger.getLogger(SyncContext.class); + + protected ConnectedStatements aftStatements; + protected ConnectedStatements flysStatements; + protected Document dips; + protected Map<Long, DIPSGauge> numberToGauge; public SyncContext() { } @@ -21,6 +32,7 @@ this.aftStatements = aftStatements; this.flysStatements = flysStatements; this.dips = dips; + numberToGauge = indexByNumber(dips); } public ConnectedStatements getAftStatements() { @@ -51,6 +63,44 @@ aftStatements.close(); flysStatements.close(); } + + public static Long numberToLong(String s) { + try { + return Long.valueOf(s.trim()); + } + catch (NumberFormatException nfe) { + } + return null; + } + + public Map<Long, DIPSGauge> getDIPSGauges() { + return numberToGauge; + } + + protected static Map<Long, DIPSGauge> indexByNumber(Document document) { + Map<Long, DIPSGauge> map = new HashMap<Long, DIPSGauge>(); + NodeList nodes = document.getElementsByTagName("PEGELSTATION"); + for (int i = nodes.getLength()-1; i >= 0; --i) { + Element element = (Element)nodes.item(i); + String numberString = element.getAttribute("NUMMER"); + Long number = numberToLong(numberString); + if (number != null) { + DIPSGauge newG = new DIPSGauge(element); + DIPSGauge oldG = map.put(number, newG); + if (oldG != null) { + log.warn("DIPS: '" + newG.getName() + + "' collides with '" + oldG.getName() + + "' on gauge number " + number + "."); + } + } + else { + log.warn("DIPS: gauge '" + element.getAttribute("NAME") + + "' has invalid gauge number '" + numberString + "'"); + } + } + return map; + } + } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :