Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/minfo/DifferencesState.java @ 3898:95d699c769fb
Bedheight difference calculation has chart outpus now.
flys-artifacts/trunk@5562 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Fri, 21 Sep 2012 14:29:32 +0000 |
parents | 68beaa827751 |
children | da48e33f4241 |
comparison
equal
deleted
inserted
replaced
3897:bce2dd4310a6 | 3898:95d699c769fb |
---|---|
1 package de.intevation.flys.artifacts.states.minfo; | 1 package de.intevation.flys.artifacts.states.minfo; |
2 | 2 |
3 import java.text.DateFormat; | |
4 import java.util.ArrayList; | |
5 import java.util.List; | |
6 | |
3 import org.apache.log4j.Logger; | 7 import org.apache.log4j.Logger; |
4 | 8 |
9 import de.intevation.artifactdatabase.state.Facet; | |
10 import de.intevation.artifacts.CallContext; | |
11 import de.intevation.artifacts.CallMeta; | |
12 import de.intevation.flys.artifacts.FLYSArtifact; | |
13 import de.intevation.flys.artifacts.access.BedDifferencesAccess; | |
14 import de.intevation.flys.artifacts.model.CalculationResult; | |
15 import de.intevation.flys.artifacts.model.FacetTypes; | |
16 import de.intevation.flys.artifacts.model.minfo.BedDiffCalculation; | |
17 import de.intevation.flys.artifacts.model.minfo.BedDiffEpochFacet; | |
18 import de.intevation.flys.artifacts.model.minfo.BedDiffEpochResult; | |
19 import de.intevation.flys.artifacts.model.minfo.BedDiffYearFacet; | |
20 import de.intevation.flys.artifacts.model.minfo.BedDiffYearResult; | |
21 import de.intevation.flys.artifacts.model.minfo.BedDifferencesResult; | |
22 import de.intevation.flys.artifacts.resources.Resources; | |
5 import de.intevation.flys.artifacts.states.DefaultState; | 23 import de.intevation.flys.artifacts.states.DefaultState; |
24 import de.intevation.flys.utils.Formatter; | |
6 | 25 |
7 /** | 26 /** |
8 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> | 27 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> |
9 */ | 28 */ |
10 public class DifferencesState extends DefaultState { | 29 public class DifferencesState |
30 extends DefaultState | |
31 implements FacetTypes | |
32 { | |
11 /** The logger used in this class. */ | 33 /** The logger used in this class. */ |
12 private static Logger logger = Logger.getLogger(DifferencesState.class); | 34 private static Logger logger = Logger.getLogger(DifferencesState.class); |
35 public static final String I18N_DIFF_YEAR = "beddifference.year"; | |
36 public static final String I18N_DIFF_EPOCH = "beddifference.epoch"; | |
37 | |
38 public static final String I18N_FACET_BED_DIFF_YEAR = "facet.bedheight.diff.year"; | |
39 public static final String I18N_FACET_BED_DIFF_ABSOLUTE = "facet.bedheight.diff.absolute"; | |
40 public static final String I18N_FACET_BED_DIFF_MORPH = "facet.bedheight.diff.morph"; | |
41 public static final String I18N_FACET_BED_DIFF_EPOCH = "facet.bedheight.diff.epoch"; | |
42 public static final String I18N_FACET_BED_DIFF_HEIGHT1 = "facet.bedheight.diff.height1"; | |
43 public static final String I18N_FACET_BED_DIFF_HEIGHT2 = "facet.bedheight.diff.height2"; | |
13 | 44 |
14 public DifferencesState() { | 45 public DifferencesState() { |
15 } | 46 } |
47 | |
48 @Override | |
49 public Object computeAdvance(FLYSArtifact artifact, String hash, | |
50 CallContext context, List<Facet> facets, Object old) { | |
51 logger.debug("BedQualityState.computeAdvance"); | |
52 | |
53 List<Facet> newFacets = new ArrayList<Facet>(); | |
54 | |
55 BedDifferencesAccess access = | |
56 new BedDifferencesAccess(artifact, context); | |
57 | |
58 CalculationResult res = old instanceof CalculationResult ? (CalculationResult) old | |
59 : new BedDiffCalculation().calculate(access); | |
60 | |
61 if (facets == null || res == null) { | |
62 return res; | |
63 } | |
64 | |
65 BedDifferencesResult[] results = (BedDifferencesResult[]) res.getData(); | |
66 | |
67 if (results == null || results.length == 0) { | |
68 logger.warn("Calculation computed no results!"); | |
69 return res; | |
70 } | |
71 | |
72 generateFacets(context, newFacets, results, getID(), hash); | |
73 logger.debug("Created " + newFacets.size() + " new Facets."); | |
74 | |
75 facets.addAll(newFacets); | |
76 | |
77 return res; | |
78 } | |
79 | |
80 protected void generateFacets(CallContext context, List<Facet> newFacets, | |
81 BedDifferencesResult[] results, String stateId, String hash) { | |
82 logger.debug("BedQualityState.generateFacets"); | |
83 | |
84 CallMeta meta = context.getMeta(); | |
85 | |
86 for (int idx = 0; idx < results.length; idx++) { | |
87 if (results[idx] instanceof BedDiffYearResult) { | |
88 newFacets.add(new BedDiffYearFacet( | |
89 idx, | |
90 BED_DIFFERENCE_YEAR, | |
91 createBedDiffYearDescription( | |
92 meta, | |
93 (BedDiffYearResult)results[idx]), | |
94 ComputeType.ADVANCE, | |
95 stateId, | |
96 hash)); | |
97 newFacets.add(new BedDiffYearFacet( | |
98 idx, | |
99 BED_DIFFERENCE_MORPH_WIDTH, | |
100 createBedDiffMorphDescription( | |
101 meta, | |
102 (BedDiffYearResult)results[idx]), | |
103 ComputeType.ADVANCE, | |
104 stateId, | |
105 hash)); | |
106 newFacets.add(new BedDiffYearFacet( | |
107 idx, | |
108 BED_DIFFERENCE_YEAR_HEIGHT1, | |
109 createBedDiffHeightDescription( | |
110 meta, | |
111 (BedDiffYearResult)results[idx], | |
112 0), | |
113 ComputeType.ADVANCE, | |
114 stateId, | |
115 hash)); | |
116 newFacets.add(new BedDiffYearFacet( | |
117 idx, | |
118 BED_DIFFERENCE_YEAR_HEIGHT2, | |
119 createBedDiffHeightDescription( | |
120 meta, | |
121 (BedDiffYearResult)results[idx], | |
122 1), | |
123 ComputeType.ADVANCE, | |
124 stateId, | |
125 hash)); | |
126 newFacets.add(new BedDiffYearFacet( | |
127 idx, | |
128 BED_DIFFERENCE_HEIGHT_YEAR, | |
129 createBedDiffAbsoluteDescription( | |
130 meta, | |
131 (BedDiffYearResult)results[idx]), | |
132 ComputeType.ADVANCE, | |
133 stateId, | |
134 hash)); | |
135 } | |
136 if (results[idx] instanceof BedDiffEpochResult) { | |
137 newFacets.add(new BedDiffEpochFacet( | |
138 idx, | |
139 BED_DIFFERENCE_EPOCH, | |
140 createBedDiffEpochDescription( | |
141 meta, | |
142 (BedDiffEpochResult)results[idx]), | |
143 ComputeType.ADVANCE, | |
144 stateId, | |
145 hash)); | |
146 newFacets.add(new BedDiffEpochFacet( | |
147 idx, | |
148 BED_DIFFERENCE_EPOCH_HEIGHT1, | |
149 createBedDiffHeightEpochDescription( | |
150 meta, | |
151 (BedDiffEpochResult)results[idx], | |
152 0), | |
153 ComputeType.ADVANCE, | |
154 stateId, | |
155 hash)); | |
156 newFacets.add(new BedDiffEpochFacet( | |
157 idx, | |
158 BED_DIFFERENCE_EPOCH_HEIGHT2, | |
159 createBedDiffHeightEpochDescription( | |
160 meta, | |
161 (BedDiffEpochResult)results[idx], | |
162 1), | |
163 ComputeType.ADVANCE, | |
164 stateId, | |
165 hash)); | |
166 | |
167 } | |
168 } | |
169 } | |
170 | |
171 private String createBedDiffHeightDescription( | |
172 CallMeta meta, | |
173 BedDiffYearResult result, | |
174 int ndx | |
175 ) { | |
176 String range = result.getStart() + " - " + result.getEnd(); | |
177 | |
178 if (ndx == 0) { | |
179 return Resources.getMsg(meta, I18N_FACET_BED_DIFF_HEIGHT1, | |
180 I18N_FACET_BED_DIFF_HEIGHT1, new Object[] { range }); | |
181 } | |
182 else { | |
183 return Resources.getMsg(meta, I18N_FACET_BED_DIFF_HEIGHT2, | |
184 I18N_FACET_BED_DIFF_HEIGHT2, new Object[] {range}); | |
185 } | |
186 } | |
187 | |
188 private String createBedDiffHeightEpochDescription( | |
189 CallMeta meta, | |
190 BedDiffEpochResult result, | |
191 int ndx | |
192 ) { | |
193 DateFormat df = Formatter.getDateFormatter(meta, "yyyy"); | |
194 String range = | |
195 df.format(result.getStart()) | |
196 + " - " + | |
197 df.format(result.getEnd()); | |
198 | |
199 if (ndx == 0) { | |
200 return Resources.getMsg(meta, I18N_FACET_BED_DIFF_HEIGHT1, | |
201 I18N_FACET_BED_DIFF_HEIGHT1, new Object[] { range }); | |
202 } | |
203 else { | |
204 return Resources.getMsg(meta, I18N_FACET_BED_DIFF_HEIGHT2, | |
205 I18N_FACET_BED_DIFF_HEIGHT2, new Object[] {range}); | |
206 } | |
207 } | |
208 | |
209 protected String createBedDiffYearDescription( | |
210 CallMeta meta, | |
211 BedDiffYearResult result) { | |
212 String range = result.getStart() + " - " + result.getEnd(); | |
213 | |
214 return Resources.getMsg(meta, I18N_FACET_BED_DIFF_YEAR, | |
215 I18N_FACET_BED_DIFF_YEAR, new Object[] { range }); | |
216 } | |
217 | |
218 protected String createBedDiffMorphDescription( | |
219 CallMeta meta, | |
220 BedDiffYearResult result) { | |
221 String range = result.getStart() + " - " + result.getEnd(); | |
222 | |
223 return Resources.getMsg(meta, I18N_FACET_BED_DIFF_MORPH, | |
224 I18N_FACET_BED_DIFF_MORPH, new Object[] { range }); | |
225 } | |
226 | |
227 protected String createBedDiffAbsoluteDescription( | |
228 CallMeta meta, | |
229 BedDiffYearResult result) { | |
230 String range = result.getStart() + " - " + result.getEnd(); | |
231 | |
232 return Resources.getMsg(meta, I18N_FACET_BED_DIFF_ABSOLUTE, | |
233 I18N_FACET_BED_DIFF_ABSOLUTE, new Object[] { range }); | |
234 } | |
235 | |
236 protected String createBedDiffEpochDescription( | |
237 CallMeta meta, | |
238 BedDiffEpochResult result) { | |
239 DateFormat df = Formatter.getDateFormatter(meta, "yyyy"); | |
240 String range = | |
241 df.format(result.getStart()) | |
242 + " - " + | |
243 df.format(result.getEnd()); | |
244 | |
245 return Resources.getMsg(meta, I18N_FACET_BED_DIFF_EPOCH, | |
246 I18N_FACET_BED_DIFF_EPOCH, new Object[] { range }); | |
247 } | |
16 } | 248 } |