annotate artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineState.java @ 9429:bd5f5d2220fa

Work on salix cross sections; waterlevels work now with different colors Colors and i10n for all themes.
author gernotbelger
date Fri, 17 Aug 2018 17:48:01 +0200
parents b6e595f1696f
children ee6508687e3f
rev   line source
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 8996
diff changeset
2 * Software engineering by
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 8996
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
8996
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.salix;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
11
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
12 import java.util.List;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
13
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
14 import org.dive4elements.artifactdatabase.state.Facet;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
15 import org.dive4elements.artifacts.CallContext;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
16 import org.dive4elements.river.artifacts.ChartArtifact;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
17 import org.dive4elements.river.artifacts.D4EArtifact;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
18 import org.dive4elements.river.artifacts.model.Calculation;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
19 import org.dive4elements.river.artifacts.model.CalculationResult;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
20 import org.dive4elements.river.artifacts.model.DataFacet;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
21 import org.dive4elements.river.artifacts.model.EmptyFacet;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
22 import org.dive4elements.river.artifacts.model.FacetTypes;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
23 import org.dive4elements.river.artifacts.model.ReportFacet;
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9295
diff changeset
24 import org.dive4elements.river.artifacts.resources.Resources;
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
25 import org.dive4elements.river.artifacts.states.DefaultState;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
26 import org.dive4elements.river.artifacts.uinfo.UINFOArtifact;
9429
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
27 import org.dive4elements.river.artifacts.uinfo.salix.SalixLineCrossSectionIndexData.SalixWaterlevel;
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
28
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
29 /**
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
30 * @author Domenico Nardi Tironi
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
31 */
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
32 public class SalixLineState extends DefaultState {
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
33
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
34 private static final long serialVersionUID = 1L;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
35
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
36 /**
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
37 * From this state can only be continued trivially.
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
38 */
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
39 @Override
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
40 protected String getUIProvider() {
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
41 return "continue";
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
42 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
43
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
44 @Override
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
45 public Object computeFeed(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) {
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
46 // FIXME: why is this necessary?
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
47 if (artifact instanceof ChartArtifact) {
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
48 facets.add(new EmptyFacet());
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
49 return null;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
50 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
51
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
52 return compute((UINFOArtifact) artifact, context, ComputeType.FEED, hash, facets, old);
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
53 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
54
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
55 @Override
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
56 public Object computeAdvance(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) {
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
57 if (artifact instanceof ChartArtifact) {
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
58 facets.add(new EmptyFacet());
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
59 return null;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
60 }
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
61 return compute((UINFOArtifact) artifact, context, ComputeType.ADVANCE, hash, facets, old);
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
62 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
63
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
64 /**
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
65 * Compute result or returned object from cache, create facets.
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
66 *
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
67 * @param old
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
68 * Object that was cached.
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
69 */
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
70 private Object compute(final UINFOArtifact uinfo, final CallContext context, final ComputeType type, final String hash, final List<Facet> facets,
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
71 final Object old) {
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
72
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9295
diff changeset
73 final CalculationResult res = doCompute(uinfo, context, old);
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
74
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
75 if (facets == null)
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
76 return res;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
77
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
78 final SalixLineCalculationResults results = (SalixLineCalculationResults) res.getData();
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
79
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents: 9347
diff changeset
80 final List<SalixLineCalculationResult> resultList = results.getResults();
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
81
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
82 final String stateId = getID();
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
83
9347
08f46ccd37ba salix.regional refactoring
gernotbelger
parents: 9321
diff changeset
84 int facetIndex = 0;
08f46ccd37ba salix.regional refactoring
gernotbelger
parents: 9321
diff changeset
85
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
86 if (!resultList.isEmpty()) {
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
87 facets.add(SalixLineProcessor.createSalixLineFilteredFacet(context, hash, stateId, facetIndex++, 0));
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
88 facets.add(SalixLineProcessor.createSalixLineRawFacet(context, hash, stateId, facetIndex++, 0));
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
89 facets.add(SalixLineProcessor.createSalixMnwMwFilteredFacet(context, hash, stateId, facetIndex++, 0));
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
90 facets.add(SalixLineProcessor.createSalixMnwMwRawFacet(context, hash, stateId, facetIndex++, 0));
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
91 facets.add(SalixLineProcessor.createSalixRankFacet(context, hash, stateId, facetIndex++, 0));
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
92
9429
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
93 facets.add(SalixLineProcessor.createSalixCrossSectionFacet(context, type, hash, stateId, facetIndex++));
9347
08f46ccd37ba salix.regional refactoring
gernotbelger
parents: 9321
diff changeset
94
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents: 9347
diff changeset
95 final SalixLineCalculationResult result = resultList.get(0);
9347
08f46ccd37ba salix.regional refactoring
gernotbelger
parents: 9321
diff changeset
96
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents: 9347
diff changeset
97 for (int i = 0; i <= result.getScenarioCount() - 1; i++) {
9429
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
98 final String scenarioLabel = result.getScenarioLabel(i);
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
99
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
100 final String sublabel = Resources.getMsg(context.getMeta(), "uinfo_salix_scenario_deltaw", "uinfo_salix_scenario_deltaw", scenarioLabel);
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents: 9347
diff changeset
101 // REMARK: using data index as facetIndex, as we know there is only one result of this type. Else we should just
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents: 9347
diff changeset
102 // increment
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
103 facets.add(SalixLineProcessor.createSalixScenarioFilteredFacet(context, hash, stateId, i, 0, facetIndex++, sublabel));
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
104 facets.add(SalixLineProcessor.createSalixScenarioRawFacet(context, hash, stateId, i, 0, facetIndex++, sublabel));
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
105
9429
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
106 facets.add(SalixLineProcessor.createSalixScenarioCrossSectionFacet(context, type, hash, stateId, i, facetIndex++, sublabel));
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9295
diff changeset
107 }
9295
385b52ccde23 Work on U-Info salix line calculation and chart (no scenario case)
mschaefer
parents: 9243
diff changeset
108
9429
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
109 for (final SalixWaterlevel knownWaterlevel : SalixLineCrossSectionIndexData.SalixWaterlevel.values())
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
110 facets.add(SalixLineProcessor.createSalixWaterlevelCrossSectionFacet(context, type, hash, stateId, knownWaterlevel, facetIndex++));
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
111
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
112 final Facet csv = new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, stateId);
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
113 final Facet pdf = new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, stateId);
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
114
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
115 facets.add(csv);
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
116 facets.add(pdf);
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
117 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
118
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
119 final Calculation report = res.getReport();
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
120
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
121 if (report.hasProblems())
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
122 facets.add(new ReportFacet(ComputeType.ADVANCE, hash, stateId));
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
123
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
124 return res;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
125 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
126
9295
385b52ccde23 Work on U-Info salix line calculation and chart (no scenario case)
mschaefer
parents: 9243
diff changeset
127 private CalculationResult doCompute(final UINFOArtifact uinfo, final CallContext context, final Object old) {
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
128 if (old instanceof CalculationResult)
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
129 return (CalculationResult) old;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
130
9295
385b52ccde23 Work on U-Info salix line calculation and chart (no scenario case)
mschaefer
parents: 9243
diff changeset
131 return new SalixLineCalculation(context).calculate(uinfo);
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
132 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
133 }

http://dive4elements.wald.intevation.org