Mercurial > dive4elements > river
annotate etl/src/main/java/org/dive4elements/river/etl/aft/Rivers.java @ 7009:60c894b71fed
Another tweak for flys/issue1353: Be more tolerant about river names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Fri, 13 Sep 2013 15:24:07 +0200 |
parents | 5fe8c64b48d4 |
children | 0a5239a1e46e |
rev | line source |
---|---|
5841
8bd9b551456c
Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
8bd9b551456c
Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
8bd9b551456c
Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5991
6f80d5f375fd
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5841
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5841
8bd9b551456c
Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5991
6f80d5f375fd
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5841
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5841
8bd9b551456c
Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
8bd9b551456c
Added header to Java files in ETL process.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5826
9438e9259213
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5825
diff
changeset
|
9 package org.dive4elements.river.etl.aft; |
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 |
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
19 import org.apache.log4j.Logger; |
4073
2c70fae83d0c
start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
20 |
2c70fae83d0c
start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
21 public class Rivers |
2c70fae83d0c
start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 { |
4075
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
23 private static Logger log = Logger.getLogger(Rivers.class); |
4073
2c70fae83d0c
start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 |
4075
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
25 public Rivers() { |
4073
2c70fae83d0c
start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 } |
2c70fae83d0c
start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 |
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
|
28 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
|
29 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
|
30 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
|
31 ) { |
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 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
|
33 |
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 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
|
35 |
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
|
36 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
|
37 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
|
38 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
|
39 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
|
40 } |
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 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
|
44 } |
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 |
4094
b20b710aa86f
Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4083
diff
changeset
|
46 public boolean sync(SyncContext context) throws SQLException { |
4077
97de7a552b79
Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4075
diff
changeset
|
47 |
4075
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
48 log.info("sync: rivers"); |
4073
2c70fae83d0c
start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
49 |
4077
97de7a552b79
Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4075
diff
changeset
|
50 ConnectedStatements flysStatements = context.getFlysStatements(); |
97de7a552b79
Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4075
diff
changeset
|
51 ConnectedStatements aftStatements = context.getAftStatements(); |
97de7a552b79
Load DIPS XML
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4075
diff
changeset
|
52 |
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
|
53 List<River> flysRivers = new ArrayList<River>(); |
4075
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
54 |
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
55 ResultSet flysRs = flysStatements |
4753
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
56 .getStatement("select.rivers").executeQuery(); |
4075
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
57 |
4753
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
58 try { |
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
59 while (flysRs.next()) { |
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
60 int id = flysRs.getInt("id"); |
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
61 String name = flysRs.getString("name"); |
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
62 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
|
63 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
|
64 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
|
65 } |
4075
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
66 } |
4753
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
67 finally { |
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
68 flysRs.close(); |
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
69 } |
4075
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
70 |
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
71 List<River> commonRivers = new ArrayList<River>(); |
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
72 |
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
73 ResultSet aftRs = aftStatements |
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
74 .getStatement("select.gewaesser").executeQuery(); |
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
75 |
4753
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
76 try { |
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
77 while (aftRs.next()) { |
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
78 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
|
79 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
|
80 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
|
81 river.setId2(id2); |
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
82 commonRivers.add(river); |
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
83 } |
4075
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
84 } |
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
85 } |
4753
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
86 finally { |
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
87 aftRs.close(); |
a310aceb2e51
Fetch calculation range (Berechnungsstrecke) for FLYS rivers, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4094
diff
changeset
|
88 } |
4075
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
89 |
4094
b20b710aa86f
Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4083
diff
changeset
|
90 boolean modified = false; |
b20b710aa86f
Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4083
diff
changeset
|
91 |
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
|
92 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
|
93 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
|
94 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
|
95 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
|
96 } |
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 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
|
98 } |
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 |
4075
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
100 for (River river: commonRivers) { |
4094
b20b710aa86f
Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4083
diff
changeset
|
101 modified |= river.sync(context); |
4075
dbd0b3b1b8b8
Sync each river.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4073
diff
changeset
|
102 } |
4094
b20b710aa86f
Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4083
diff
changeset
|
103 |
b20b710aa86f
Bubble up modifications up to main().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4083
diff
changeset
|
104 return modified; |
4073
2c70fae83d0c
start syncing at river level.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
105 } |
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 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |