annotate artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/UINFOArtifact.java @ 9426:b6e595f1696f

Activated cross section output mode for salix line and implemented some themes preliminary.
author gernotbelger
date Fri, 17 Aug 2018 15:31:16 +0200
parents 6f7e92c16050
children 8b7bf26b8782
rev   line source
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
1 /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
2 * Software engineering by
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
5 *
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
9 */
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
10 package org.dive4elements.river.artifacts.uinfo;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
11
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
12 import java.io.Serializable;
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
13
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
14 import org.apache.commons.lang.StringUtils;
9039
13b5b515c61f Cant use lambda in java 7 code
gernotbelger
parents: 9036
diff changeset
15 import org.dive4elements.artifactdatabase.state.Facet;
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
16 import org.dive4elements.artifactdatabase.state.FacetActivity;
9039
13b5b515c61f Cant use lambda in java 7 code
gernotbelger
parents: 9036
diff changeset
17 import org.dive4elements.artifacts.Artifact;
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
18 import org.dive4elements.artifacts.CallContext;
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
19 import org.dive4elements.river.artifacts.D4EArtifact;
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
20 import org.dive4elements.river.artifacts.WaterLineArtifact;
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
21 import org.dive4elements.river.artifacts.model.CalculationResult;
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
22 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
23 import org.dive4elements.river.artifacts.uinfo.salix.SalixLineCalculationResults;
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9039
diff changeset
24 import org.dive4elements.river.artifacts.uinfo.salix.SalixLineProcessor;
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
25
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
26 /**
9036
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
27 * The default UINFO artifact.
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
28 *
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
29 * @author Gernot Belger
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
30 */
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
31 public class UINFOArtifact extends D4EArtifact implements WaterLineArtifact {
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
32
9036
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
33 private static final long serialVersionUID = 1L;
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
34
9036
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
35 /** Error message that is thrown if no mode has been chosen. */
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
36 private static final String ERROR_NO_CALCULATION_MODE = "error_feed_no_calculation_mode";
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
37
9036
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
38 /**
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
39 * Error message that is thrown if an invalid calculation mode has been chosen.
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
40 */
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
41 private static final String ERROR_INVALID_CALCULATION_MODE = "error_feed_invalid_calculation_mode";
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
42
9036
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
43 /** The name of the artifact. */
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
44 private static final String ARTIFACT_NAME = "uinfo";
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
45
9036
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
46 private static final String FIELD_RIVER = "river";
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
47
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
48 private static final String FIELD_MODE = "calculation_mode";
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
49
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
50 static {
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
51 // Active/deactivate facets.
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9039
diff changeset
52 // BEWARE: we can only define one activity for "uinfo", so we use the artifact
9036
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
53 // as place for this
9039
13b5b515c61f Cant use lambda in java 7 code
gernotbelger
parents: 9036
diff changeset
54 FacetActivity.Registry.getInstance().register(ARTIFACT_NAME, new FacetActivity() {
13b5b515c61f Cant use lambda in java 7 code
gernotbelger
parents: 9036
diff changeset
55 @Override
13b5b515c61f Cant use lambda in java 7 code
gernotbelger
parents: 9036
diff changeset
56 public Boolean isInitialActive(final Artifact artifact, final Facet facet, final String output) {
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9039
diff changeset
57
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9039
diff changeset
58 final String name = facet.getName();
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9039
diff changeset
59
9368
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9316
diff changeset
60 if (SalixLineProcessor.FACET_SALIX_LINE_RAW.equals(name))
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9316
diff changeset
61 return Boolean.FALSE;
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9316
diff changeset
62 if (SalixLineProcessor.FACET_SALIX_MNWMW_RAW.equals(name))
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9316
diff changeset
63 return Boolean.FALSE;
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9316
diff changeset
64 if (SalixLineProcessor.FACET_SALIX_RANK.equals(name))
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9316
diff changeset
65 return Boolean.FALSE;
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9316
diff changeset
66 if (SalixLineProcessor.FACET_SALIX_SCENARIO_FILTERED.equals(name))
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9316
diff changeset
67 return Boolean.FALSE;
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9316
diff changeset
68 if (SalixLineProcessor.FACET_SALIX_SCENARIO_RAW.equals(name))
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9039
diff changeset
69 return Boolean.FALSE;
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9039
diff changeset
70
9039
13b5b515c61f Cant use lambda in java 7 code
gernotbelger
parents: 9036
diff changeset
71 return null;
13b5b515c61f Cant use lambda in java 7 code
gernotbelger
parents: 9036
diff changeset
72 }
13b5b515c61f Cant use lambda in java 7 code
gernotbelger
parents: 9036
diff changeset
73 });
9036
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
74 }
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
75
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
76 /**
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
77 * Default constructor, because it's serializable.
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
78 */
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
79 public UINFOArtifact() {
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
80 }
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
81
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
82 /**
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
83 * Returns the name of the concrete artifact.
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
84 *
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
85 * @return the name of the concrete artifact.
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
86 */
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
87 @Override
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
88 public String getName() {
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
89 return ARTIFACT_NAME;
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
90 }
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
91
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
92 public UinfoCalcMode getCalculationMode() {
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
93
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
94 final String calc = getDataAsString(FIELD_MODE);
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
95 if (calc == null) {
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
96 throw new IllegalArgumentException(ERROR_NO_CALCULATION_MODE);
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
97 }
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
98
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
99 try {
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
100 return UinfoCalcMode.valueOf(StringUtils.trimToEmpty(calc).toLowerCase());
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
101 }
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
102 catch (final Exception e) {
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
103 throw new IllegalArgumentException(ERROR_INVALID_CALCULATION_MODE, e);
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
104 }
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
105 }
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
106
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
107 public String getRiver() {
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
108 return getDataAsString(FIELD_RIVER);
c265c9fc915c work on u-info/s-info states
gernotbelger
parents: 8996
diff changeset
109 }
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
110
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
111 @Override
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
112 public double getWaterLevel(final ComputeType type, final String hash, final String stateId, final double currentKm, final Serializable waterLineIndex,
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
113 final double nextKm,
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
114 final double prevKm,
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
115 final CallContext context) {
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
116
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
117 final CalculationResult res = (CalculationResult) this.compute(context, hash, stateId, type, false);
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
118 final Object data = res.getData();
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
119 if (data instanceof SalixLineCalculationResults)
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
120 return ((SalixLineCalculationResults) data).getCrossSectionLine(currentKm, waterLineIndex, nextKm, prevKm, context);
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
121
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
122 throw new IllegalStateException("Cross section stuff should only happen for salix line");
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
123 }
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
124 }

http://dive4elements.wald.intevation.org