annotate flys-artifacts/src/main/java/de/intevation/flys/exports/DischargeLongitudinalSectionGenerator.java @ 925:0cb1a70b8b92

Added the math needed to calculate "W-Differenzen" in "Laengsschnitten" flys-artifacts/trunk@2277 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 03 Jul 2011 15:33:33 +0000
parents f7761914f745
children bdb05dc9b763
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
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 /**
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 * 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
20 *
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 * @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
22 */
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 public class DischargeLongitudinalSectionGenerator
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 extends LongitudinalSectionGenerator
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 {
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 private static Logger logger =
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 Logger.getLogger(DischargeLongitudinalSectionGenerator.class);
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29
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
30
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
31 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
32 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
33 }
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
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
36 @Override
695
45cd58a2a2bb OutGenerators doOut() takes a facet object now instead of just its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 672
diff changeset
37 public void doOut(Artifact artifact, Facet facet, Document attr) {
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 logger.debug("DischargeLongitudinalSectionGenerator.doOut");
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
40 if (facet == null) {
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
41 return;
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
42 }
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
43
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
44 String name = facet.getName();
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
45
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
46 if (name == 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 }
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
49
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
50 FLYSArtifact flys = (FLYSArtifact) artifact;
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
51 Facet f = flys.getNativeFacet(facet);
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
52
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
53 if (name.equals(DISCHARGE_LONGITUDINAL_W)) {
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
54 doWOut((WQKms) f.getData(artifact, context), attr);
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 }
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
56 else if (name.equals(DISCHARGE_LONGITUDINAL_Q)) {
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
57 doQOut((WQKms) f.getData(artifact, context), attr);
696
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 else if (name.equals(DISCHARGE_LONGITUDINAL_C)) {
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
60 doCorrectedWOut((WQCKms) f.getData(artifact, context), attr);
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 }
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 else {
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
63 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
64 }
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 }
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 /**
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 * 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
70 *
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 * @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
72 * @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
73 */
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
74 protected void doCorrectedWOut(WQCKms wqckms, Document theme) {
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 logger.debug("DischargeLongitudinalSectionGenerator.doCorrectedWOut");
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
77 int size = wqckms.size();
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
79 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
80 XYSeries series = new StyledXYSeries(
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
81 getSeriesNameForCorrected(wqckms, "W"),
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
82 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
83
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
84 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
85 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
86 }
923
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 745
diff changeset
87
7ca4a287cd0e #135 Modified the way to store datasets for different chart axes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 745
diff changeset
88 addFirstAxisSeries(series);
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 }
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
90
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
91 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
92 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
93 }
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 }
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
95
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
96
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
97 protected String getSeriesNameForCorrected(WQKms wqkms, String mode) {
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
98 String name = wqkms.getName();
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
99
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
100 name = name.replace(
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
101 "benutzerdefiniert",
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
102 "benutzerdefiniert [korrigiert]");
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
103
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
104 String prefix = name.indexOf(mode) >= 0 ? null : mode;
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
105
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
106 return prefix != null && prefix.length() > 0
719
035c0095b427 Draw correction curve again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
107 ? prefix + "(" + name + ")"
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
108 : name;
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 420
diff changeset
109 }
403
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 }
1ed48e2ddc1b Added an OutGenerator to create discharge longitudinal section charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org