annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/SINFOArtifact.java @ 8956:ee5ce13016ed

Work on SINFO-Fließtiefenentwicklung
author gernotbelger
date Tue, 20 Mar 2018 13:30:07 +0100
parents 5d5d482da3e9
children b194fa64506a
rev   line source
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
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
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
5 *
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
9 */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
10 package org.dive4elements.river.artifacts.sinfo;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
11
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
12 import org.apache.commons.lang.StringUtils;
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
13 import org.dive4elements.artifactdatabase.state.Facet;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
14 import org.dive4elements.artifactdatabase.state.FacetActivity;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
15 import org.dive4elements.artifacts.Artifact;
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
16 import org.dive4elements.river.artifacts.D4EArtifact;
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
17 import org.dive4elements.river.artifacts.sinfo.common.D50Processor;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
18 import org.dive4elements.river.artifacts.sinfo.common.FlowDepthDevelopmentProcessor;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
19 import org.dive4elements.river.artifacts.sinfo.common.FlowDepthProcessor;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
20 import org.dive4elements.river.artifacts.sinfo.common.TauProcessor;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
21 import org.dive4elements.river.artifacts.sinfo.common.VelocityProcessor;
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
22
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
23 /**
8869
20b85ea3b524 Fixed some typos
gernotbelger
parents: 8854
diff changeset
24 * The default SINFO artifact.
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
25 *
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
26 * @author Gernot Belger
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
27 */
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
28 public class SINFOArtifact extends D4EArtifact {
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
29
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
30 private static final long serialVersionUID = 1L;
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
31
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
32 /** Error message that is thrown if no mode has been chosen. */
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
33 private static final String ERROR_NO_CALCULATION_MODE = "error_feed_no_calculation_mode";
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
34
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
35 /**
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
36 * Error message that is thrown if an invalid calculation mode has been
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
37 * chosen.
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
38 */
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
39 private static final String ERROR_INVALID_CALCULATION_MODE = "error_feed_invalid_calculation_mode";
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
40
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
41 /** The name of the artifact. */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
42 private static final String ARTIFACT_NAME = "sinfo";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
43
8869
20b85ea3b524 Fixed some typos
gernotbelger
parents: 8854
diff changeset
44 private static final String FIELD_RIVER = "river";
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
45
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
46 private static final String FIELD_MODE = "calculation_mode";
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
47
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
48 static {
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
49 // Active/deactivate facets.
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
50 // BEWARE: we can only define one activity for "sinfo", so we use the artifact as place for this
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
51 FacetActivity.Registry.getInstance().register("sinfo", new FacetActivity() {
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
52 @Override
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
53 public Boolean isInitialActive(final Artifact artifact, final Facet facet, final String output) {
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
54
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
55 if ("sinfo_tkk".equals(output)) {
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
56 final String name = facet.getName();
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
57 if (FlowDepthProcessor.FACET_FLOW_DEPTH_FILTERED.equals(name))
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
58 return Boolean.FALSE;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
59 if (VelocityProcessor.FACET_TKH_VELOCITY_FILTERED.equals(name))
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
60 return Boolean.FALSE;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
61 if (TauProcessor.FACET_TKH_TAU_FILTERED.equals(name))
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
62 return Boolean.FALSE;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
63 if (D50Processor.FACET_TKH_D50_FILTERED.equals(name))
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
64 return Boolean.FALSE;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
65 }
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
66
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
67 if ("sinfo_flow_depth_development".equals(output)) {
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
68 final String name = facet.getName();
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
69 if (FlowDepthProcessor.FACET_FLOW_DEPTH_CURRENT_FILTERED.equals(name))
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
70 return Boolean.FALSE;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
71 if (FlowDepthProcessor.FACET_FLOW_DEPTH_HISTORICAL_FILTERED.equals(name))
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
72 return Boolean.FALSE;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
73 if (FlowDepthDevelopmentProcessor.FACET_WATERLEVEL_DIFFERENCE_FILTERED.equals(name))
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
74 return Boolean.FALSE;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
75 if (FlowDepthDevelopmentProcessor.FACET_BEDHEIGHT_DIFFERENCE_FILTERED.equals(name))
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
76 return Boolean.FALSE;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
77 }
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
78
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
79 return null;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
80 }
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
81 });
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
82 }
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents: 8946
diff changeset
83
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
84 /**
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
85 * Default constructor, because it's serializable.
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
86 */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
87 public SINFOArtifact() {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
88 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
89
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
90 /**
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
91 * Returns the name of the concrete artifact.
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
92 *
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
93 * @return the name of the concrete artifact.
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
94 */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
95 @Override
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
96 public String getName() {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
97 return ARTIFACT_NAME;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
98 }
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
99
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
100 public SinfoCalcMode getCalculationMode() {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
101
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
102 final String calc = getDataAsString(FIELD_MODE);
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
103 if (calc == null) {
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
104 throw new IllegalArgumentException(ERROR_NO_CALCULATION_MODE);
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
105 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
106
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
107 try {
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
108 return SinfoCalcMode.valueOf(StringUtils.trimToEmpty(calc).toLowerCase());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
109 }
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
110 catch (final Exception e) {
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
111 throw new IllegalArgumentException(ERROR_INVALID_CALCULATION_MODE, e);
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
112 }
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
113 }
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
114
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
115 public String getRiver() {
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
116 return getDataAsString(FIELD_RIVER);
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8869
diff changeset
117 }
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
118 }

http://dive4elements.wald.intevation.org