Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/DefaultBedHeights.java @ 9211:aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
author | gernotbelger |
---|---|
date | Tue, 03 Jul 2018 13:09:46 +0200 |
parents | ed4b14389667 |
children | 439699ff9b2d |
rev | line source |
---|---|
8942
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
2 * Software engineering by |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
3 * Björnsen Beratende Ingenieure GmbH |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
5 * |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
6 * This file is Free Software under the GNU AGPL (>=v3) |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
8 * documentation coming with Dive4Elements River for details. |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
9 */ |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
10 package org.dive4elements.river.artifacts.sinfo.tkhstate; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
11 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
12 import java.util.ArrayList; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
13 import java.util.Collection; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
14 import java.util.Collections; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
15 import java.util.List; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
16 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
17 import org.apache.commons.lang.math.NumberRange; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
18 import org.dive4elements.river.artifacts.model.Calculation; |
9211
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
19 import org.dive4elements.river.artifacts.sinfo.tkhstate.DefaultBedHeightsConfig.DefaultBedHeight; |
8942
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
20 import org.dive4elements.river.model.BedHeight; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
21 import org.dive4elements.river.model.Range; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
22 import org.dive4elements.river.model.River; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
23 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
24 /** |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
25 * This class knows how to find the default bed heights defined for tkh calculation |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
26 * |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
27 * @author Gernot Belger |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
28 */ |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
29 final class DefaultBedHeights { |
9211
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
30 |
8942
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
31 private final River river; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
32 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
33 public DefaultBedHeights(final River river) { |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
34 this.river = river; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
35 } |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
36 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
37 public List<BedHeight> getBedHeights(final Calculation problems) { |
9211
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
38 final Collection<DefaultBedHeight> defaults = DefaultBedHeightsConfig.getDefaults(this.river, problems); |
8942
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
39 |
9211
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
40 final List<BedHeight> defaultBedHeights = loadBedHeightsByName(this.river, defaults, problems); |
9129
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
41 if (defaultBedHeights.isEmpty()) { |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
42 problems.addProblem("sinfo.bedheightsfinder.nobedheightsforriver", this.river.getName()); |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
43 return Collections.emptyList(); |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
44 } |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
45 |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
46 /* check for overlapping ranges, N2-search, but we expect only have small numbers of bed heights */ |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
47 final List<BedHeight> result = new ArrayList<>(defaultBedHeights.size()); |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
48 |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
49 for (int i = 0; i < defaultBedHeights.size(); i++) { |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
50 final BedHeight bedHeight = defaultBedHeights.get(i); |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
51 |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
52 final Range range = bedHeight.getRange(); |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
53 final NumberRange bedRange = new NumberRange(range.getA(), range.getB()); |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
54 |
9211
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
55 if (overlapsRange(bedRange, defaultBedHeights, i + 1)) |
9129
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
56 problems.addProblem("sinfo.bedheightsfinder.overlappingrange", bedHeight.getDescription()); |
9211
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
57 else |
9129
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
58 result.add(bedHeight); |
28eec75415d8
Handle case where no default bedheights are defined for a given river
gernotbelger
parents:
9097
diff
changeset
|
59 } |
8942
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
60 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
61 final List<BedHeight> validBedHeights = new ArrayList<>(defaultBedHeights.size()); |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
62 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
63 // REMARK: check for bad ranges because db schema allow for incomplete ranges, and ignore if this is the case |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
64 for (final BedHeight bedHeight : defaultBedHeights) { |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
65 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
66 final Range range = bedHeight.getRange(); |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
67 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
68 if (range.getA() == null || range.getB() == null) |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
69 problems.addProblem("sinfo.bedheightsfinder.badrange", bedHeight.getDescription()); |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
70 else |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
71 validBedHeights.add(bedHeight); |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
72 } |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
73 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
74 return result; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
75 } |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
76 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
77 |
9211
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
78 private static List<BedHeight> loadBedHeightsByName(final River river, final Collection<DefaultBedHeight> defaults, final Calculation problems) { |
8942
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
79 |
9211
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
80 final List<BedHeight> bedHeights = new ArrayList<>(defaults.size()); |
8942
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
81 |
9211
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
82 for (final DefaultBedHeight heightDefault : defaults) { |
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
83 |
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
84 final String description = heightDefault.description; |
8942
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
85 try { |
9211
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
86 |
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
87 final BedHeight bedHeight = BedHeight.getBedHeightByDescription(river, description, heightDefault.startKm, heightDefault.endKm); |
8942
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
88 if (bedHeight == null) |
9211
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
89 problems.addProblem("sinfo.bedheightsfinder.missingdescription", river.getName(), description); |
9087
fb976ea01463
Fixed :bed heights finder did not consider the river correctly
gernotbelger
parents:
8942
diff
changeset
|
90 else |
fb976ea01463
Fixed :bed heights finder did not consider the river correctly
gernotbelger
parents:
8942
diff
changeset
|
91 bedHeights.add(bedHeight); |
8942
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
92 } |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
93 catch (final Exception e) { |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
94 e.printStackTrace(); |
9211
aca5a7a57a3a
SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
gernotbelger
parents:
9192
diff
changeset
|
95 problems.addProblem("sinfo.bedheightsfinder.missingdescription", river.getName(), description); |
8942
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
96 } |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
97 } |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
98 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
99 return bedHeights; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
100 } |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
101 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
102 private static boolean overlapsRange(final NumberRange bedRange, final List<BedHeight> result, final int startIndex) { |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
103 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
104 for (int i = startIndex; i < result.size(); i++) { |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
105 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
106 final BedHeight compareBed = result.get(i); |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
107 final Range range = compareBed.getRange(); |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
108 final NumberRange compareRange = new NumberRange(range.getA(), range.getB()); |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
109 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
110 if (compareRange.overlapsRange(bedRange)) |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
111 return true; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
112 } |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
113 |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
114 return false; |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
115 } |
11bf13cf0463
Minor changes to tkh calculation. Loading default bed heights form config file.
gernotbelger
parents:
diff
changeset
|
116 } |