comparison artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/DifferencesState.java @ 8169:856701739443

Handle missing years in bed height differences without assuming an unknown year to be BC 1.
author "Tom Gottfried <tom@intevation.de>"
date Mon, 01 Sep 2014 09:43:55 +0200
parents b5cba2690347
children e4606eae8ea5
comparison
equal deleted inserted replaced
8168:75a6ac0c73ef 8169:856701739443
18 import org.dive4elements.artifacts.Artifact; 18 import org.dive4elements.artifacts.Artifact;
19 import org.dive4elements.artifacts.CallContext; 19 import org.dive4elements.artifacts.CallContext;
20 import org.dive4elements.artifacts.CallMeta; 20 import org.dive4elements.artifacts.CallMeta;
21 import org.dive4elements.river.artifacts.D4EArtifact; 21 import org.dive4elements.river.artifacts.D4EArtifact;
22 import org.dive4elements.river.artifacts.access.BedDifferencesAccess; 22 import org.dive4elements.river.artifacts.access.BedDifferencesAccess;
23 import org.dive4elements.river.artifacts.model.Calculation;
23 import org.dive4elements.river.artifacts.model.CalculationResult; 24 import org.dive4elements.river.artifacts.model.CalculationResult;
24 import org.dive4elements.river.artifacts.model.DataFacet; 25 import org.dive4elements.river.artifacts.model.DataFacet;
25 import org.dive4elements.river.artifacts.model.FacetTypes; 26 import org.dive4elements.river.artifacts.model.FacetTypes;
27 import org.dive4elements.river.artifacts.model.ReportFacet;
26 import org.dive4elements.river.artifacts.model.minfo.BedDiffCalculation; 28 import org.dive4elements.river.artifacts.model.minfo.BedDiffCalculation;
27 import org.dive4elements.river.artifacts.model.minfo.BedDiffFacet; 29 import org.dive4elements.river.artifacts.model.minfo.BedDiffFacet;
28 import org.dive4elements.river.artifacts.model.minfo.BedDiffHeightMinFacet; 30 import org.dive4elements.river.artifacts.model.minfo.BedDiffHeightMinFacet;
29 import org.dive4elements.river.artifacts.model.minfo.BedDiffHeightMinFilterFacet; 31 import org.dive4elements.river.artifacts.model.minfo.BedDiffHeightMinFilterFacet;
30 import org.dive4elements.river.artifacts.model.minfo.BedDiffHeightSubFacet; 32 import org.dive4elements.river.artifacts.model.minfo.BedDiffHeightSubFacet;
96 generateFacets(context, newFacets, results, getID(), hash); 98 generateFacets(context, newFacets, results, getID(), hash);
97 logger.debug("Created " + newFacets.size() + " new Facets."); 99 logger.debug("Created " + newFacets.size() + " new Facets.");
98 100
99 facets.addAll(newFacets); 101 facets.addAll(newFacets);
100 102
103 Calculation report = res.getReport();
104 if (report != null && report.hasProblems()) {
105 facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id));
106 logger.warn("Problems: " + report.problemsToString());
107 }
108
101 return res; 109 return res;
102 } 110 }
103 111
104 /** Generate Facets based on given results. 112 /** Generate Facets based on given results.
105 * @param newFacets list to place new facets into. 113 * @param newFacets list to place new facets into.
170 1, 178 1,
171 true), 179 true),
172 ComputeType.ADVANCE, 180 ComputeType.ADVANCE,
173 stateId, 181 stateId,
174 hash)); 182 hash));
175 newFacets.add(new BedDiffPerYearFacet( 183 if (((BedDiffYearResult)results[idx])
176 idx, 184 .getHeightPerYearData()[1].length > 0) {
177 BED_DIFFERENCE_HEIGHT_YEAR, 185 /* Skip facets with data per year if there are none
178 createBedDiffAbsoluteDescription( 186 (because of missing start or end year) */
179 meta, 187 newFacets.add(new BedDiffPerYearFacet(
180 (BedDiffYearResult)results[idx], 188 idx,
181 true), 189 BED_DIFFERENCE_HEIGHT_YEAR,
182 ComputeType.ADVANCE, 190 createBedDiffAbsoluteDescription(
183 stateId, 191 meta,
184 hash)); 192 (BedDiffYearResult)results[idx],
193 true),
194 ComputeType.ADVANCE,
195 stateId,
196 hash));
197 newFacets.add(new BedDiffPerYearFilterFacet(
198 idx,
199 BED_DIFFERENCE_HEIGHT_YEAR_FILTERED,
200 createBedDiffAbsoluteDescription(
201 meta,
202 (BedDiffYearResult)results[idx],
203 false),
204 ComputeType.ADVANCE,
205 stateId,
206 hash));
207 }
185 newFacets.add(new BedDiffFilterFacet( 208 newFacets.add(new BedDiffFilterFacet(
186 idx, 209 idx,
187 BED_DIFFERENCE_YEAR_FILTERED, 210 BED_DIFFERENCE_YEAR_FILTERED,
188 createBedDiffYearDescription( 211 createBedDiffYearDescription(
189 meta, 212 meta,
208 BED_DIFFERENCE_YEAR_HEIGHT2_FILTERED, 231 BED_DIFFERENCE_YEAR_HEIGHT2_FILTERED,
209 createBedDiffHeightDescription( 232 createBedDiffHeightDescription(
210 meta, 233 meta,
211 (BedDiffYearResult)results[idx], 234 (BedDiffYearResult)results[idx],
212 1, 235 1,
213 false),
214 ComputeType.ADVANCE,
215 stateId,
216 hash));
217 newFacets.add(new BedDiffPerYearFilterFacet(
218 idx,
219 BED_DIFFERENCE_HEIGHT_YEAR_FILTERED,
220 createBedDiffAbsoluteDescription(
221 meta,
222 (BedDiffYearResult)results[idx],
223 false), 236 false),
224 ComputeType.ADVANCE, 237 ComputeType.ADVANCE,
225 stateId, 238 stateId,
226 hash)); 239 hash));
227 } 240 }
253 protected String createBedDiffYearDescription( 266 protected String createBedDiffYearDescription(
254 CallMeta meta, 267 CallMeta meta,
255 BedDiffYearResult result, 268 BedDiffYearResult result,
256 boolean raw 269 boolean raw
257 ) { 270 ) {
258 String range = result.getStart() + " - " + result.getEnd(); 271 String start = result.getStart() != null ?
272 result.getStart().toString() : result.getNameFirst();
273 String end = result.getEnd() != null ?
274 result.getEnd().toString() : result.getNameSecond();
275 String range = start + " - " + end;
259 276
260 String i18n = I18N_FACET_BED_DIFF_YEAR; 277 String i18n = I18N_FACET_BED_DIFF_YEAR;
261 if (raw) { 278 if (raw) {
262 i18n = I18N_FACET_BED_DIFF_YEAR_RAW; 279 i18n = I18N_FACET_BED_DIFF_YEAR_RAW;
263 } 280 }
264 return Resources.getMsg(meta, i18n, i18n, new Object[] { range }); 281 return Resources.getMsg(meta, i18n, new Object[] { range });
265 } 282 }
266 283
267 protected String createBedDiffSoundingDescription( 284 protected String createBedDiffSoundingDescription(
268 CallMeta meta) { 285 CallMeta meta) {
269 return Resources.getMsg(meta, I18N_FACET_BED_DIFF_SOUNDING, 286 return Resources.getMsg(meta, I18N_FACET_BED_DIFF_SOUNDING,

http://dive4elements.wald.intevation.org