Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/states/WaterlevelData.java @ 9362:392745cccede
Fixed: waterlevels from database should not get the "Bezugspegel" column in the result output.
author | gernotbelger |
---|---|
date | Wed, 01 Aug 2018 18:40:57 +0200 |
parents | 45f1ad66560e |
children | ba1e2e8f05d1 |
rev | line source |
---|---|
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
2 * Software engineering by |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
3 * Björnsen Beratende Ingenieure GmbH |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
5 * |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
6 * This file is Free Software under the GNU AGPL (>=v3) |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
8 * documentation coming with Dive4Elements River for details. |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
9 */ |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
10 package org.dive4elements.river.artifacts.states; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
11 |
8964
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
12 import org.apache.commons.lang.math.DoubleRange; |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
13 import org.dive4elements.river.artifacts.model.WKms; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
14 |
8964
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
15 import gnu.trove.TDoubleArrayList; |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
16 |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
17 /** |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
18 * Represents a waterlevel fetched with the {@link WaterlevelFetcher}. |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
19 * |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
20 * @author Gernot Belger |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
21 */ |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
22 public class WaterlevelData { |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
23 private final WKms wkms; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
24 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
25 private final String name; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
26 |
8883 | 27 private final int year; |
28 | |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
29 /** If <code>true</code>, tabular export will show gauges for every station, else only for the first gauge */ |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
30 private final boolean showAllGauges; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
31 |
9362
392745cccede
Fixed: waterlevels from database should not get the "Bezugspegel" column in the result output.
gernotbelger
parents:
8964
diff
changeset
|
32 private boolean showRefGauges; |
392745cccede
Fixed: waterlevels from database should not get the "Bezugspegel" column in the result output.
gernotbelger
parents:
8964
diff
changeset
|
33 |
392745cccede
Fixed: waterlevels from database should not get the "Bezugspegel" column in the result output.
gernotbelger
parents:
8964
diff
changeset
|
34 public WaterlevelData(final WKms wkms, final int year, final boolean showAllGauges, boolean showRefGauges) { |
392745cccede
Fixed: waterlevels from database should not get the "Bezugspegel" column in the result output.
gernotbelger
parents:
8964
diff
changeset
|
35 this(wkms.getName(), wkms, year, showAllGauges, showRefGauges); |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
36 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
37 |
9362
392745cccede
Fixed: waterlevels from database should not get the "Bezugspegel" column in the result output.
gernotbelger
parents:
8964
diff
changeset
|
38 private WaterlevelData(final String name, final WKms wkms, final int year, final boolean showAllGauges, boolean showRefGauges) { |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
39 this.name = name; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
40 this.wkms = wkms; |
8883 | 41 this.year = year; |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
42 this.showAllGauges = showAllGauges; |
9362
392745cccede
Fixed: waterlevels from database should not get the "Bezugspegel" column in the result output.
gernotbelger
parents:
8964
diff
changeset
|
43 this.showRefGauges = showRefGauges; |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
44 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
45 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
46 public WaterlevelData filterByRange(final double from, final double to) { |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
47 if (Double.isNaN(from) || Double.isNaN(to)) { |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
48 return this; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
49 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
50 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
51 final WKms filteredWkms = this.wkms.filteredKms(from, to); |
9362
392745cccede
Fixed: waterlevels from database should not get the "Bezugspegel" column in the result output.
gernotbelger
parents:
8964
diff
changeset
|
52 return new WaterlevelData(this.name, filteredWkms, this.year, this.showAllGauges ,showRefGauges); |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
53 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
54 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
55 public WaterlevelData withName(final String nameToSet) { |
9362
392745cccede
Fixed: waterlevels from database should not get the "Bezugspegel" column in the result output.
gernotbelger
parents:
8964
diff
changeset
|
56 return new WaterlevelData(nameToSet, this.wkms, this.year, this.showAllGauges, showRefGauges); |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
57 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
58 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
59 public String getName() { |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
60 return this.name; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
61 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
62 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
63 public WKms getWkms() { |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
64 return this.wkms; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
65 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
66 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
67 public boolean isShowAllGauges() { |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
68 return this.showAllGauges; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
69 } |
9362
392745cccede
Fixed: waterlevels from database should not get the "Bezugspegel" column in the result output.
gernotbelger
parents:
8964
diff
changeset
|
70 |
392745cccede
Fixed: waterlevels from database should not get the "Bezugspegel" column in the result output.
gernotbelger
parents:
8964
diff
changeset
|
71 public boolean isShowRefGauges() { |
392745cccede
Fixed: waterlevels from database should not get the "Bezugspegel" column in the result output.
gernotbelger
parents:
8964
diff
changeset
|
72 return this.showRefGauges; |
392745cccede
Fixed: waterlevels from database should not get the "Bezugspegel" column in the result output.
gernotbelger
parents:
8964
diff
changeset
|
73 } |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
74 |
8883 | 75 public int getYear() { |
76 return this.year; | |
77 } | |
8964
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
78 |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
79 public boolean covers(final DoubleRange simulationRange) { |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
80 |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
81 final TDoubleArrayList allKms = this.wkms.allKms(); |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
82 |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
83 if (allKms.isEmpty()) |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
84 return false; |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
85 |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
86 final double min = allKms.min(); |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
87 if (min > simulationRange.getMaximumDouble()) |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
88 return false; |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
89 |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
90 final double max = allKms.max(); |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
91 if (max < simulationRange.getMinimumDouble()) |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
92 return false; |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
93 |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
94 return true; |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
95 } |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
96 } |