annotate flys-artifacts/src/main/java/de/intevation/flys/exports/fixings/FixDerivedCurveGenerator.java @ 4241:49cb65d5932d

Improved the historical discharge calculation. The calculation now creates new HistoricalWQKms (new subclass of WQKms). Those WQKms are used to create new facets from (new) type 'HistoricalDischargeCurveFacet'. The chart generator is improved to support those facets.
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 24 Oct 2012 14:34:35 +0200
parents 8bbb9e173297
children
rev   line source
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.exports.fixings;
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
2
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
3 import org.apache.log4j.Logger;
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
4 import org.w3c.dom.Document;
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
5
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
6 import de.intevation.artifactdatabase.state.ArtifactAndFacet;
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
7 import de.intevation.flys.artifacts.model.FacetTypes;
3081
26119b7b3154 Fixing output generator hacking
Christian Lins <christian.lins@intevation.de>
parents: 3076
diff changeset
8 import de.intevation.flys.artifacts.model.fixings.FixDerivateFacet;
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
9 import de.intevation.flys.artifacts.model.fixings.FixFunction;
3406
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
10 import de.intevation.flys.artifacts.resources.Resources;
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
11 import de.intevation.flys.exports.ChartGenerator;
3215
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3110
diff changeset
12 import de.intevation.flys.jfree.JFreeUtil;
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3110
diff changeset
13 import de.intevation.flys.jfree.StyledXYSeries;
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
14
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
15 /**
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
16 * Generator for fixation derived function curve.
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
17 *
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
18 * @author <a href="mailto:christian.lins@intevation.de">Christian Lins</a>
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
19 */
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3068
diff changeset
20 public class FixDerivedCurveGenerator
3088
960307cf2adc Moved current km to context and added an abstract generator for fix analysis
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3081
diff changeset
21 extends FixChartGenerator
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
22 implements FacetTypes
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
23 {
3905
8bbb9e173297 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3761
diff changeset
24 /** Private logger. */
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3068
diff changeset
25 private static Logger logger =
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
26 Logger.getLogger(FixDerivedCurveGenerator.class);
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
27
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
28 public static final String I18N_CHART_TITLE =
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
29 "chart.fixings.derivedcurve.title";
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
30
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3068
diff changeset
31 public static final String I18N_CHART_SUBTITLE =
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
32 "chart.fixings.derivedcurve.subtitle";
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
33
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
34 public static final String I18N_XAXIS_LABEL =
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
35 "chart.fixings.derivedcurve.xaxis.label";
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
36
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3068
diff changeset
37 public static final String I18N_YAXIS_LABEL =
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
38 "chart.fixings.derivedcurve.yaxis.label";
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
39
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3068
diff changeset
40 public static final String I18N_CHART_TITLE_DEFAULT =
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
41 "Ableitungskurve";
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
42
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
43 public static final String I18N_XAXIS_LABEL_DEFAULT =
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
44 "Q [m\u00B3/s]";
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
45
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
46 public static final String I18N_YAXIS_LABEL_DEFAULT =
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
47 "W [NN + m]";
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
48
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
49 public static enum YAXIS {
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
50 W(0),
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
51 Q(1);
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
52 public int idx;
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
53 private YAXIS(int c) {
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
54 idx = c;
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3068
diff changeset
55 }
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
56 }
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
57
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
58
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
59 @Override
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
60 public void doOut(ArtifactAndFacet aaf, Document doc, boolean visible) {
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
61 logger.debug("doOut");
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
62
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
63 if (FacetTypes.IS.MANUALPOINTS(aaf.getFacetName())) {
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
64 doPoints(aaf.getData(context),
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
65 aaf,
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
66 doc, visible, YAXIS.W.idx);
3215
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3110
diff changeset
67 }
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
68 else {
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
69 FixDerivateFacet facet = (FixDerivateFacet)aaf.getFacet();
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
70 FixFunction func = (FixFunction)facet.getData(
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
71 aaf.getArtifact(), context);
3110
88d49a0a55f0 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3108
diff changeset
72
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
73 if (func == null) {
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
74 logger.warn("doOut: Facet does not contain FixFunction");
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
75 return;
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
76 }
3215
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3110
diff changeset
77
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
78 double maxQ = func.getMaxQ();
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
79
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
80 if (maxQ > 0) {
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
81 StyledXYSeries series = JFreeUtil.sampleFunction2D(
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
82 func.getFunction(),
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
83 doc,
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
84 aaf.getFacetDescription(),
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
85 500, // number of samples
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
86 0.0 , // start
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
87 maxQ); // end
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
88 addAxisSeries(series, 0, visible);
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
89 }
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
90 }
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
91 }
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
92
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
93
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
94 @Override
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
95 protected String getDefaultChartTitle() {
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
96 return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT);
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
97 }
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
98
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
99
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
100 @Override
3406
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
101 protected String getChartTitle() {
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
102 return Resources.format(
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
103 context.getMeta(),
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
104 I18N_CHART_TITLE,
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
105 I18N_CHART_TITLE_DEFAULT,
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
106 context.getContextValue(CURRENT_KM));
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
107 }
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
108
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
109
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
110 @Override
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
111 protected String getDefaultXAxisLabel() {
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
112 return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT);
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
113 }
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
114
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
115
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
116 @Override
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
117 protected String getDefaultYAxisLabel(int pos) {
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3068
diff changeset
118 return msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT);
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
119 }
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
120
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
121
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
122 @Override
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
123 protected ChartGenerator.YAxisWalker getYAxisWalker() {
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
124 return new YAxisWalker() {
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
125 @Override
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
126 public int length() {
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
127 return YAXIS.values().length;
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
128 }
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
129
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
130 @Override
3761
066e2b4d69ca Fix missing import
Christian Lins <christian.lins@intevation.de>
parents: 3406
diff changeset
131 public String getId(int idx) {
3067
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
132 YAXIS[] yaxes = YAXIS.values();
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
133 return yaxes[idx].toString();
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
134 }
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
135 };
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
136 }
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
137 }
d87aadaa4f7e Add FixDerivedCurveGenerator class
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
138 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org