annotate artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineState.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 bd5f5d2220fa
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;
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.model.CrossSectionWaterLineFacet;
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
21 import org.dive4elements.river.artifacts.model.DataFacet;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
22 import org.dive4elements.river.artifacts.model.EmptyFacet;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
23 import org.dive4elements.river.artifacts.model.FacetTypes;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
24 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
25 import org.dive4elements.river.artifacts.resources.Resources;
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
26 import org.dive4elements.river.artifacts.states.DefaultState;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
27 import org.dive4elements.river.artifacts.uinfo.UINFOArtifact;
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
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
93 facets.add(new CrossSectionWaterLineFacet(facetIndex++, "Salix Linie (!I10N!)", type, hash, stateId, SalixLineCrossSectionIndexData.salixLine()));
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++) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents: 9347
diff changeset
98 final String sublabel = Resources.getMsg(context.getMeta(), "uinfo_salix_scenario_deltaw", "uinfo_salix_scenario_deltaw",
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents: 9347
diff changeset
99 result.getScenarioLabel(i));
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents: 9347
diff changeset
100 // 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
101 // increment
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
102 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
103 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
104
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
105 facets.add(new CrossSectionWaterLineFacet(facetIndex++, "Salix Linie Scenario (!I10N! )" + i, type, hash, stateId,
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
106 SalixLineCrossSectionIndexData.scenario(i)));
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
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
109 // FIXME: add cross section wst lines (MW, MMHW, ...)
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 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
112 final Facet pdf = new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, stateId);
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
113
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
114 facets.add(csv);
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
115 facets.add(pdf);
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
116 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
117
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
118 final Calculation report = res.getReport();
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
119
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
120 if (report.hasProblems())
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9368
diff changeset
121 facets.add(new ReportFacet(ComputeType.ADVANCE, hash, stateId));
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
122
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
123 return res;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
124 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
125
9295
385b52ccde23 Work on U-Info salix line calculation and chart (no scenario case)
mschaefer
parents: 9243
diff changeset
126 private CalculationResult doCompute(final UINFOArtifact uinfo, final CallContext context, final Object old) {
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
127 if (old instanceof CalculationResult)
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
128 return (CalculationResult) old;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
129
9295
385b52ccde23 Work on U-Info salix line calculation and chart (no scenario case)
mschaefer
parents: 9243
diff changeset
130 return new SalixLineCalculation(context).calculate(uinfo);
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
131 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
132 }

http://dive4elements.wald.intevation.org