comparison artifacts/src/main/java/org/dive4elements/river/artifacts/states/HistoricalDischargeComputeState.java @ 5914:1058b3436dad

D4E river artifacts: Removed historical discharge calculation from WINFO artifact and use access instead.
author Sascha L. Teichmann <teichmann@intevation.de>
date Tue, 07 May 2013 17:32:33 +0200
parents 59ff03ff48f1
children af13ceeba52a
comparison
equal deleted inserted replaced
5913:37a0f4f7c54f 5914:1058b3436dad
11 import java.text.NumberFormat; 11 import java.text.NumberFormat;
12 12
13 import java.util.List; 13 import java.util.List;
14 14
15 import org.apache.log4j.Logger; 15 import org.apache.log4j.Logger;
16 import org.w3c.dom.Element;
17 16
18 import org.dive4elements.artifactdatabase.state.Facet; 17 import org.dive4elements.artifactdatabase.state.Facet;
18
19 import org.dive4elements.artifacts.Artifact; 19 import org.dive4elements.artifacts.Artifact;
20 import org.dive4elements.artifacts.CallContext; 20 import org.dive4elements.artifacts.CallContext;
21
21 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator; 22 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
23
22 import org.dive4elements.river.artifacts.D4EArtifact; 24 import org.dive4elements.river.artifacts.D4EArtifact;
23 import org.dive4elements.river.artifacts.WINFOArtifact; 25
26 import org.dive4elements.river.artifacts.access.HistoricalDischargeAccess.EvaluationMode;
27
24 import org.dive4elements.river.artifacts.access.HistoricalDischargeAccess; 28 import org.dive4elements.river.artifacts.access.HistoricalDischargeAccess;
25 import org.dive4elements.river.artifacts.access.HistoricalDischargeAccess.EvaluationMode; 29
30 import org.dive4elements.river.artifacts.model.Calculation6;
26 import org.dive4elements.river.artifacts.model.CalculationResult; 31 import org.dive4elements.river.artifacts.model.CalculationResult;
27 import org.dive4elements.river.artifacts.model.DataFacet; 32 import org.dive4elements.river.artifacts.model.DataFacet;
28 import org.dive4elements.river.artifacts.model.FacetTypes; 33 import org.dive4elements.river.artifacts.model.FacetTypes;
29 import org.dive4elements.river.artifacts.model.HistoricalDischargeCurveFacet; 34 import org.dive4elements.river.artifacts.model.HistoricalDischargeCurveFacet;
30 import org.dive4elements.river.artifacts.model.HistoricalDischargeData; 35 import org.dive4elements.river.artifacts.model.HistoricalDischargeData;
34 import org.dive4elements.river.artifacts.model.HistoricalWQKms; 39 import org.dive4elements.river.artifacts.model.HistoricalWQKms;
35 import org.dive4elements.river.artifacts.model.HistoricalWQTimerange; 40 import org.dive4elements.river.artifacts.model.HistoricalWQTimerange;
36 import org.dive4elements.river.artifacts.model.ReportFacet; 41 import org.dive4elements.river.artifacts.model.ReportFacet;
37 import org.dive4elements.river.artifacts.model.WQKms; 42 import org.dive4elements.river.artifacts.model.WQKms;
38 import org.dive4elements.river.artifacts.model.WQTimerange; 43 import org.dive4elements.river.artifacts.model.WQTimerange;
44
39 import org.dive4elements.river.artifacts.resources.Resources; 45 import org.dive4elements.river.artifacts.resources.Resources;
46
40 import org.dive4elements.river.model.TimeInterval; 47 import org.dive4elements.river.model.TimeInterval;
41 48
49 import org.w3c.dom.Element;
42 50
43 /** 51 /**
44 * State to calculate historical discharge curves. 52 * State to calculate historical discharge curves.
45 * 53 *
46 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> 54 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
47 */ 55 */
48 public class HistoricalDischargeComputeState 56 public class HistoricalDischargeComputeState
49 extends DefaultState 57 extends DefaultState
50 implements FacetTypes { 58 implements FacetTypes
51 59 {
52 private static final Logger logger = Logger 60 private static final Logger logger = Logger
53 .getLogger(HistoricalDischargeComputeState.class); 61 .getLogger(HistoricalDischargeComputeState.class);
54 62
55 public static final String DEFAULT_UNIT = "cm"; 63 public static final String DEFAULT_UNIT = "cm";
56 public static final String I18N_WQ_CURVE_FACET_RANGE = "historical_discharge.wq.curve_range"; 64 public static final String I18N_WQ_CURVE_FACET_RANGE = "historical_discharge.wq.curve_range";
65 @Override 73 @Override
66 public Object computeAdvance(D4EArtifact artifact, String hash, 74 public Object computeAdvance(D4EArtifact artifact, String hash,
67 CallContext context, List<Facet> facets, Object old) { 75 CallContext context, List<Facet> facets, Object old) {
68 logger.debug("HistoricalDischargeComputeState.computeAdvance"); 76 logger.debug("HistoricalDischargeComputeState.computeAdvance");
69 77
70 WINFOArtifact winfo = (WINFOArtifact) artifact; 78 HistoricalDischargeAccess access =
71 79 new HistoricalDischargeAccess(artifact);
72 CalculationResult res = old instanceof CalculationResult ? (CalculationResult) old 80
73 : winfo.getHistoricalDischargeData(); 81 CalculationResult res = old instanceof CalculationResult
82 ? (CalculationResult)old
83 : new Calculation6(access).calculate();
74 84
75 if (facets == null) { 85 if (facets == null) {
76 return res; 86 return res;
77 } 87 }
78 88
79 if (res.getReport().hasProblems()) { 89 if (res.getReport().hasProblems()) {
80 facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id)); 90 facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id));
81 } 91 }
82 92
83 HistoricalDischargeData data = (HistoricalDischargeData) res.getData(); 93 HistoricalDischargeData data = (HistoricalDischargeData) res.getData();
84 HistoricalDischargeAccess access = new HistoricalDischargeAccess(
85 artifact);
86 94
87 WQTimerange[] wqts = (WQTimerange[]) data.getWQTimeranges(); 95 WQTimerange[] wqts = (WQTimerange[]) data.getWQTimeranges();
88 if (wqts != null && wqts.length > 0) { 96 if (wqts != null && wqts.length > 0) {
89 facets.add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, 97 facets.add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE,
90 hash, id)); 98 hash, id));
101 } 109 }
102 110
103 return res; 111 return res;
104 } 112 }
105 113
106 protected void prepareFacets(List<Facet> facets, WQTimerange[] wqts, 114 protected void prepareFacets(
107 HistoricalDischargeAccess access) { 115 List<Facet> facets,
116 WQTimerange[] wqts,
117 HistoricalDischargeAccess access
118 ) {
108 int i = 0; 119 int i = 0;
109 120
110 for (WQTimerange wqt : wqts) { 121 for (WQTimerange wqt : wqts) {
111 logger.debug("Prepare facet for: " + wqt.getName()); 122 logger.debug("Prepare facet for: " + wqt.getName());
112 123

http://dive4elements.wald.intevation.org