annotate etl/src/main/java/org/dive4elements/river/etl/aft/SyncContext.java @ 7019:a2d61401bd92

(Issue 1353): Add warning when a gauge is skipped because of station
author Andre Heinecke <aheinecke@intevation.de>
date Mon, 16 Sep 2013 12:51:22 +0200
parents 6f80d5f375fd
children 0a5239a1e46e
rev   line source
5841
8bd9b551456c Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
8bd9b551456c Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
8bd9b551456c Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5991
6f80d5f375fd Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5841
8bd9b551456c Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5991
6f80d5f375fd Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
6 * documentation coming with Dive4Elements River for details.
5841
8bd9b551456c Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
8bd9b551456c Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5826
9438e9259213 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5825
diff changeset
9 package org.dive4elements.river.etl.aft;
4077
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
5826
9438e9259213 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5825
diff changeset
11 import org.dive4elements.river.etl.db.ConnectedStatements;
4077
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12
4772
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4771
diff changeset
13 import java.sql.ResultSet;
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4771
diff changeset
14 import java.sql.SQLException;
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4771
diff changeset
15
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4771
diff changeset
16 import java.util.Date;
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4771
diff changeset
17 import java.util.HashMap;
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4771
diff changeset
18 import java.util.Map;
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4771
diff changeset
19 import java.util.TreeMap;
4084
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
20
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
21 import org.apache.log4j.Logger;
4077
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22
4772
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4771
diff changeset
23 import org.w3c.dom.Document;
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4771
diff changeset
24 import org.w3c.dom.Element;
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4771
diff changeset
25 import org.w3c.dom.NodeList;
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4771
diff changeset
26
4077
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 public class SyncContext
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 {
4084
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
29 private static Logger log = Logger.getLogger(SyncContext.class);
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
30
4090
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
31 protected ConnectedStatements aftStatements;
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
32 protected ConnectedStatements flysStatements;
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
33 protected Document dips;
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
34
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
35 protected Map<Long, DIPSGauge> numberToGauge;
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
36 protected Map<TimeInterval, TimeInterval> flysTimeIntervals;
4077
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38 public SyncContext() {
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 }
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 public SyncContext(
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 ConnectedStatements aftStatements,
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
43 ConnectedStatements flysStatements,
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44 Document dips
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 ) {
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46 this.aftStatements = aftStatements;
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
47 this.flysStatements = flysStatements;
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48 this.dips = dips;
4089
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
49 }
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
50
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
51 public void init() throws SQLException {
4084
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
52 numberToGauge = indexByNumber(dips);
4089
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
53 flysTimeIntervals = loadTimeIntervals();
4077
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
54 }
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
55
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56 public ConnectedStatements getAftStatements() {
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 return aftStatements;
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
58 }
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
59
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
60 public void setAftStatements(ConnectedStatements aftStatements) {
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
61 this.aftStatements = aftStatements;
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
62 }
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
63
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
64 public ConnectedStatements getFlysStatements() {
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
65 return flysStatements;
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
66 }
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
67
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
68 public void setFlysStatements(ConnectedStatements flysStatements) {
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
69 this.flysStatements = flysStatements;
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
70 }
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
71
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
72 public Document getDips() {
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
73 return dips;
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
74 }
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
75
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
76 public void setDips(Document dips) {
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
77 this.dips = dips;
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
78 }
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
79
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
80 void close() {
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
81 aftStatements.close();
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
82 flysStatements.close();
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83 }
4084
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
84
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
85 public static Long numberToLong(String s) {
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
86 try {
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
87 return Long.valueOf(s.trim());
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
88 }
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
89 catch (NumberFormatException nfe) {
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
90 }
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
91 return null;
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
92 }
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
93
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
94 public Map<Long, DIPSGauge> getDIPSGauges() {
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
95 return numberToGauge;
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
96 }
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
97
5188
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
98 public Map<Long, DIPSGauge> getDIPSGauges(
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
99 String riverName,
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
100 double from,
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
101 double to
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
102 ) {
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
103 if (from > to) {
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
104 double t = from;
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
105 from = to;
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
106 to = t;
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
107 }
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
108
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
109 riverName = riverName.toLowerCase();
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
110
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
111 Map<Long, DIPSGauge> result = new HashMap<Long, DIPSGauge>();
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
112
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
113 for (Map.Entry<Long, DIPSGauge> entry: numberToGauge.entrySet()) {
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
114 DIPSGauge gauge = entry.getValue();
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
115 // XXX: Maybe a bit too sloppy.
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
116 if (!riverName.contains(gauge.getRiverName().toLowerCase())) {
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
117 continue;
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
118 }
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
119 double station = gauge.getStation();
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
120 if (station >= from && station <= to) {
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
121 result.put(entry.getKey(), gauge);
7019
a2d61401bd92 (Issue 1353): Add warning when a gauge is skipped because of station
Andre Heinecke <aheinecke@intevation.de>
parents: 5991
diff changeset
122 } else {
a2d61401bd92 (Issue 1353): Add warning when a gauge is skipped because of station
Andre Heinecke <aheinecke@intevation.de>
parents: 5991
diff changeset
123 log.warn("DIPS: Skipping Gauge: " + gauge.getName() +
a2d61401bd92 (Issue 1353): Add warning when a gauge is skipped because of station
Andre Heinecke <aheinecke@intevation.de>
parents: 5991
diff changeset
124 " because it is at Station: " + station +
a2d61401bd92 (Issue 1353): Add warning when a gauge is skipped because of station
Andre Heinecke <aheinecke@intevation.de>
parents: 5991
diff changeset
125 " and the river is limited to: " + from + " - " + to);
5188
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
126 }
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
127 }
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
128
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
129 return result;
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
130 }
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
131
4084
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
132 protected static Map<Long, DIPSGauge> indexByNumber(Document document) {
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
133 Map<Long, DIPSGauge> map = new HashMap<Long, DIPSGauge>();
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
134 NodeList nodes = document.getElementsByTagName("PEGELSTATION");
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
135 for (int i = nodes.getLength()-1; i >= 0; --i) {
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
136 Element element = (Element)nodes.item(i);
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
137 String numberString = element.getAttribute("NUMMER");
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
138 Long number = numberToLong(numberString);
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
139 if (number != null) {
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
140 DIPSGauge newG = new DIPSGauge(element);
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
141 DIPSGauge oldG = map.put(number, newG);
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
142 if (oldG != null) {
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
143 log.warn("DIPS: '" + newG.getName() +
4736
b195fede1c3b Remove trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4110
diff changeset
144 "' collides with '" + oldG.getName() +
4084
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
145 "' on gauge number " + number + ".");
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
146 }
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
147 }
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
148 else {
4110
06891562e633 Extracted and documented the error messages of the process.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4101
diff changeset
149 log.warn("DIPS: Gauge '" + element.getAttribute("NAME") +
06891562e633 Extracted and documented the error messages of the process.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4101
diff changeset
150 "' has invalid gauge number '" + numberString + "'.");
4084
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
151 }
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
152 }
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
153 return map;
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
154 }
9178beeb7b05 Moved DIPS gauge number -> DIPS gauge index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
155
4736
b195fede1c3b Remove trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4110
diff changeset
156 protected Map<TimeInterval, TimeInterval> loadTimeIntervals()
4090
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
157 throws SQLException {
4089
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
158
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
159 boolean debug = log.isDebugEnabled();
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
160
4090
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
161 Map<TimeInterval, TimeInterval> intervals =
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
162 new TreeMap<TimeInterval, TimeInterval>();
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
163
4771
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
164 ResultSet rs = flysStatements
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
165 .getStatement("select.timeintervals")
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
166 .executeQuery();
4736
b195fede1c3b Remove trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4110
diff changeset
167
4089
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
168 try {
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
169 while (rs.next()) {
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
170 int id = rs.getInt("id");
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
171 Date start = rs.getDate("start_time");
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
172 Date stop = rs.getDate("stop_time");
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
173
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
174 if (debug) {
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
175 log.debug("id: " + id);
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
176 log.debug("start: " + start);
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
177 log.debug("stop: " + stop);
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
178 }
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
179
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
180 TimeInterval ti = new TimeInterval(id, start, stop);
4090
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
181 intervals.put(ti, ti);
4089
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
182 }
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
183 }
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
184 finally {
4771
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
185 rs.close();
4089
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
186 }
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
187
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
188 if (debug) {
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
189 log.debug("loaded time intervals: " + intervals.size());
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
190 }
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
191
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
192 return intervals;
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
193 }
859b4781554a Prefetch existing time intervals from FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
194
4090
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
195 public TimeInterval fetchOrCreateFLYSTimeInterval(TimeInterval key)
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
196 throws SQLException
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
197 {
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
198 TimeInterval old = flysTimeIntervals.get(key);
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
199 if (old != null) {
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
200 return old;
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
201 }
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
202
4771
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
203 ResultSet rs = flysStatements
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
204 .getStatement("next.timeinterval.id")
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
205 .executeQuery();
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
206
4090
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
207 try {
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
208 rs.next();
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
209 key.setId(rs.getInt("time_interval_id"));
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
210 }
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
211 finally {
4771
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
212 rs.close();
4090
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
213 }
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
214
4771
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
215 if (log.isDebugEnabled()) {
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
216 log.debug("FLYS: Created time interval id: " + key.getId());
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
217 log.debug("FLYS: " + key);
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
218 }
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
219
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
220 flysStatements.getStatement("insert.timeinterval")
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
221 .clearParameters()
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
222 .setInt("id", key.getId())
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
223 .setObject("start_time", key.getStart())
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
224 .setObject("stop_time", key.getStop())
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
225 .execute();
e21acb4f5c62 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
226
4090
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
227 flysTimeIntervals.put(key, key);
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
228
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
229 return key;
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4089
diff changeset
230 }
4077
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
231 }
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
232 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org