annotate flys-artifacts/src/main/java/de/intevation/flys/exports/DischargeLongitudinalSectionGenerator.java @ 1862:4cc21f0a470e

Handle Annotation Facets in DischargeLongitudinalSection diagrams. flys-artifacts/trunk@3211 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Thu, 10 Nov 2011 10:20:40 +0000
parents 7e19449d7826
children b1df3e64d8f5
rev   line source
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.exports;
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import org.apache.log4j.Logger;
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5 import org.jfree.data.xy.XYSeries;
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 import org.w3c.dom.Document;
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 import de.intevation.artifacts.Artifact;
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
695
45cd58a2a2bb OutGenerators doOut() takes a facet object now instead of just its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 672
diff changeset
11 import de.intevation.artifactdatabase.state.Facet;
45cd58a2a2bb OutGenerators doOut() takes a facet object now instead of just its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 672
diff changeset
12
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
13 import de.intevation.flys.artifacts.FLYSArtifact;
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 import de.intevation.flys.artifacts.model.WQCKms;
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import de.intevation.flys.artifacts.model.WQKms;
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
1862
4cc21f0a470e Handle Annotation Facets in DischargeLongitudinalSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1712
diff changeset
17 import de.intevation.flys.jfree.FLYSAnnotation;
4cc21f0a470e Handle Annotation Facets in DischargeLongitudinalSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1712
diff changeset
18
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 /**
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 * An OutGenerator that generates discharge longitudinal section curves.
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 *
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 */
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 public class DischargeLongitudinalSectionGenerator
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 extends LongitudinalSectionGenerator
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 {
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 private static Logger logger =
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 Logger.getLogger(DischargeLongitudinalSectionGenerator.class);
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31
420
a0afdda4d4b9 ISSUE-47 Adjusted the line color of W, Q and corrected W curves (temporarilly).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 403
diff changeset
32 public DischargeLongitudinalSectionGenerator() {
a0afdda4d4b9 ISSUE-47 Adjusted the line color of W, Q and corrected W curves (temporarilly).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 403
diff changeset
33 super();
a0afdda4d4b9 ISSUE-47 Adjusted the line color of W, Q and corrected W curves (temporarilly).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 403
diff changeset
34 }
a0afdda4d4b9 ISSUE-47 Adjusted the line color of W, Q and corrected W curves (temporarilly).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 403
diff changeset
35
a0afdda4d4b9 ISSUE-47 Adjusted the line color of W, Q and corrected W curves (temporarilly).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 403
diff changeset
36
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
37 @Override
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
38 public void doOut(
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
39 Artifact artifact,
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
40 Facet facet,
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
41 Document attr,
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
42 boolean visible
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
43 ) {
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 logger.debug("DischargeLongitudinalSectionGenerator.doOut");
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
46 if (facet == null) {
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
47 return;
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
48 }
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
49
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
50 String name = facet.getName();
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
51
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
52 if (name == null) {
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
53 return;
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
54 }
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
55
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
56 FLYSArtifact flys = (FLYSArtifact) artifact;
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
57 Facet f = flys.getNativeFacet(facet);
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
58
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
59 if (name.equals(DISCHARGE_LONGITUDINAL_W)) {
1712
7e19449d7826 #253 Modified the title creation of chart curves - titles will now equal the Facet's description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1684
diff changeset
60 doWOut((WQKms) f.getData(artifact, context), facet, attr, visible);
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 }
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
62 else if (name.equals(DISCHARGE_LONGITUDINAL_Q)) {
1712
7e19449d7826 #253 Modified the title creation of chart curves - titles will now equal the Facet's description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1684
diff changeset
63 doQOut((WQKms) f.getData(artifact, context), facet, attr, visible);
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
64 }
1862
4cc21f0a470e Handle Annotation Facets in DischargeLongitudinalSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1712
diff changeset
65 else if (name.equals(LONGITUDINAL_ANNOTATION)) {
4cc21f0a470e Handle Annotation Facets in DischargeLongitudinalSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1712
diff changeset
66 doAnnotations((FLYSAnnotation) f.getData(artifact, context),
4cc21f0a470e Handle Annotation Facets in DischargeLongitudinalSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1712
diff changeset
67 facet, attr, visible);
4cc21f0a470e Handle Annotation Facets in DischargeLongitudinalSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1712
diff changeset
68 }
4cc21f0a470e Handle Annotation Facets in DischargeLongitudinalSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1712
diff changeset
69 if (name.equals(DISCHARGE_LONGITUDINAL_C)) {
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
70 doCorrectedWOut(
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
71 (WQCKms) f.getData(artifact, context),
1712
7e19449d7826 #253 Modified the title creation of chart curves - titles will now equal the Facet's description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1684
diff changeset
72 facet,
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
73 attr,
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
74 visible);
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 }
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 else {
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
77 logger.warn("Unknown facet name: " + name);
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 }
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 }
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 /**
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 * Adds a new series for the corrected W curve.
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 *
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 * @param wqckms The object that contains the corrected W values.
924
f7761914f745 An initial implementation to render chart series based on the XML configuration in themes.xml.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 923
diff changeset
86 * @param theme The theme that contains styling information.
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 */
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
88 protected void doCorrectedWOut(
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
89 WQCKms wqckms,
1712
7e19449d7826 #253 Modified the title creation of chart curves - titles will now equal the Facet's description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1684
diff changeset
90 Facet facet,
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
91 Document theme,
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
92 boolean visible
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
93 ) {
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 logger.debug("DischargeLongitudinalSectionGenerator.doCorrectedWOut");
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
96 int size = wqckms.size();
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
98 if (size > 0) {
924
f7761914f745 An initial implementation to render chart series based on the XML configuration in themes.xml.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 923
diff changeset
99 XYSeries series = new StyledXYSeries(
1712
7e19449d7826 #253 Modified the title creation of chart curves - titles will now equal the Facet's description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1684
diff changeset
100 facet.getDescription(),
924
f7761914f745 An initial implementation to render chart series based on the XML configuration in themes.xml.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 923
diff changeset
101 theme);
f7761914f745 An initial implementation to render chart series based on the XML configuration in themes.xml.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 923
diff changeset
102
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
103 for (int i = 0; i < size; i++) {
925
0cb1a70b8b92 Added the math needed to calculate "W-Differenzen" in "Laengsschnitten"
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 924
diff changeset
104 series.add(wqckms.getKm(i), wqckms.getC(i));
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
105 }
923
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 745
diff changeset
106
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 925
diff changeset
107 addFirstAxisSeries(series, visible);
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 }
745
f959faaa7c4a Fix for flys/issue150: Invert the x axis if its guessed that water is increasing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
109
f959faaa7c4a Fix for flys/issue150: Invert the x axis if its guessed that water is increasing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
110 if (wqckms.guessWaterIncreasing()) {
f959faaa7c4a Fix for flys/issue150: Invert the x axis if its guessed that water is increasing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
111 setInverted(true);
f959faaa7c4a Fix for flys/issue150: Invert the x axis if its guessed that water is increasing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
112 }
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113 }
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114 }
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
115 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org