annotate etl/src/main/java/org/dive4elements/river/etl/aft/River.java @ 6894:389bf6b7d371

Backed out changeset 60f39ee19473
author Sascha L. Teichmann <teichmann@intevation.de>
date Wed, 21 Aug 2013 16:14:29 +0200
parents 60f39ee19473
children e5675e85ac38
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: 5990
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: 5990
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;
4075
dbd0b3b1b8b8 Sync each river.
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;
9438e9259213 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5825
diff changeset
12 import org.dive4elements.river.etl.db.SymbolicStatement;
4078
0944cdd2ee90 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
13
4076
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
14 import java.sql.ResultSet;
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 import java.sql.SQLException;
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16
4772
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4754
diff changeset
17 import java.util.ArrayList;
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4754
diff changeset
18 import java.util.HashMap;
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4754
diff changeset
19 import java.util.List;
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4754
diff changeset
20 import java.util.Map;
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21
4772
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4754
diff changeset
22 import org.apache.log4j.Logger;
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 public class River
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 extends IdPair
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 {
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 private static Logger log = Logger.getLogger(River.class);
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 protected String name;
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30
4753
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
31 protected double from;
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
32 protected double to;
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
33
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 public River() {
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 }
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36
4753
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
37 public River(int id1, String name, double from, double to) {
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
38 super(id1);
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
39 this.name = name;
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
40 this.from = from;
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
41 this.to = to;
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
42 }
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
43
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44 public River(int id1, int id2, String name) {
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 super(id1, id2);
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46 this.name = name;
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
47 }
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
49 public String getName() {
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
50 return name;
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
51 }
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
52
4753
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
53 public double getFrom() {
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
54 return from;
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
55 }
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
56
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
57 public void setFrom(double from) {
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
58 this.from = from;
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
59 }
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
60
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
61 public double getTo() {
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
62 return to;
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
63 }
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
64
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
65 public void setTo(double to) {
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
66 this.to = to;
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
67 }
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
68
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
69 public boolean inside(double x) {
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
70 return x >= from && x <= to;
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4736
diff changeset
71 }
4078
0944cdd2ee90 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4077
diff changeset
72
4094
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4093
diff changeset
73 public boolean sync(SyncContext context) throws SQLException {
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
74 log.info("sync river: " + this);
4077
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4076
diff changeset
75
5188
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4775
diff changeset
76 // Only take relevant gauges into account.
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4775
diff changeset
77 Map<Long, DIPSGauge> dipsGauges = context.getDIPSGauges(name, from, to);
4081
7a7b0f0cb653 Check if AFT gauges are in DIPS, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4079
diff changeset
78
4077
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4076
diff changeset
79 ConnectedStatements flysStatements = context.getFlysStatements();
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4076
diff changeset
80 ConnectedStatements aftStatements = context.getAftStatements();
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4076
diff changeset
81
4754
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
82 String riverName = getName();
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
83
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
84 Map<Long, DIPSGauge> aftDIPSGauges = new HashMap<Long, DIPSGauge>();
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
85
4076
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
86 ResultSet messstellenRs = aftStatements
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
87 .getStatement("select.messstelle")
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
88 .clearParameters()
4774
9dcc32fc5167 Moved check for calculation range intersection to SQL statement.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
89 .setInt("GEWAESSER_NR", id2)
9dcc32fc5167 Moved check for calculation range intersection to SQL statement.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
90 .executeQuery();
4076
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
91
4754
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
92 try {
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
93 while (messstellenRs.next()) {
4774
9dcc32fc5167 Moved check for calculation range intersection to SQL statement.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
94 String name = messstellenRs.getString("NAME");
9dcc32fc5167 Moved check for calculation range intersection to SQL statement.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4772
diff changeset
95 String num = messstellenRs.getString("MESSSTELLE_NR");
5188
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4775
diff changeset
96 double station = messstellenRs.getDouble("STATIONIERUNG");
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4775
diff changeset
97
5258
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
98 if (!messstellenRs.wasNull() && !inside(station)) {
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
99 log.warn("Station found in AFT but in not range: " + station);
5188
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4775
diff changeset
100 continue;
2b7f44c80857 Stations are now filtered by DiPS not AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4775
diff changeset
101 }
4754
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
102
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
103 Long number = SyncContext.numberToLong(num);
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
104 if (number == null) {
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
105 log.warn("AFT: Invalid MESSSTELLE_NR for MESSSTELLE '"+name+"'");
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
106 continue;
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
107 }
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
108 DIPSGauge dipsGauge = dipsGauges.get(number);
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
109 if (dipsGauge == null) {
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
110 log.warn(
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
111 "DIPS: MESSSTELLE '" + name + "' not found in DIPS. " +
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
112 "Gauge number used for lookup: " + number);
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
113 continue;
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
114 }
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
115 String gaugeRiver = dipsGauge.getRiverName();
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
116 if (!gaugeRiver.equalsIgnoreCase(riverName)) {
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
117 log.warn(
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
118 "DIPS: MESSSTELLE '" + name +
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
119 "' is assigned to river '" + gaugeRiver +
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
120 "'. Needs to be on '" + riverName + "'.");
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
121 continue;
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
122 }
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
123 dipsGauge.setAftName(name);
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
124 dipsGauge.setOfficialNumber(number);
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
125 aftDIPSGauges.put(number, dipsGauge);
4081
7a7b0f0cb653 Check if AFT gauges are in DIPS, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4079
diff changeset
126 }
4076
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
127 }
4754
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
128 finally {
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
129 messstellenRs.close();
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
130 }
4076
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
131
4085
067341e86375 Separate FLYS gauges to be updated or to create.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
132 List<DIPSGauge> updateGauges = new ArrayList<DIPSGauge>();
067341e86375 Separate FLYS gauges to be updated or to create.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
133
4076
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
134 ResultSet gaugesRs = flysStatements
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
135 .getStatement("select.gauges")
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
136 .clearParameters()
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
137 .setInt("river_id", id1).executeQuery();
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
138
4754
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
139 try {
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
140 while (gaugesRs.next()) {
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
141 int gaugeId = gaugesRs.getInt("id");
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
142 String name = gaugesRs.getString("name");
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
143 long number = gaugesRs.getLong("official_number");
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
144 if (gaugesRs.wasNull()) {
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
145 log.warn("FLYS: Gauge '" + name +
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
146 "' has no official number. Ignored.");
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
147 continue;
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
148 }
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
149 Long key = Long.valueOf(number);
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
150 DIPSGauge aftDIPSGauge = aftDIPSGauges.remove(key);
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
151 if (aftDIPSGauge == null) {
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
152 log.warn("FLYS: Gauge '" + name + "' number " + number +
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
153 " is not found in AFT/DIPS.");
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
154 continue;
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
155 }
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
156 aftDIPSGauge.setFlysId(gaugeId);
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
157 log.info("Gauge '" + name +
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
158 "' found in FLYS, AFT and DIPS. -> Update");
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
159 updateGauges.add(aftDIPSGauge);
4085
067341e86375 Separate FLYS gauges to be updated or to create.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
160 }
4076
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
161 }
4754
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
162 finally {
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
163 gaugesRs.close();
04377ccef10a AFT: Reject AFT gauges which are not inside the calculation range of the corresponding FLYS river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
164 }
4076
039413d7e394 Load gauges from both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
165
6894
389bf6b7d371 Backed out changeset 60f39ee19473
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6893
diff changeset
166 boolean modified = createGauges(context, aftDIPSGauges);
4087
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
167
4097
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
168 modified |= updateGauges(context, updateGauges);
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
169
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
170 return modified;
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
171 }
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
172
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
173 protected boolean updateGauges(
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
174 SyncContext context,
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
175 List<DIPSGauge> gauges
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
176 )
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
177 throws SQLException
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
178 {
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
179 boolean modified = false;
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
180
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
181 for (DIPSGauge gauge: gauges) {
5616
14de791bd8f7 AFT/DIPS/SGM: Do _not_ update current discharge table from AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5480
diff changeset
182 // XXX: Do dont modify the master AT.
14de791bd8f7 AFT/DIPS/SGM: Do _not_ update current discharge table from AFT.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5480
diff changeset
183 // modified |= updateBfGIdOnMasterDischargeTable(context, gauge);
4097
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
184 modified |= updateGauge(context, gauge);
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
185 }
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
186
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
187 return modified;
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
188 }
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
189
5258
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
190 protected boolean updateBfGIdOnMasterDischargeTable(
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
191 SyncContext context,
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
192 DIPSGauge gauge
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
193 ) throws SQLException {
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
194 log.info(
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
195 "FLYS: Updating master discharge table bfg_id for '" +
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
196 gauge.getAftName() + "'");
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
197 ConnectedStatements flysStatements = context.getFlysStatements();
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
198
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
199 ResultSet rs = flysStatements
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
200 .getStatement("select.gauge.master.discharge.table")
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
201 .clearParameters()
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
202 .setInt("gauge_id", gauge.getFlysId())
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
203 .executeQuery();
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
204
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
205 int flysId;
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
206
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
207 try {
5480
7a68967ca72a AFT/DIPS: Small fixes and workarounds for Oracle DB problems.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5258
diff changeset
208 if (!rs.next()) {
5258
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
209 log.error(
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
210 "FLYS: No master discharge table found for gauge '" +
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
211 gauge.getAftName() + "'");
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
212 return false;
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
213 }
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
214 String bfgId = rs.getString("bfg_id");
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
215 if (!rs.wasNull()) { // already has BFG_ID
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
216 return false;
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
217 }
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
218 flysId = rs.getInt("id");
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
219 } finally {
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
220 rs.close();
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
221 }
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
222
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
223 // We need to find out the BFG_ID of the current discharge table
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
224 // for this gauge in AFT.
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
225
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
226 ConnectedStatements aftStatements = context.getAftStatements();
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
227
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
228 rs = aftStatements
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
229 .getStatement("select.bfg.id.current")
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
230 .clearParameters()
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
231 .setString("number", "%" + gauge.getOfficialNumber())
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
232 .executeQuery();
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
233
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
234 String bfgId = null;
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
235
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
236 try {
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
237 if (rs.next()) {
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
238 bfgId = rs.getString("BFG_ID");
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
239 }
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
240 } finally {
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
241 rs.close();
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
242 }
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
243
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
244 if (bfgId == null) {
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
245 log.warn(
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
246 "No BFG_ID found for current discharge table of gauge '" +
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
247 gauge + "'");
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
248 return false;
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
249 }
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
250
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
251 // Set the BFG_ID in FLYS.
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
252 flysStatements.beginTransaction();
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
253 try {
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
254 flysStatements
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
255 .getStatement("update.bfg.id.discharge.table")
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
256 .clearParameters()
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
257 .setInt("id", flysId)
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
258 .setString("bfg_id", bfgId)
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
259 .executeUpdate();
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
260 flysStatements.commitTransaction();
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
261 } catch (SQLException sqle) {
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
262 flysStatements.rollbackTransaction();
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
263 log.error(sqle, sqle);
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
264 return false;
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
265 }
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
266
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
267 return true;
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
268 }
da1e897c7224 Set the BFG_ID for current discharge tables in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5188
diff changeset
269
4097
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
270 protected boolean updateGauge(
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
271 SyncContext context,
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
272 DIPSGauge gauge
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
273 )
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
274 throws SQLException
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
275 {
4102
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
276 log.info("FLYS: Updating gauge '" + gauge.getAftName() + "'.");
4775
d9f1202cef78 Do the pairing of FLYS and AFT discharge tables by the field 'ABFLUSSTAFEL.BFG_ID' in
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4774
diff changeset
277 // We need to load all discharge tables from both databases
d9f1202cef78 Do the pairing of FLYS and AFT discharge tables by the field 'ABFLUSSTAFEL.BFG_ID' in
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4774
diff changeset
278 // of the gauge and do some pairing based on their bfg_id.
4097
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
279
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
280 boolean modified = false;
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
281
4104
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
282 ConnectedStatements flysStatements = context.getFlysStatements();
4098
9215253ad0be Do the FLYS/AFT description pairing of discharge tables in case a gauge needs updates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4097
diff changeset
283
4104
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
284 flysStatements.beginTransaction();
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
285 try {
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
286 List<DischargeTable> flysDTs =
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
287 DischargeTable.loadFlysDischargeTables(
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
288 context, gauge.getFlysId());
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
289
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
290 List<DischargeTable> aftDTs =
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
291 DischargeTable.loadAftDischargeTables(
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
292 context, gauge.getOfficialNumber());
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
293
4775
d9f1202cef78 Do the pairing of FLYS and AFT discharge tables by the field 'ABFLUSSTAFEL.BFG_ID' in
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4774
diff changeset
294 Map<String, DischargeTable> bfgId2FlysDT =
4104
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
295 new HashMap<String, DischargeTable>();
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
296
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
297 for (DischargeTable dt: flysDTs) {
4775
d9f1202cef78 Do the pairing of FLYS and AFT discharge tables by the field 'ABFLUSSTAFEL.BFG_ID' in
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4774
diff changeset
298 String bfgId = dt.getBfgId();
d9f1202cef78 Do the pairing of FLYS and AFT discharge tables by the field 'ABFLUSSTAFEL.BFG_ID' in
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4774
diff changeset
299 if (bfgId == null) {
4736
b195fede1c3b Remove trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4477
diff changeset
300 log.warn("FLYS: discharge table " + dt.getId()
4775
d9f1202cef78 Do the pairing of FLYS and AFT discharge tables by the field 'ABFLUSSTAFEL.BFG_ID' in
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4774
diff changeset
301 + " has no bfg_id. Ignored.");
4104
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
302 continue;
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
303 }
4775
d9f1202cef78 Do the pairing of FLYS and AFT discharge tables by the field 'ABFLUSSTAFEL.BFG_ID' in
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4774
diff changeset
304 bfgId2FlysDT.put(bfgId, dt);
4098
9215253ad0be Do the FLYS/AFT description pairing of discharge tables in case a gauge needs updates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4097
diff changeset
305 }
4104
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
306
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
307 List<DischargeTable> createDTs = new ArrayList<DischargeTable>();
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
308
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
309 for (DischargeTable aftDT: aftDTs) {
4775
d9f1202cef78 Do the pairing of FLYS and AFT discharge tables by the field 'ABFLUSSTAFEL.BFG_ID' in
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4774
diff changeset
310 String bfgId = aftDT.getBfgId();
d9f1202cef78 Do the pairing of FLYS and AFT discharge tables by the field 'ABFLUSSTAFEL.BFG_ID' in
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4774
diff changeset
311 DischargeTable flysDT = bfgId2FlysDT.remove(bfgId);
4104
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
312 if (flysDT != null) {
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
313 // Found in AFT and FLYS.
4775
d9f1202cef78 Do the pairing of FLYS and AFT discharge tables by the field 'ABFLUSSTAFEL.BFG_ID' in
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4774
diff changeset
314 log.info("FLYS: Discharge table '" + bfgId
4104
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
315 + "' found in AFT and FLYS. -> update");
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
316 // Create the W/Q diff.
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
317 modified |= writeWQChanges(context, flysDT, aftDT);
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
318 }
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
319 else {
4775
d9f1202cef78 Do the pairing of FLYS and AFT discharge tables by the field 'ABFLUSSTAFEL.BFG_ID' in
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4774
diff changeset
320 log.info("FLYS: Discharge table '" + bfgId
4104
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
321 + "' not found in FLYS. -> create");
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
322 createDTs.add(aftDT);
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
323 }
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
324 }
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
325
5930
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
326 modified |= deleteDischargeTables(context, bfgId2FlysDT);
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
327
4104
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
328 log.info("FLYS: Copy " + createDTs.size() +
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
329 " discharge tables over from AFT.");
4098
9215253ad0be Do the FLYS/AFT description pairing of discharge tables in case a gauge needs updates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4097
diff changeset
330
4104
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
331 // Create the new discharge tables.
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
332 for (DischargeTable aftDT: createDTs) {
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
333 createDischargeTable(context, aftDT, gauge.getFlysId());
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
334 modified = true;
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
335 }
4102
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
336
4104
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
337 flysStatements.commitTransaction();
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
338 }
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
339 catch (SQLException sqle) {
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
340 flysStatements.rollbackTransaction();
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
341 log.error(sqle, sqle);
cdcf98245e36 Commit/rollback changes if a gauge is only updated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4102
diff changeset
342 modified = false;
4100
981de0b77c6b If gauges exist in FLYS and AFT store the discharge tables in FLYS that are only in AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4099
diff changeset
343 }
4097
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
344
4094
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4093
diff changeset
345 return modified;
4087
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
346 }
4079
42094f01afa6 Added model for DIPS gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
347
4099
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
348 protected boolean writeWQChanges(
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
349 SyncContext context,
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
350 DischargeTable flysDT,
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
351 DischargeTable aftDT
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
352 )
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
353 throws SQLException
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
354 {
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
355 flysDT.loadFlysValues(context);
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
356 aftDT.loadAftValues(context);
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
357 WQDiff diff = new WQDiff(flysDT.getValues(), aftDT.getValues());
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
358 if (diff.hasChanges()) {
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
359 diff.writeChanges(context, flysDT.getId());
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
360 return true;
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
361 }
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
362 return false;
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
363 }
006e99437fb9 Store the W/Q differences o existing discharge tables to FLYS database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4098
diff changeset
364
4094
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4093
diff changeset
365 protected boolean createGauges(
4087
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
366 SyncContext context,
6894
389bf6b7d371 Backed out changeset 60f39ee19473
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6893
diff changeset
367 Map<Long, DIPSGauge> gauges
4087
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
368 )
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
369 throws SQLException
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
370 {
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
371 ConnectedStatements flysStatements = context.getFlysStatements();
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
372
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
373 SymbolicStatement.Instance nextId =
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
374 flysStatements.getStatement("next.gauge.id");
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
375
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
376 SymbolicStatement.Instance insertStmnt =
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
377 flysStatements.getStatement("insert.gauge");
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
378
4094
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4093
diff changeset
379 boolean modified = false;
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4093
diff changeset
380
4087
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
381 for (Map.Entry<Long, DIPSGauge> entry: gauges.entrySet()) {
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
382 Long officialNumber = entry.getKey();
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
383 DIPSGauge gauge = entry.getValue();
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
384
4085
067341e86375 Separate FLYS gauges to be updated or to create.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
385 log.info("Gauge '" + gauge.getAftName() +
067341e86375 Separate FLYS gauges to be updated or to create.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
386 "' not in FLYS but in AFT/DIPS. -> Create");
4087
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
387
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
388 if (!gauge.hasDatums()) {
4736
b195fede1c3b Remove trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4477
diff changeset
389 log.warn("DIPS: Gauge '" +
4087
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
390 gauge.getAftName() + "' has no datum. Ignored.");
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
391 continue;
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
392 }
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
393
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
394 ResultSet rs = null;
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
395 flysStatements.beginTransaction();
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
396 try {
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
397 (rs = nextId.executeQuery()).next();
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
398 int gaugeId = rs.getInt("gauge_id");
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
399 rs.close(); rs = null;
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
400
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
401 insertStmnt
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
402 .clearParameters()
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
403 .setInt("id", gaugeId)
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
404 .setString("name", gauge.getAftName())
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
405 .setInt("river_id", id1)
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
406 .setDouble("station", gauge.getStation())
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
407 .setDouble("aeo", gauge.getAeo())
4100
981de0b77c6b If gauges exist in FLYS and AFT store the discharge tables in FLYS that are only in AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4099
diff changeset
408 .setLong("official_number", officialNumber)
4087
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
409 .setDouble("datum", gauge.getLatestDatum().getValue());
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
410
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
411 insertStmnt.execute();
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
412
4736
b195fede1c3b Remove trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4477
diff changeset
413 log.info("FLYS: Created gauge '" + gauge.getAftName() +
4087
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
414 "' with id " + gaugeId + ".");
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
415
4088
52cde7fe742a Fetch discharge table infos from AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4087
diff changeset
416 gauge.setFlysId(gaugeId);
4100
981de0b77c6b If gauges exist in FLYS and AFT store the discharge tables in FLYS that are only in AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4099
diff changeset
417 createDischargeTables(context, gauge);
4087
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
418 flysStatements.commitTransaction();
4094
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4093
diff changeset
419 modified = true;
4087
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
420 }
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
421 catch (SQLException sqle) {
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
422 flysStatements.rollbackTransaction();
4094
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4093
diff changeset
423 log.error(sqle, sqle);
4087
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
424 }
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
425 finally {
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
426 if (rs != null) {
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
427 rs.close();
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
428 }
aad1886ea226 Store new gauges in FLYS db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4085
diff changeset
429 }
4085
067341e86375 Separate FLYS gauges to be updated or to create.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4084
diff changeset
430 }
4094
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4093
diff changeset
431
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4093
diff changeset
432 return modified;
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
433 }
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
434
4102
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
435 protected void createDischargeTable(
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
436 SyncContext context,
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
437 DischargeTable aftDT,
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
438 int flysGaugeId
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
439 )
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
440 throws SQLException
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
441 {
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
442 aftDT.persistFlysTimeInterval(context);
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
443 int flysId = aftDT.persistFlysDischargeTable(context, flysGaugeId);
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
444
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
445 aftDT.loadAftValues(context);
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
446 aftDT.storeFlysValues(context, flysId);
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
447 }
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
448
5930
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
449 protected boolean deleteDischargeTables(
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
450 SyncContext context,
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
451 Map<String, DischargeTable> tables
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
452 )
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
453 throws SQLException
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
454 {
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
455 ConnectedStatements flysStatements = context.getFlysStatements();
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
456
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
457 SymbolicStatement.Instance deleteDischargeTableValues =
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
458 flysStatements.getStatement("delete.discharge.table.values");
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
459
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
460 SymbolicStatement.Instance deleteDischargeTable =
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
461 flysStatements.getStatement("delete.discharge.table");
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
462
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
463 boolean modified = false;
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
464
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
465 for (Map.Entry<String, DischargeTable> entry: tables.entrySet()) {
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
466 log.info("FLYS: Discharge table '" + entry.getKey()
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
467 + "' found in FLYS but not in AFT. -> delete");
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
468 int id = entry.getValue().getId();
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
469
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
470 deleteDischargeTableValues
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
471 .clearParameters()
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
472 .setInt("id", id);
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
473 deleteDischargeTableValues.execute();
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
474
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
475 deleteDischargeTable
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
476 .clearParameters()
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
477 .setInt("id", id);
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
478 deleteDischargeTable.execute();
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
479
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
480 modified = true;
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
481 }
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
482 return modified;
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
483 }
33e514a0c6b7 Delete discharge tables which are in AFT but not in FLYS. Fixed Oracle specific pom.xml
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
484
4088
52cde7fe742a Fetch discharge table infos from AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4087
diff changeset
485 protected void createDischargeTables(
52cde7fe742a Fetch discharge table infos from AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4087
diff changeset
486 SyncContext context,
52cde7fe742a Fetch discharge table infos from AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4087
diff changeset
487 DIPSGauge gauge
52cde7fe742a Fetch discharge table infos from AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4087
diff changeset
488 )
52cde7fe742a Fetch discharge table infos from AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4087
diff changeset
489 throws SQLException
52cde7fe742a Fetch discharge table infos from AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4087
diff changeset
490 {
4102
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
491 log.info("FLYS: Create discharge tables for '" +
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
492 gauge.getAftName() + "'.");
4088
52cde7fe742a Fetch discharge table infos from AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4087
diff changeset
493
4093
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
494 // Load the discharge tables from AFT.
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
495 List<DischargeTable> dts = loadAftDischargeTables(
4100
981de0b77c6b If gauges exist in FLYS and AFT store the discharge tables in FLYS that are only in AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4099
diff changeset
496 context, gauge);
4088
52cde7fe742a Fetch discharge table infos from AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4087
diff changeset
497
4093
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
498 // Persist the time intervals.
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
499 persistFlysTimeIntervals(context, dts);
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
500
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
501 // Persist the discharge tables
4102
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
502 int [] flysDTIds = persistFlysDischargeTables(
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
503 context, dts, gauge.getFlysId());
4093
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
504
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
505 // Copy over the W/Q values
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
506 copyWQsFromAftToFlys(context, dts, flysDTIds);
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
507 }
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
508
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
509 protected List<DischargeTable> loadAftDischargeTables(
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
510 SyncContext context,
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
511 DIPSGauge gauge
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
512 )
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
513 throws SQLException
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
514 {
4097
83c72bc07591 Load all discharge tables from AFT and FLYS of a gauge which needs updating.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4094
diff changeset
515 return DischargeTable.loadAftDischargeTables(
4100
981de0b77c6b If gauges exist in FLYS and AFT store the discharge tables in FLYS that are only in AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4099
diff changeset
516 context, gauge.getOfficialNumber(), gauge.getFlysId());
4093
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
517 }
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
518
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
519 protected void persistFlysTimeIntervals(
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
520 SyncContext context,
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
521 List<DischargeTable> dts
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
522 )
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
523 throws SQLException
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
524 {
4090
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4088
diff changeset
525 for (DischargeTable dt: dts) {
4102
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
526 dt.persistFlysTimeInterval(context);
4090
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4088
diff changeset
527 }
4093
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
528 }
4090
d556e29592f5 Create new discharge tables if needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4088
diff changeset
529
4093
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
530 protected int [] persistFlysDischargeTables(
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
531 SyncContext context,
4102
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
532 List<DischargeTable> dts,
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
533 int flysGaugeId
4093
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
534 )
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
535 throws SQLException
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
536 {
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
537 int [] flysDTIds = new int[dts.size()];
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
538
4102
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
539 for (int i = 0; i < flysDTIds.length; ++i) {
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
540 flysDTIds[i] = dts.get(i)
e8967ee1cb05 Fixed logic bug when writing discharge tables of an gauge existing in both dbs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4100
diff changeset
541 .persistFlysDischargeTable(context, flysGaugeId);
4088
52cde7fe742a Fetch discharge table infos from AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4087
diff changeset
542 }
4093
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
543
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
544 return flysDTIds;
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
545 }
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
546
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
547 protected void copyWQsFromAftToFlys(
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
548 SyncContext context,
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
549 List<DischargeTable> dts,
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
550 int [] flysDTIds
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
551 )
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
552 throws SQLException
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
553 {
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
554 for (int i = 0; i < flysDTIds.length; ++i) {
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
555 DischargeTable dt = dts.get(i);
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
556 dt.loadAftValues(context);
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
557 dt.storeFlysValues(context, flysDTIds[i]);
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
558 dt.clearValues(); // To save memory.
7bddd4601707 Copy over W/Q values from AFT to FLYS for new discharge tables.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4090
diff changeset
559 }
4088
52cde7fe742a Fetch discharge table infos from AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4087
diff changeset
560 }
52cde7fe742a Fetch discharge table infos from AFT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4087
diff changeset
561
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
562 public String toString() {
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
563 return "[River: name=" + name + ", " + super.toString() + "]";
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
564 }
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
565 }
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
566 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org