Mercurial > dive4elements > river
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 | 19 import org.apache.logging.log4j.Logger; |
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 | 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 : |