comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationState.java @ 9176:1614cb14308f

Work on calculations for S-Info flood duration workflow
author mschaefer
date Mon, 25 Jun 2018 19:21:11 +0200
parents 23945061daec
children a4121ec450d6
comparison
equal deleted inserted replaced
9175:34dc0163ad2d 9176:1614cb14308f
12 12
13 import org.dive4elements.artifactdatabase.state.Facet; 13 import org.dive4elements.artifactdatabase.state.Facet;
14 import org.dive4elements.artifacts.CallContext; 14 import org.dive4elements.artifacts.CallContext;
15 import org.dive4elements.river.artifacts.ChartArtifact; 15 import org.dive4elements.river.artifacts.ChartArtifact;
16 import org.dive4elements.river.artifacts.D4EArtifact; 16 import org.dive4elements.river.artifacts.D4EArtifact;
17 import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult; 17 import org.dive4elements.river.artifacts.model.Calculation;
18 import org.dive4elements.river.artifacts.model.CalculationResult; 18 import org.dive4elements.river.artifacts.model.CalculationResult;
19 import org.dive4elements.river.artifacts.model.DataFacet; 19 import org.dive4elements.river.artifacts.model.DataFacet;
20 import org.dive4elements.river.artifacts.model.EmptyFacet; 20 import org.dive4elements.river.artifacts.model.EmptyFacet;
21 import org.dive4elements.river.artifacts.model.FacetTypes; 21 import org.dive4elements.river.artifacts.model.FacetTypes;
22 import org.dive4elements.river.artifacts.model.ReportFacet;
22 import org.dive4elements.river.artifacts.sinfo.SINFOArtifact; 23 import org.dive4elements.river.artifacts.sinfo.SINFOArtifact;
24 import org.dive4elements.river.artifacts.sinfo.common.FloodDurationProcessor;
23 import org.dive4elements.river.artifacts.states.DefaultState; 25 import org.dive4elements.river.artifacts.states.DefaultState;
24 26
25 /** State in which a waterlevel has been calculated. */ 27 /**
28 * Last state of the S-Info flood duration workflow that calculates and outputs the result
29 */
26 public class FloodDurationState extends DefaultState { 30 public class FloodDurationState extends DefaultState {
27 31
28 /// ** The log that is used in this state. */ 32 /// ** The log that is used in this state. */
29 // private static Logger log = Logger.getLogger(FlowDepthState.class); 33 // private static Logger log = Logger.getLogger(FloodDurationState.class);
30 34
31 private static final long serialVersionUID = 1L; 35 private static final long serialVersionUID = 1L;
32 36
33 /** 37 /**
34 * From this state can only be continued trivially. 38 * From this state can only be continued trivially.
42 public Object computeFeed(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) { 46 public Object computeFeed(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) {
43 if (artifact instanceof ChartArtifact) { 47 if (artifact instanceof ChartArtifact) {
44 facets.add(new EmptyFacet()); 48 facets.add(new EmptyFacet());
45 return null; 49 return null;
46 } 50 }
47
48 return compute((SINFOArtifact) artifact, context, hash, facets, old); 51 return compute((SINFOArtifact) artifact, context, hash, facets, old);
49 } 52 }
50 53
51 @Override 54 @Override
52 public Object computeAdvance(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) { 55 public Object computeAdvance(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) {
69 72
70 if (facets == null) 73 if (facets == null)
71 return res; 74 return res;
72 75
73 final FloodDurationCalculationResults results = (FloodDurationCalculationResults) res.getData(); 76 final FloodDurationCalculationResults results = (FloodDurationCalculationResults) res.getData();
77 final FloodDurationCalculationResult result = results.getResult();
78 if (result != null) {
79 // add themes for chart
80 final int index = 0;
74 81
75 /* add themes for chart, for each result */ 82 facets.add(FloodDurationProcessor.createFloodDurationFacet(context, hash, this.id, result, index));
76 final List<AbstractCalculationExportableResult<FloodDurationCalculationResults>> resultList = results.getResults(); 83 facets.add(FloodDurationProcessor.createMainValueDurationFacet(context, hash, this.id, result, index));
77 for (int index = 0; index < resultList.size(); index++) {
78 84
79 final AbstractCalculationExportableResult<FloodDurationCalculationResults> result = resultList.get(0); 85 facets.add(new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id));
80 86 facets.add(new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, this.id));
81 /* filtered (zoom dependent mean) flow depth TODO: */
82 // facets.add(FloodDurationProcessor.createFlowDepthFilteredFacet(context, hash, this.id, result, index));
83 // facets.add(FloodDurationProcessor.createFlowDepthRawFacet(context, hash, this.id, result, index));
84
85 } 87 }
86 88
87 if (!resultList.isEmpty()) { 89 final Calculation report = res.getReport();
88 final Facet csv = new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id); 90 if (report.hasProblems())
89 final Facet pdf = new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, this.id); 91 facets.add(new ReportFacet(ComputeType.ADVANCE, hash, this.id));
90
91 facets.add(csv);
92 facets.add(pdf);
93 }
94
95 // final Calculation report = res.getReport();
96 //
97 // if (report.hasProblems()) {
98 // facets.add(new ReportFacet(ComputeType.ADVANCE, hash, this.id));
99 // }
100 92
101 return res; 93 return res;
102 } 94 }
103 95
104 private CalculationResult doCompute(final SINFOArtifact sinfo, final CallContext context, final Object old) { 96 private CalculationResult doCompute(final SINFOArtifact sinfo, final CallContext context, final Object old) {

http://dive4elements.wald.intevation.org