annotate artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineState.java @ 9368:6f7e92c16050

Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
author mschaefer
date Thu, 02 Aug 2018 16:11:12 +0200
parents 2aec052d4088
children b6e595f1696f
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;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
27
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
28 /**
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
29 * @author Domenico Nardi Tironi
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
30 */
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
31 public class SalixLineState extends DefaultState {
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
32
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
33 private static final long serialVersionUID = 1L;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
34
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
35 /**
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
36 * From this state can only be continued trivially.
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
37 */
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
38 @Override
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
39 protected String getUIProvider() {
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
40 return "continue";
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
41 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
42
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
43 @Override
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
44 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
45 // FIXME: why is this necessary?
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
46 if (artifact instanceof ChartArtifact) {
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
47 facets.add(new EmptyFacet());
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
48 return null;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
49 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
50
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
51 return compute((UINFOArtifact) artifact, context, hash, facets, old);
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
52 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
53
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
54 @Override
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
55 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
56 if (artifact instanceof ChartArtifact) {
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
57 facets.add(new EmptyFacet());
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
58 return null;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
59 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
60 return compute((UINFOArtifact) artifact, context, hash, facets, old);
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
61 }
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 * Compute result or returned object from cache, create facets.
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
65 *
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
66 * @param old
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
67 * Object that was cached.
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
68 */
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9295
diff changeset
69 private Object compute(final UINFOArtifact uinfo, final CallContext context, final String hash, final List<Facet> facets, final Object old) {
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
70
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9295
diff changeset
71 final CalculationResult res = doCompute(uinfo, context, old);
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
72
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
73 if (facets == null)
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
74 return res;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
75
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
76 final SalixLineCalculationResults results = (SalixLineCalculationResults) res.getData();
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
77
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents: 9347
diff changeset
78 final List<SalixLineCalculationResult> resultList = results.getResults();
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
79
9347
08f46ccd37ba salix.regional refactoring
gernotbelger
parents: 9321
diff changeset
80 int facetIndex = 0;
08f46ccd37ba salix.regional refactoring
gernotbelger
parents: 9321
diff changeset
81
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
82 if (!resultList.isEmpty()) {
9368
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9361
diff changeset
83 facets.add(SalixLineProcessor.createSalixLineFilteredFacet(context, hash, this.id, facetIndex++, 0));
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9361
diff changeset
84 facets.add(SalixLineProcessor.createSalixLineRawFacet(context, hash, this.id, facetIndex++, 0));
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9361
diff changeset
85 facets.add(SalixLineProcessor.createSalixMnwMwFilteredFacet(context, hash, this.id, facetIndex++, 0));
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9361
diff changeset
86 facets.add(SalixLineProcessor.createSalixMnwMwRawFacet(context, hash, this.id, facetIndex++, 0));
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9361
diff changeset
87 facets.add(SalixLineProcessor.createSalixRankFacet(context, hash, this.id, facetIndex++, 0));
9347
08f46ccd37ba salix.regional refactoring
gernotbelger
parents: 9321
diff changeset
88
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents: 9347
diff changeset
89 final SalixLineCalculationResult result = resultList.get(0);
9347
08f46ccd37ba salix.regional refactoring
gernotbelger
parents: 9321
diff changeset
90
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents: 9347
diff changeset
91 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
92 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
93 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
94 // 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
95 // increment
9368
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9361
diff changeset
96 facets.add(SalixLineProcessor.createSalixScenarioFilteredFacet(context, hash, this.id, i, 0, facetIndex++, sublabel));
6f7e92c16050 Fixed U-Info salix mw calculation, added filtered themes, own y axis, warning report
mschaefer
parents: 9361
diff changeset
97 facets.add(SalixLineProcessor.createSalixScenarioRawFacet(context, hash, this.id, i, 0, facetIndex++, sublabel));
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9295
diff changeset
98 }
9295
385b52ccde23 Work on U-Info salix line calculation and chart (no scenario case)
mschaefer
parents: 9243
diff changeset
99
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
100 final Facet csv = new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id);
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
101 final Facet pdf = new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, this.id);
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
102
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
103 facets.add(csv);
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
104 facets.add(pdf);
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
105 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
106
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
107 final Calculation report = res.getReport();
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
108
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
109 if (report.hasProblems())
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
110 facets.add(new ReportFacet(ComputeType.ADVANCE, hash, this.id));
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
111
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
112 return res;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
113 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
114
9295
385b52ccde23 Work on U-Info salix line calculation and chart (no scenario case)
mschaefer
parents: 9243
diff changeset
115 private CalculationResult doCompute(final UINFOArtifact uinfo, final CallContext context, final Object old) {
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
116 if (old instanceof CalculationResult)
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
117 return (CalculationResult) old;
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
118
9295
385b52ccde23 Work on U-Info salix line calculation and chart (no scenario case)
mschaefer
parents: 9243
diff changeset
119 return new SalixLineCalculation(context).calculate(uinfo);
8996
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
120 }
fb9430250899 Work on uinfo
gernotbelger
parents:
diff changeset
121 }

http://dive4elements.wald.intevation.org