annotate etl/src/main/java/org/dive4elements/river/etl/aft/Rivers.java @ 9726:0a5239a1e46e 3.2.x

Upgrade to Log4j 2
author Tom Gottfried <tom@intevation.de>
date Wed, 02 Mar 2022 10:26:50 +0100
parents 5fe8c64b48d4
children
rev   line source
5841
8bd9b551456c Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
8bd9b551456c Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
8bd9b551456c Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5991
6f80d5f375fd Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5841
8bd9b551456c Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5991
6f80d5f375fd Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5841
diff changeset
6 * documentation coming with Dive4Elements River for details.
5841
8bd9b551456c Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
8bd9b551456c Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5826
9438e9259213 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5825
diff changeset
9 package org.dive4elements.river.etl.aft;
4073
2c70fae83d0c start syncing at river level.
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;
4772
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
12
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
13 import java.sql.ResultSet;
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
14 import java.sql.SQLException;
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
15
f939e1e6cfa4 Sorted imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4753
diff changeset
16 import java.util.ArrayList;
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
17 import java.util.List;
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
18
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 7006
diff changeset
19 import org.apache.logging.log4j.Logger;
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 7006
diff changeset
20 import org.apache.logging.log4j.LogManager;
4073
2c70fae83d0c start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21
2c70fae83d0c start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 public class Rivers
2c70fae83d0c start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 {
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 7006
diff changeset
24 private static Logger log = LogManager.getLogger(Rivers.class);
4073
2c70fae83d0c start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
26 public Rivers() {
4073
2c70fae83d0c start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 }
2c70fae83d0c start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28
6903
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
29 private static List<River> findFLYSRivers(
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
30 List<River> flysRivers,
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
31 String needle
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
32 ) {
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
33 List<River> rivers = new ArrayList<River>();
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
34
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
35 needle = needle.toLowerCase();
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
36
7006
5fe8c64b48d4 Fix for flys/issue1479: Really iterate over the FLYS river not over empty list.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6903
diff changeset
37 for (River river: flysRivers) {
6903
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
38 String name = river.getName().toLowerCase();
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
39 if (name.contains(needle)) {
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
40 rivers.add(river);
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
41 }
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
42 }
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
43
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
44 return rivers;
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
45 }
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
46
4094
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4083
diff changeset
47 public boolean sync(SyncContext context) throws SQLException {
4077
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
48
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
49 log.info("sync: rivers");
4073
2c70fae83d0c start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
50
4077
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
51 ConnectedStatements flysStatements = context.getFlysStatements();
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
52 ConnectedStatements aftStatements = context.getAftStatements();
97de7a552b79 Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
53
6903
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
54 List<River> flysRivers = new ArrayList<River>();
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
55
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
56 ResultSet flysRs = flysStatements
4753
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
57 .getStatement("select.rivers").executeQuery();
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
58
4753
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
59 try {
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
60 while (flysRs.next()) {
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
61 int id = flysRs.getInt("id");
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
62 String name = flysRs.getString("name");
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
63 double from = flysRs.getDouble("min_km");
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
64 double to = flysRs.getDouble("max_km");
6903
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
65 flysRivers.add(new River(id, name, from, to));
4753
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
66 }
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
67 }
4753
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
68 finally {
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
69 flysRs.close();
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
70 }
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
71
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
72 List<River> commonRivers = new ArrayList<River>();
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
73
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
74 ResultSet aftRs = aftStatements
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
75 .getStatement("select.gewaesser").executeQuery();
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
76
4753
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
77 try {
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
78 while (aftRs.next()) {
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
79 String name = aftRs.getString("NAME");
6903
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
80 int id2 = aftRs.getInt("GEWAESSER_NR");
b3e2abe359d8 ETL: Take care of the fact that one river in AFT/SGM may correspond to N rivers in FLYS.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5991
diff changeset
81 for (River river: findFLYSRivers(flysRivers, name)) {
4753
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
82 river.setId2(id2);
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
83 commonRivers.add(river);
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
84 }
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
85 }
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
86 }
4753
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
87 finally {
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
88 aftRs.close();
a310aceb2e51 Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4094
diff changeset
89 }
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
90
4094
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4083
diff changeset
91 boolean modified = false;
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4083
diff changeset
92
7006
5fe8c64b48d4 Fix for flys/issue1479: Really iterate over the FLYS river not over empty list.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6903
diff changeset
93 if (log.isDebugEnabled()) {
5fe8c64b48d4 Fix for flys/issue1479: Really iterate over the FLYS river not over empty list.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6903
diff changeset
94 log.debug("Rivers found in FLYS and AFT:");
5fe8c64b48d4 Fix for flys/issue1479: Really iterate over the FLYS river not over empty list.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6903
diff changeset
95 for (River river: commonRivers) {
5fe8c64b48d4 Fix for flys/issue1479: Really iterate over the FLYS river not over empty list.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6903
diff changeset
96 log.debug(" " + river.getName());
5fe8c64b48d4 Fix for flys/issue1479: Really iterate over the FLYS river not over empty list.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6903
diff changeset
97 }
5fe8c64b48d4 Fix for flys/issue1479: Really iterate over the FLYS river not over empty list.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6903
diff changeset
98 log.debug("---");
5fe8c64b48d4 Fix for flys/issue1479: Really iterate over the FLYS river not over empty list.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6903
diff changeset
99 }
5fe8c64b48d4 Fix for flys/issue1479: Really iterate over the FLYS river not over empty list.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6903
diff changeset
100
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
101 for (River river: commonRivers) {
4094
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4083
diff changeset
102 modified |= river.sync(context);
4075
dbd0b3b1b8b8 Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4073
diff changeset
103 }
4094
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4083
diff changeset
104
b20b710aa86f Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4083
diff changeset
105 return modified;
4073
2c70fae83d0c start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
106 }
2c70fae83d0c start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
107 }
2c70fae83d0c start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
108 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org