Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/SINFOArtifact.java @ 9690:870d4585cab7
S-Info: collision single year themes initially inactive when epoch selection
author | mschaefer |
---|---|
date | Thu, 14 Jan 2021 14:58:55 +0100 |
parents | 6ecd1a28017f |
children |
rev | line source |
---|---|
8854 | 1 /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde |
8946
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
2 * Software engineering by |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
3 * Björnsen Beratende Ingenieure GmbH |
8854 | 4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt |
5 * | |
6 * This file is Free Software under the GNU AGPL (>=v3) | |
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the | |
8 * documentation coming with Dive4Elements River for details. | |
9 */ | |
10 package org.dive4elements.river.artifacts.sinfo; | |
11 | |
12 import org.apache.commons.lang.StringUtils; | |
8956 | 13 import org.dive4elements.artifactdatabase.state.Facet; |
14 import org.dive4elements.artifactdatabase.state.FacetActivity; | |
15 import org.dive4elements.artifacts.Artifact; | |
8854 | 16 import org.dive4elements.river.artifacts.D4EArtifact; |
9690
870d4585cab7
S-Info: collision single year themes initially inactive when epoch selection
mschaefer
parents:
9631
diff
changeset
|
17 import org.dive4elements.river.artifacts.sinfo.collision.CollisionAccess; |
8956 | 18 import org.dive4elements.river.artifacts.sinfo.common.D50Processor; |
8980
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
19 import org.dive4elements.river.artifacts.sinfo.common.FlowDepthDevelopmentPerYearProcessor; |
8956 | 20 import org.dive4elements.river.artifacts.sinfo.common.FlowDepthDevelopmentProcessor; |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
21 import org.dive4elements.river.artifacts.sinfo.common.FlowDepthDischargeProcessor; |
8956 | 22 import org.dive4elements.river.artifacts.sinfo.common.FlowDepthProcessor; |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
23 import org.dive4elements.river.artifacts.sinfo.common.FlowDepthWaterlevelProcessor; |
8956 | 24 import org.dive4elements.river.artifacts.sinfo.common.TauProcessor; |
25 import org.dive4elements.river.artifacts.sinfo.common.VelocityProcessor; | |
9631
6ecd1a28017f
Nachtrag Pos. 20: Q theme for height chart added, calculator corrected (rows for km without any infrastructure)
mschaefer
parents:
9617
diff
changeset
|
26 import org.dive4elements.river.artifacts.sinfo.flood_duration.FloodQProcessor; |
8854 | 27 |
28 /** | |
8869 | 29 * The default SINFO artifact. |
8854 | 30 * |
31 * @author Gernot Belger | |
32 */ | |
8946
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
33 public class SINFOArtifact extends D4EArtifact { |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
34 |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
35 private static final long serialVersionUID = 1L; |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
36 |
8854 | 37 /** Error message that is thrown if no mode has been chosen. */ |
8946
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
38 private static final String ERROR_NO_CALCULATION_MODE = "error_feed_no_calculation_mode"; |
8854 | 39 |
8946
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
40 /** |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
41 * Error message that is thrown if an invalid calculation mode has been |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
42 * chosen. |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
43 */ |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
44 private static final String ERROR_INVALID_CALCULATION_MODE = "error_feed_invalid_calculation_mode"; |
8854 | 45 |
46 /** The name of the artifact. */ | |
47 private static final String ARTIFACT_NAME = "sinfo"; | |
48 | |
8869 | 49 private static final String FIELD_RIVER = "river"; |
8854 | 50 |
51 private static final String FIELD_MODE = "calculation_mode"; | |
8946
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
52 |
8956 | 53 static { |
54 // Active/deactivate facets. | |
55 // BEWARE: we can only define one activity for "sinfo", so we use the artifact as place for this | |
56 FacetActivity.Registry.getInstance().register("sinfo", new FacetActivity() { | |
57 @Override | |
58 public Boolean isInitialActive(final Artifact artifact, final Facet facet, final String output) { | |
59 | |
8980
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
60 final String name = facet.getName(); |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
61 |
8956 | 62 if ("sinfo_tkk".equals(output)) { |
63 if (FlowDepthProcessor.FACET_FLOW_DEPTH_FILTERED.equals(name)) | |
64 return Boolean.FALSE; | |
65 if (VelocityProcessor.FACET_TKH_VELOCITY_FILTERED.equals(name)) | |
66 return Boolean.FALSE; | |
67 if (TauProcessor.FACET_TKH_TAU_FILTERED.equals(name)) | |
68 return Boolean.FALSE; | |
69 if (D50Processor.FACET_TKH_D50_FILTERED.equals(name)) | |
70 return Boolean.FALSE; | |
71 } | |
72 | |
73 if ("sinfo_flow_depth_development".equals(output)) { | |
74 if (FlowDepthProcessor.FACET_FLOW_DEPTH_CURRENT_FILTERED.equals(name)) | |
75 return Boolean.FALSE; | |
76 if (FlowDepthProcessor.FACET_FLOW_DEPTH_HISTORICAL_FILTERED.equals(name)) | |
77 return Boolean.FALSE; | |
78 if (FlowDepthDevelopmentProcessor.FACET_WATERLEVEL_DIFFERENCE_FILTERED.equals(name)) | |
79 return Boolean.FALSE; | |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
80 if (FlowDepthDevelopmentProcessor.FACET_WATERLEVEL_DIFFERENCE_RAW.equals(name)) |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
81 return Boolean.FALSE; |
8956 | 82 if (FlowDepthDevelopmentProcessor.FACET_BEDHEIGHT_DIFFERENCE_FILTERED.equals(name)) |
83 return Boolean.FALSE; | |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
84 if (FlowDepthDevelopmentProcessor.FACET_BEDHEIGHT_DIFFERENCE_RAW.equals(name)) |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
85 return Boolean.FALSE; |
8956 | 86 } |
87 | |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
88 if (FlowDepthDischargeProcessor.FACET_FLOW_DEPTH_DISCHARGE.equals(name)) |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
89 return Boolean.FALSE; |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
90 if (FlowDepthWaterlevelProcessor.FACET_FLOW_DEPTH_WATER_LEVEL.equals(name)) |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
91 return Boolean.FALSE; |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
92 if (FlowDepthWaterlevelProcessor.FACET_FLOW_DEPTH_BEDHEIGHT.equals(name)) |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
93 return Boolean.FALSE; |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
94 if (FlowDepthWaterlevelProcessor.FACET_FLOW_DEPTH_BEDHEIGHT_MIN.equals(name)) |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
95 return Boolean.FALSE; |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
96 if (FlowDepthWaterlevelProcessor.FACET_FLOW_DEPTH_BEDHEIGHT_MAX.equals(name)) |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9596
diff
changeset
|
97 return Boolean.FALSE; |
8980
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
98 if (FlowDepthProcessor.FACET_FLOW_DEPTH_RAW.equals(name)) |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
99 return Boolean.FALSE; |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
100 if (FlowDepthProcessor.FACET_FLOW_DEPTH_TKH_RAW.equals(name)) |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
101 return Boolean.FALSE; |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
102 if (FlowDepthProcessor.FACET_FLOW_DEPTH_CURRENT_RAW.equals(name)) |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
103 return Boolean.FALSE; |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
104 if (FlowDepthProcessor.FACET_FLOW_DEPTH_HISTORICAL_RAW.equals(name)) |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
105 return Boolean.FALSE; |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
106 if (FlowDepthProcessor.FACET_FLOW_DEPTH_MIN_RAW.equals(name)) |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
107 return Boolean.FALSE; |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
108 if (FlowDepthProcessor.FACET_FLOW_DEPTH_MAX_RAW.equals(name)) |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
109 return Boolean.FALSE; |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
110 |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
111 if (FlowDepthDevelopmentProcessor.FACET_FLOW_DEPTH_DEVELOPMENT_RAW.equals(name)) |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
112 return Boolean.FALSE; |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
113 if (FlowDepthDevelopmentPerYearProcessor.FACET_FLOW_DEPTH_DEVELOPMENT_PER_YEAR_RAW.equals(name)) |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
114 return Boolean.FALSE; |
b194fa64506a
SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents:
8956
diff
changeset
|
115 |
9596
fbfd66e8fb81
Softwaretests...20181219 6.2.2: Sinfo/Ued Haupt-/Extremwerte update for current km, W/Q of selected WSPL initially visible
mschaefer
parents:
9307
diff
changeset
|
116 // if (FloodDurationCurveProcessor.FACET_FLOOD_DURATION_MAINVALUES_W.equals(name)) |
fbfd66e8fb81
Softwaretests...20181219 6.2.2: Sinfo/Ued Haupt-/Extremwerte update for current km, W/Q of selected WSPL initially visible
mschaefer
parents:
9307
diff
changeset
|
117 // return Boolean.FALSE; |
fbfd66e8fb81
Softwaretests...20181219 6.2.2: Sinfo/Ued Haupt-/Extremwerte update for current km, W/Q of selected WSPL initially visible
mschaefer
parents:
9307
diff
changeset
|
118 // if (FloodDurationCurveProcessor.FACET_FLOOD_DURATION_MAINVALUES_Q.equals(name)) |
fbfd66e8fb81
Softwaretests...20181219 6.2.2: Sinfo/Ued Haupt-/Extremwerte update for current km, W/Q of selected WSPL initially visible
mschaefer
parents:
9307
diff
changeset
|
119 // return Boolean.FALSE; |
9631
6ecd1a28017f
Nachtrag Pos. 20: Q theme for height chart added, calculator corrected (rows for km without any infrastructure)
mschaefer
parents:
9617
diff
changeset
|
120 if (FloodQProcessor.FACET_MAIN_VALUE_Q.equals(name)) |
6ecd1a28017f
Nachtrag Pos. 20: Q theme for height chart added, calculator corrected (rows for km without any infrastructure)
mschaefer
parents:
9617
diff
changeset
|
121 return Boolean.FALSE; |
9307
45bbd2c232f8
S-Info main value themes in flood duration w/q set to initially invisible
mschaefer
parents:
8980
diff
changeset
|
122 |
9690
870d4585cab7
S-Info: collision single year themes initially inactive when epoch selection
mschaefer
parents:
9631
diff
changeset
|
123 // Einzeljahr-Themen bei Epochenwahl der Grundberuehrungen initial inaktiv setzen. |
870d4585cab7
S-Info: collision single year themes initially inactive when epoch selection
mschaefer
parents:
9631
diff
changeset
|
124 if ("sinfo_collision".equals(output)) { |
870d4585cab7
S-Info: collision single year themes initially inactive when epoch selection
mschaefer
parents:
9631
diff
changeset
|
125 final CollisionAccess access = new CollisionAccess((SINFOArtifact) artifact); |
870d4585cab7
S-Info: collision single year themes initially inactive when epoch selection
mschaefer
parents:
9631
diff
changeset
|
126 if (access.getYears() == null) { |
870d4585cab7
S-Info: collision single year themes initially inactive when epoch selection
mschaefer
parents:
9631
diff
changeset
|
127 if (!facet.getDescription().contains("-")) |
870d4585cab7
S-Info: collision single year themes initially inactive when epoch selection
mschaefer
parents:
9631
diff
changeset
|
128 return Boolean.FALSE; |
870d4585cab7
S-Info: collision single year themes initially inactive when epoch selection
mschaefer
parents:
9631
diff
changeset
|
129 } |
870d4585cab7
S-Info: collision single year themes initially inactive when epoch selection
mschaefer
parents:
9631
diff
changeset
|
130 } |
870d4585cab7
S-Info: collision single year themes initially inactive when epoch selection
mschaefer
parents:
9631
diff
changeset
|
131 |
8956 | 132 return null; |
133 } | |
134 }); | |
135 } | |
136 | |
8854 | 137 /** |
138 * Default constructor, because it's serializable. | |
139 */ | |
140 public SINFOArtifact() { | |
141 } | |
142 | |
143 /** | |
144 * Returns the name of the concrete artifact. | |
145 * | |
146 * @return the name of the concrete artifact. | |
147 */ | |
148 @Override | |
149 public String getName() { | |
150 return ARTIFACT_NAME; | |
151 } | |
8946
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
152 |
8854 | 153 public SinfoCalcMode getCalculationMode() { |
154 | |
8946
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
155 final String calc = getDataAsString(FIELD_MODE); |
8854 | 156 if (calc == null) { |
8946
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
157 throw new IllegalArgumentException(ERROR_NO_CALCULATION_MODE); |
8854 | 158 } |
159 | |
160 try { | |
8946
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
161 return SinfoCalcMode.valueOf(StringUtils.trimToEmpty(calc).toLowerCase()); |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
162 } |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
163 catch (final Exception e) { |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
164 throw new IllegalArgumentException(ERROR_INVALID_CALCULATION_MODE, e); |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
165 } |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
166 } |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
167 |
8854 | 168 public String getRiver() { |
8946
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
169 return getDataAsString(FIELD_RIVER); |
5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
8869
diff
changeset
|
170 } |
8854 | 171 } |