annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixAvSectorFacet.java @ 4255:670e98f5a441

Fixed leak while merging facets. The ThemeList that is used by OutputHelper to sort the Facets for an Output now uses a list to store the ManagedFacets. The correct order is made up by sorting the List using Collections.sort() function of the Java JDK. Therfore, the ManagedFacet class implements the Comparable interface. The return value of its compareTo(other) method depends on the value of the 'position' field.
author Ingo Weinzierl <weinzierl.ingo@googlemail.com>
date Thu, 25 Oct 2012 14:01:46 +0200
parents b9c2becbcc9e
children 26774405c884
rev   line source
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.artifacts.model.fixings;
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
2
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
3 import de.intevation.artifacts.Artifact;
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
4 import de.intevation.artifacts.CallContext;
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
5
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
6 import de.intevation.flys.artifacts.FLYSArtifact;
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
7
3408
50d61a2494cb FixA: Renamed FixationArtifactAccess to FixAnalysisAccess
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
8 import de.intevation.flys.artifacts.access.FixAnalysisAccess;
3203
1b9f791937c3 Moved FixationArtifactAccess to new access package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3131
diff changeset
9
1b9f791937c3 Moved FixationArtifactAccess to new access package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3131
diff changeset
10 import de.intevation.flys.artifacts.model.CalculationResult;
1b9f791937c3 Moved FixationArtifactAccess to new access package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3131
diff changeset
11 import de.intevation.flys.artifacts.model.DataFacet;
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12 import de.intevation.flys.artifacts.model.FacetTypes;
3203
1b9f791937c3 Moved FixationArtifactAccess to new access package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3131
diff changeset
13
3467
b9c2becbcc9e Towards issue745 (lines for averages in deltawt).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3415
diff changeset
14 import de.intevation.flys.artifacts.model.QWDDateRange;
b9c2becbcc9e Towards issue745 (lines for averages in deltawt).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3415
diff changeset
15
3203
1b9f791937c3 Moved FixationArtifactAccess to new access package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3131
diff changeset
16 import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18 import de.intevation.flys.utils.KMIndex;
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19
3203
1b9f791937c3 Moved FixationArtifactAccess to new access package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3131
diff changeset
20 import org.apache.log4j.Logger;
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 /**
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24 * Facet to show average W values for Q sectors.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25 *
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27 */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28 public class FixAvSectorFacet
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29 extends DataFacet
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 implements FacetTypes {
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 /** House logger. */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33 private static Logger logger = Logger.getLogger(FixAvSectorFacet.class);
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35 /** Trivial Constructor. */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 public FixAvSectorFacet() {
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39
3043
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3035
diff changeset
40 public FixAvSectorFacet(int ndx, String name, String description) {
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41 super(
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42 ndx,
3043
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3035
diff changeset
43 name,
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 description,
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 ComputeType.ADVANCE,
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46 null,
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47 null);
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
48 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51 /**
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 * Returns the data this facet requires.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 *
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 * @param artifact the owner artifact.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55 * @param context the CallContext.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56 *
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 * @return the data as QWD array (QWD[]).
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 @Override
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60 public Object getData(Artifact artifact, CallContext context) {
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 logger.debug("FixAvSectorFacet.getData");
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63 if (artifact instanceof FLYSArtifact) {
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64 FLYSArtifact flys = (FLYSArtifact)artifact;
3408
50d61a2494cb FixA: Renamed FixationArtifactAccess to FixAnalysisAccess
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
65 FixAnalysisAccess access = new FixAnalysisAccess(flys);
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 CalculationResult res =
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68 (CalculationResult) flys.compute(context,
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69 ComputeType.ADVANCE,
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 false);
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71
3415
e3c7a3228bc2 FixA: Renamed FixResult to FixAnalysisResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3408
diff changeset
72 FixAnalysisResult result = (FixAnalysisResult) res.getData();
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73
3088
960307cf2adc Moved current km to context and added an abstract generator for fix analysis
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3080
diff changeset
74 double currentKm =
960307cf2adc Moved current km to context and added an abstract generator for fix analysis
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3080
diff changeset
75 ((Double)context.getContextValue("currentKm")).doubleValue();
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 KMIndex<AnalysisPeriod []> kmPeriods = result.getAnalysisPeriods();
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3043
diff changeset
77 KMIndex.Entry<AnalysisPeriod []> kmPeriodsEntry =
3080
dc2765e31e1f Added getData method with an additional km parameter.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3069
diff changeset
78 kmPeriods.binarySearch(currentKm);
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3043
diff changeset
79
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3043
diff changeset
80 if (kmPeriodsEntry == null) {
3080
dc2765e31e1f Added getData method with an additional km parameter.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3069
diff changeset
81 logger.warn("No analysis periods found for km '" + currentKm + "'");
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3043
diff changeset
82 return null;
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3043
diff changeset
83 }
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3043
diff changeset
84
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3043
diff changeset
85 AnalysisPeriod[] periods = kmPeriodsEntry.getValue();
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
86
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
87 if (periods == null) {
3066
4c22194b733a Some minor bugfixes in fix analysis calculation and some more debug output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3063
diff changeset
88 logger.warn("No analysis periods specified!");
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
89 return null;
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
90 }
3066
4c22194b733a Some minor bugfixes in fix analysis calculation and some more debug output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3063
diff changeset
91
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents: 3066
diff changeset
92 QWD[] qwdData = null;
3131
bac0b2721451 FixA: Added delta W(t) chart in fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3088
diff changeset
93 int sectorNdx = index & 3;
bac0b2721451 FixA: Added delta W(t) chart in fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3088
diff changeset
94 int periodNdx = index >> 2;
bac0b2721451 FixA: Added delta W(t) chart in fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3088
diff changeset
95
bac0b2721451 FixA: Added delta W(t) chart in fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3088
diff changeset
96 if (periodNdx < periods.length) {
bac0b2721451 FixA: Added delta W(t) chart in fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3088
diff changeset
97 qwdData = periods[periodNdx].getQSectorAverages();
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents: 3066
diff changeset
98 }
3066
4c22194b733a Some minor bugfixes in fix analysis calculation and some more debug output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3063
diff changeset
99
4c22194b733a Some minor bugfixes in fix analysis calculation and some more debug output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3063
diff changeset
100 if (logger.isDebugEnabled()) {
4c22194b733a Some minor bugfixes in fix analysis calculation and some more debug output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3063
diff changeset
101 int resSize = qwdData != null ? qwdData.length : -1;
4c22194b733a Some minor bugfixes in fix analysis calculation and some more debug output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3063
diff changeset
102 logger.debug("Found " + resSize + " result elements.");
4c22194b733a Some minor bugfixes in fix analysis calculation and some more debug output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3063
diff changeset
103 }
4c22194b733a Some minor bugfixes in fix analysis calculation and some more debug output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3063
diff changeset
104
3131
bac0b2721451 FixA: Added delta W(t) chart in fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3088
diff changeset
105 if (qwdData == null) {
bac0b2721451 FixA: Added delta W(t) chart in fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3088
diff changeset
106 return null;
bac0b2721451 FixA: Added delta W(t) chart in fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3088
diff changeset
107 }
3467
b9c2becbcc9e Towards issue745 (lines for averages in deltawt).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3415
diff changeset
108 return new QWDDateRange(qwdData[sectorNdx], periods[periodNdx].getDateRange());
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
109 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
110 else {
3066
4c22194b733a Some minor bugfixes in fix analysis calculation and some more debug output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3063
diff changeset
111 logger.warn("Artifact is no instance of FLYSArtifact.");
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
112 return null;
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
113 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
114 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
115
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
116
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
117 /**
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
118 * Create a deep copy of this Facet.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
119 * @return a deep copy.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
120 */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
121 @Override
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
122 public FixAvSectorFacet deepCopy() {
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
123 FixAvSectorFacet copy = new FixAvSectorFacet();
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
124 copy.set(this);
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
125 return copy;
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
126 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
127 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
128 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org