comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/fixation/FixAnalysisCompute.java @ 3610:66f539df4e8b

Issue 716. FixA: Spilt reference and analysis period themes into one theme for each event. flys-artifacts/trunk@5239 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Thu, 23 Aug 2012 08:49:37 +0000
parents 659c1111db13
children 487a8cb4a222
comparison
equal deleted inserted replaced
3609:a16837d73130 3610:66f539df4e8b
1 package de.intevation.flys.artifacts.states.fixation; 1 package de.intevation.flys.artifacts.states.fixation;
2 2
3 import java.text.DateFormat;
4 import java.util.Date;
5 import java.util.Iterator;
6 import java.util.List;
7 import java.util.TreeSet;
8
9 import org.apache.log4j.Logger;
10
3 import de.intevation.artifactdatabase.state.Facet; 11 import de.intevation.artifactdatabase.state.Facet;
4
5 import de.intevation.artifacts.CallContext; 12 import de.intevation.artifacts.CallContext;
6
7 import de.intevation.flys.artifacts.FLYSArtifact; 13 import de.intevation.flys.artifacts.FLYSArtifact;
8
9 import de.intevation.flys.artifacts.access.FixAnalysisAccess; 14 import de.intevation.flys.artifacts.access.FixAnalysisAccess;
10
11 import de.intevation.flys.artifacts.model.CalculationResult; 15 import de.intevation.flys.artifacts.model.CalculationResult;
12 import de.intevation.flys.artifacts.model.DataFacet; 16 import de.intevation.flys.artifacts.model.DataFacet;
13 import de.intevation.flys.artifacts.model.DateRange; 17 import de.intevation.flys.artifacts.model.DateRange;
14 import de.intevation.flys.artifacts.model.FacetTypes; 18 import de.intevation.flys.artifacts.model.FacetTypes;
15 import de.intevation.flys.artifacts.model.ReportFacet; 19 import de.intevation.flys.artifacts.model.ReportFacet;
16 20 import de.intevation.flys.artifacts.model.fixings.FixAnalysisCalculation;
17 import de.intevation.flys.artifacts.model.fixings.FixAnalysisEventsFacet; 21 import de.intevation.flys.artifacts.model.fixings.FixAnalysisEventsFacet;
18 import de.intevation.flys.artifacts.model.fixings.FixAnalysisPeriodsFacet; 22 import de.intevation.flys.artifacts.model.fixings.FixAnalysisPeriodsFacet;
23 import de.intevation.flys.artifacts.model.fixings.FixAnalysisResult;
19 import de.intevation.flys.artifacts.model.fixings.FixAvSectorFacet; 24 import de.intevation.flys.artifacts.model.fixings.FixAvSectorFacet;
20 import de.intevation.flys.artifacts.model.fixings.FixAnalysisCalculation;
21 import de.intevation.flys.artifacts.model.fixings.FixDerivateFacet; 25 import de.intevation.flys.artifacts.model.fixings.FixDerivateFacet;
22 import de.intevation.flys.artifacts.model.fixings.FixDeviationFacet; 26 import de.intevation.flys.artifacts.model.fixings.FixDeviationFacet;
23 import de.intevation.flys.artifacts.model.fixings.FixLongitudinalAnalysisFacet; 27 import de.intevation.flys.artifacts.model.fixings.FixLongitudinalAnalysisFacet;
28 import de.intevation.flys.artifacts.model.fixings.FixLongitudinalAvSectorFacet;
24 import de.intevation.flys.artifacts.model.fixings.FixLongitudinalDeviationFacet; 29 import de.intevation.flys.artifacts.model.fixings.FixLongitudinalDeviationFacet;
25 import de.intevation.flys.artifacts.model.fixings.FixLongitudinalReferenceFacet; 30 import de.intevation.flys.artifacts.model.fixings.FixLongitudinalReferenceFacet;
26 import de.intevation.flys.artifacts.model.fixings.FixOutlierFacet; 31 import de.intevation.flys.artifacts.model.fixings.FixOutlierFacet;
27 import de.intevation.flys.artifacts.model.fixings.FixReferenceEventsFacet; 32 import de.intevation.flys.artifacts.model.fixings.FixReferenceEventsFacet;
28 import de.intevation.flys.artifacts.model.fixings.FixAnalysisResult;
29 import de.intevation.flys.artifacts.model.fixings.FixWQCurveFacet; 33 import de.intevation.flys.artifacts.model.fixings.FixWQCurveFacet;
30
31 import de.intevation.flys.artifacts.resources.Resources; 34 import de.intevation.flys.artifacts.resources.Resources;
32
33 import de.intevation.flys.artifacts.states.DefaultState; 35 import de.intevation.flys.artifacts.states.DefaultState;
34
35 import de.intevation.flys.utils.IdGenerator; 36 import de.intevation.flys.utils.IdGenerator;
36
37 import java.text.DateFormat;
38
39 import java.util.List;
40
41 import org.apache.log4j.Logger;
42 37
43 /** 38 /**
44 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> 39 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
45 */ 40 */
46 public class FixAnalysisCompute 41 public class FixAnalysisCompute
48 implements FacetTypes 43 implements FacetTypes
49 { 44 {
50 /** The log used in this class. */ 45 /** The log used in this class. */
51 private static Logger log = Logger.getLogger(FixAnalysisCompute.class); 46 private static Logger log = Logger.getLogger(FixAnalysisCompute.class);
52 47
53 private static final String I18N_REFERENCEPERIOD = "fix.reference.period.events"; 48 private static final String I18N_REFERENCEPERIOD = "fix.reference.period.event.short";
54 49
55 private static final String I18N_ANALYSISPERIODS = "fix.analysis.periods"; 50 private static final String I18N_ANALYSISPERIODS = "fix.analysis.periods";
56 51
57 private static final String I18N_DERIVATIVE = "fix.derivative"; 52 private static final String I18N_DERIVATIVE = "fix.derivative";
58 53
59 private static final String I18N_OUTLIER = "fix.outlier"; 54 private static final String I18N_OUTLIER = "fix.outlier";
60 55
61 private static final String I18N_ANALYSIS = "fix.analysis"; 56 private static final String I18N_ANALYSIS = "fix.analysis.short";
62 57
63 private static final String I18N_DEVIATION = "fix.deviation"; 58 private static final String I18N_DEVIATION = "fix.deviation";
64 59
65 private static final String I18N_REFERENCEDEVIATION = "fix.reference.deviation"; 60 private static final String I18N_REFERENCEDEVIATION = "fix.reference.deviation";
66 61
107 if (res.getReport().hasProblems()) { 102 if (res.getReport().hasProblems()) {
108 facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id)); 103 facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id));
109 } 104 }
110 105
111 FixAnalysisResult fr = (FixAnalysisResult)res.getData(); 106 FixAnalysisResult fr = (FixAnalysisResult)res.getData();
112
113 if (fr == null) { 107 if (fr == null) {
114 return res; 108 return res;
115 } 109 }
116 110
117 facets.add( 111 facets.add(
163 new FixAvSectorFacet( 157 new FixAvSectorFacet(
164 facetNdx, 158 facetNdx,
165 FIX_SECTOR_AVERAGE_DWT + "_" + sectorNdx, 159 FIX_SECTOR_AVERAGE_DWT + "_" + sectorNdx,
166 description)); 160 description));
167 facets.add( 161 facets.add(
168 new FixLongitudinalAnalysisFacet( 162 new FixLongitudinalAvSectorFacet(
169 facetNdx, 163 facetNdx,
170 FIX_SECTOR_AVERAGE_LS + "_" + sectorNdx, 164 FIX_SECTOR_AVERAGE_LS + "_" + sectorNdx,
171 description)); 165 description));
172 // TODO: i18n 166 // TODO: i18n
173 String dev = "Abweichung: " + description; 167 String dev = "Abweichung: " + description;
174 facets.add( 168 facets.add(
175 new FixLongitudinalAnalysisFacet( 169 new FixLongitudinalAvSectorFacet(
176 facetNdx, 170 facetNdx,
177 FIX_SECTOR_AVERAGE_LS_DEVIATION + "_" + sectorNdx, 171 FIX_SECTOR_AVERAGE_LS_DEVIATION + "_" + sectorNdx,
178 dev)); 172 dev));
179 facets.add( 173 facets.add(
180 new FixAvSectorFacet( 174 new FixAvSectorFacet(
185 } 179 }
186 180
187 String eventDesc = 181 String eventDesc =
188 Resources.getMsg(context.getMeta(), 182 Resources.getMsg(context.getMeta(),
189 I18N_ANALYSIS, 183 I18N_ANALYSIS,
190 I18N_ANALYSIS) + 184 I18N_ANALYSIS);
191 ": " + startDate + " - " + endDate; 185
192 facets.add(new FixAnalysisEventsFacet(i, 186 int k = 0;
193 FIX_ANALYSIS_EVENTS_DWT, 187 for (Date d: fr.getAnalysisEventsDates(i)) {
194 eventDesc)); 188 int anaNdx = i << 8;
195 facets.add(new FixLongitudinalAnalysisFacet(i, 189 anaNdx = anaNdx | k;
196 FIX_ANALYSIS_EVENTS_LS, 190 facets.add(new FixAnalysisEventsFacet(anaNdx,
197 eventDesc)); 191 FIX_ANALYSIS_EVENTS_DWT,
198 facets.add(new FixAnalysisEventsFacet(i, 192 eventDesc + (i+1) + " - " + df.format(d)));
199 FIX_ANALYSIS_EVENTS_WQ, 193 facets.add(new FixLongitudinalAnalysisFacet(anaNdx,
200 eventDesc)); 194 FIX_ANALYSIS_EVENTS_LS,
195 eventDesc + (i+1) + " - " + df.format(d)));
196 facets.add(new FixAnalysisEventsFacet(anaNdx,
197 FIX_ANALYSIS_EVENTS_WQ,
198 eventDesc + (i+1) +" - " + df.format(d)));
199 k++;
200 }
201 } 201 }
202 202
203 IdGenerator idg = new IdGenerator(maxId + 1); 203 IdGenerator idg = new IdGenerator(maxId + 1);
204 204
205 String i18n_ref = Resources.getMsg(context.getMeta(), 205 String i18n_ref = Resources.getMsg(context.getMeta(),
207 I18N_REFERENCEPERIOD); 207 I18N_REFERENCEPERIOD);
208 String i18n_dev = Resources.getMsg(context.getMeta(), 208 String i18n_dev = Resources.getMsg(context.getMeta(),
209 I18N_REFERENCEDEVIATION, 209 I18N_REFERENCEDEVIATION,
210 I18N_REFERENCEDEVIATION); 210 I18N_REFERENCEDEVIATION);
211 211
212 212 TreeSet<Date> dates = fr.getReferenceEventsDates();
213 facets.add(new FixReferenceEventsFacet(idg.next(), 213 Iterator<Date> iter = dates.iterator();
214 FIX_REFERENCE_EVENTS_DWT, 214 int i = 0;
215 i18n_ref)); 215 while (iter.hasNext()) {
216 facets.add(new FixLongitudinalReferenceFacet(idg.next(), 216 Date d = iter.next();
217 FIX_REFERENCE_EVENTS_LS, 217 int refNdx = idg.next() << 8;
218 i18n_ref)); 218 refNdx |= i;
219 facets.add(new FixReferenceEventsFacet(idg.next(), 219 facets.add(new FixReferenceEventsFacet(refNdx,
220 FIX_REFERENCE_EVENTS_WQ, 220 FIX_REFERENCE_EVENTS_DWT,
221 i18n_ref)); 221 i18n_ref + " - " + df.format(d)));
222 refNdx = idg.next() << 8;
223 refNdx = refNdx | i;
224 facets.add(new FixLongitudinalReferenceFacet(refNdx,
225 FIX_REFERENCE_EVENTS_LS,
226 i18n_ref + " - " + df.format(d)));
227 refNdx = idg.next() << 8;
228 refNdx |= i;
229 facets.add(new FixReferenceEventsFacet(refNdx,
230 FIX_REFERENCE_EVENTS_WQ,
231 i18n_ref + " - " + df.format(d)));
232 i++;
233 }
234
222 235
223 facets.add(new FixLongitudinalDeviationFacet(idg.next(), 236 facets.add(new FixLongitudinalDeviationFacet(idg.next(),
224 FIX_DEVIATION_LS, 237 FIX_DEVIATION_LS,
225 i18n_dev)); 238 i18n_dev));
226 239

http://dive4elements.wald.intevation.org