sascha@4077: package de.intevation.aft; sascha@4077: sascha@4084: import java.util.Map; sascha@4084: import java.util.HashMap; sascha@4084: sascha@4084: import org.w3c.dom.Document; sascha@4084: sascha@4077: import de.intevation.db.ConnectedStatements; sascha@4077: sascha@4084: import org.w3c.dom.NodeList; sascha@4084: import org.w3c.dom.Element; sascha@4084: sascha@4084: import org.apache.log4j.Logger; sascha@4077: sascha@4077: public class SyncContext sascha@4077: { sascha@4084: private static Logger log = Logger.getLogger(SyncContext.class); sascha@4084: sascha@4084: protected ConnectedStatements aftStatements; sascha@4084: protected ConnectedStatements flysStatements; sascha@4084: protected Document dips; sascha@4084: protected Map numberToGauge; sascha@4077: sascha@4077: public SyncContext() { sascha@4077: } sascha@4077: sascha@4077: public SyncContext( sascha@4077: ConnectedStatements aftStatements, sascha@4077: ConnectedStatements flysStatements, sascha@4077: Document dips sascha@4077: ) { sascha@4077: this.aftStatements = aftStatements; sascha@4077: this.flysStatements = flysStatements; sascha@4077: this.dips = dips; sascha@4084: numberToGauge = indexByNumber(dips); sascha@4077: } sascha@4077: sascha@4077: public ConnectedStatements getAftStatements() { sascha@4077: return aftStatements; sascha@4077: } sascha@4077: sascha@4077: public void setAftStatements(ConnectedStatements aftStatements) { sascha@4077: this.aftStatements = aftStatements; sascha@4077: } sascha@4077: sascha@4077: public ConnectedStatements getFlysStatements() { sascha@4077: return flysStatements; sascha@4077: } sascha@4077: sascha@4077: public void setFlysStatements(ConnectedStatements flysStatements) { sascha@4077: this.flysStatements = flysStatements; sascha@4077: } sascha@4077: sascha@4077: public Document getDips() { sascha@4077: return dips; sascha@4077: } sascha@4077: sascha@4077: public void setDips(Document dips) { sascha@4077: this.dips = dips; sascha@4077: } sascha@4077: sascha@4077: void close() { sascha@4077: aftStatements.close(); sascha@4077: flysStatements.close(); sascha@4077: } sascha@4084: sascha@4084: public static Long numberToLong(String s) { sascha@4084: try { sascha@4084: return Long.valueOf(s.trim()); sascha@4084: } sascha@4084: catch (NumberFormatException nfe) { sascha@4084: } sascha@4084: return null; sascha@4084: } sascha@4084: sascha@4084: public Map getDIPSGauges() { sascha@4084: return numberToGauge; sascha@4084: } sascha@4084: sascha@4084: protected static Map indexByNumber(Document document) { sascha@4084: Map map = new HashMap(); sascha@4084: NodeList nodes = document.getElementsByTagName("PEGELSTATION"); sascha@4084: for (int i = nodes.getLength()-1; i >= 0; --i) { sascha@4084: Element element = (Element)nodes.item(i); sascha@4084: String numberString = element.getAttribute("NUMMER"); sascha@4084: Long number = numberToLong(numberString); sascha@4084: if (number != null) { sascha@4084: DIPSGauge newG = new DIPSGauge(element); sascha@4084: DIPSGauge oldG = map.put(number, newG); sascha@4084: if (oldG != null) { sascha@4084: log.warn("DIPS: '" + newG.getName() + sascha@4084: "' collides with '" + oldG.getName() + sascha@4084: "' on gauge number " + number + "."); sascha@4084: } sascha@4084: } sascha@4084: else { sascha@4084: log.warn("DIPS: gauge '" + element.getAttribute("NAME") + sascha@4084: "' has invalid gauge number '" + numberString + "'"); sascha@4084: } sascha@4084: } sascha@4084: return map; sascha@4084: } sascha@4084: sascha@4077: } sascha@4077: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : sascha@4077: