comparison flys-artifacts/src/main/java/org/dive4elements/river/artifacts/states/fixation/FixRealizingCompute.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/fixation/FixRealizingCompute.java@4ce126aa130c
children
comparison
equal deleted inserted replaced
5830:160f53ee0870 5831:bd047b71ab37
1 package org.dive4elements.river.artifacts.states.fixation;
2
3 import java.util.List;
4
5 import org.apache.log4j.Logger;
6
7 import org.dive4elements.artifactdatabase.state.Facet;
8 import org.dive4elements.artifacts.CallContext;
9 import org.dive4elements.artifacts.CallMeta;
10 import org.dive4elements.river.artifacts.FLYSArtifact;
11 import org.dive4elements.river.artifacts.access.FixRealizingAccess;
12 import org.dive4elements.river.artifacts.model.CalculationResult;
13 import org.dive4elements.river.artifacts.model.CrossSectionWaterLineFacet;
14 import org.dive4elements.river.artifacts.model.DataFacet;
15 import org.dive4elements.river.artifacts.model.FacetTypes;
16 import org.dive4elements.river.artifacts.model.ReportFacet;
17 import org.dive4elements.river.artifacts.model.WQCKms;
18 import org.dive4elements.river.artifacts.model.WQKms;
19 import org.dive4elements.river.artifacts.model.WQKmsFactory;
20 import org.dive4elements.river.artifacts.model.fixings.FixOutlierFacet;
21 import org.dive4elements.river.artifacts.model.fixings.FixRealizingCalculation;
22 import org.dive4elements.river.artifacts.model.fixings.FixRealizingResult;
23 import org.dive4elements.river.artifacts.model.fixings.FixEventFacet;
24 import org.dive4elements.river.artifacts.model.fixings.FixReferenceEventsFacet;
25 import org.dive4elements.river.artifacts.model.fixings.FixWQCurveFacet;
26 import org.dive4elements.river.artifacts.model.fixings.FixWaterlevelFacet;
27 import org.dive4elements.river.artifacts.resources.Resources;
28 import org.dive4elements.river.artifacts.states.DefaultState;
29
30 /**
31 * State to compute the fixation realizing (vollmer) results.
32 *
33 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
34 */
35 public class FixRealizingCompute extends DefaultState implements FacetTypes {
36
37 /** The logger used in this class. */
38 private static Logger logger = Logger.getLogger(FixRealizingCompute.class);
39
40 public static final String I18N_WQ_CURVE = "fix.vollmer.wq.curve";
41
42 public static final String I18N_WQ_OUTLIER = "fix.vollmer.wq.outliers";
43
44 public static final String I18N_WQ_EVENTS = "fix.vollmer.wq.events";
45
46
47 /**
48 * The default constructor that initializes an empty State object.
49 */
50 public FixRealizingCompute() {
51 }
52
53
54 @Override
55 public Object computeAdvance(
56 FLYSArtifact artifact,
57 String hash,
58 CallContext context,
59 List<Facet> facets,
60 Object old
61 ) {
62 logger.debug("FixRealizingCompute.computeAdvance");
63
64 CalculationResult res;
65
66 FixRealizingAccess access =
67 new FixRealizingAccess(artifact, context);
68
69 if (old instanceof CalculationResult) {
70 res = (CalculationResult) old;
71 }
72 else {
73 FixRealizingCalculation calc = new FixRealizingCalculation(access);
74 res = calc.calculate();
75 }
76
77 if (facets == null) {
78 return res;
79 }
80
81 if (res.getReport().hasProblems()) {
82 facets.add(new ReportFacet());
83 }
84
85 String id = getID();
86 CallMeta meta = context.getMeta();
87
88 FixRealizingResult fixRes = (FixRealizingResult) res.getData();
89 WQKms [] wqkms = fixRes != null ? fixRes.getWQKms() : new WQKms[0];
90
91 for (int i = 0; i < wqkms.length; i++) {
92 String nameW = null;
93 String nameQ = null;
94
95 if (access.isQ()) {
96 nameQ = wqkms[i].getName();
97 nameW = "W(" + nameQ + ")";
98 }
99 else {
100 nameW = wqkms[i].getName();
101 nameQ = "Q(" + nameW + ")";
102 }
103
104 Facet w = new FixWaterlevelFacet(
105 i, LONGITUDINAL_W, nameW);
106
107 Facet q = new FixWaterlevelFacet(
108 i, LONGITUDINAL_Q, nameQ);
109 Facet csFacet = new CrossSectionWaterLineFacet(i, nameW);
110
111 facets.add(w);
112 facets.add(q);
113 facets.add(csFacet);
114
115 if (wqkms[i] instanceof WQCKms) {
116 String nameC = nameW.replace(
117 "benutzerdefiniert",
118 "benutzerdefiniert [korrigiert]");
119
120 Facet c = new FixWaterlevelFacet(
121 i, DISCHARGE_LONGITUDINAL_C, nameC);
122
123 facets.add(c);
124 }
125 }
126
127 // Add one facet per event.
128 int i = 0;
129 for (int event: access.getEvents()) {
130 facets.add(new FixEventFacet(i, FIX_EVENTS, WQKmsFactory.getWQKmsName(event)));
131 i++;
132 }
133
134 if (wqkms.length > 0) {
135 facets.add(
136 new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));
137
138 facets.add(
139 new DataFacet(WST, "WST data", ComputeType.ADVANCE, hash, id));
140
141 facets.add(
142 new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id));
143 }
144
145 facets.add(
146 new DataFacet(AT, "AT data", ComputeType.ADVANCE, hash, id));
147
148 facets.add(new FixWQCurveFacet(
149 0,
150 Resources.getMsg(meta, I18N_WQ_CURVE, I18N_WQ_CURVE) + " ("
151 + access.getFunction() + ")"));
152
153 facets.add(new FixReferenceEventsFacet(
154 0,
155 FIX_REFERENCE_EVENTS_WQ,
156 Resources.getMsg(meta, I18N_WQ_EVENTS, I18N_WQ_EVENTS)));
157
158 facets.add(new FixOutlierFacet(
159 0,
160 FIX_OUTLIER,
161 Resources.getMsg(meta, I18N_WQ_OUTLIER, I18N_WQ_OUTLIER)));
162
163 return res;
164 }
165 }
166 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org