Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/LongitudinalSectionGenerator2.java @ 7623:b64c263df4d1
issue1579: ComputedDischargeCurveGenerator: Handle WQKms data.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Mon, 02 Dec 2013 09:56:35 +0100 |
parents | 81416a62fa57 |
children | ad4a3980092f |
rev | line source |
---|---|
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
3 * |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
7 */ |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
8 |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.exports; |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
10 |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
11 import org.dive4elements.river.artifacts.D4EArtifact; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
12 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
13 import org.dive4elements.river.artifacts.access.RangeAccess; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
14 import org.dive4elements.river.jfree.Bounds; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
15 import org.dive4elements.river.jfree.DoubleBounds; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
16 import org.dive4elements.river.themes.ThemeDocument; |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
17 |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
18 public class LongitudinalSectionGenerator2 extends DiagramGenerator |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
19 { |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
20 public static final String I18N_CHART_SHORT_SUBTITLE = |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
21 "chart.longitudinal.section.shortsubtitle"; |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
22 |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
23 public static final String I18N_CHART_LOCATION_SUBTITLE = |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
24 "chart.longitudinal.section.locsubtitle"; |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
25 |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
26 @Override |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
27 public String getDefaultChartSubtitle() { |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
28 double[] dist = getRange(); |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
29 |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
30 if (dist == null || dist.length != 2 || |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
31 Double.isNaN(dist[0]) || Double.isNaN(dist[1])) { |
7118
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
32 Object [] args = new Object[] {getRiverName()}; |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
33 return msg(I18N_CHART_SHORT_SUBTITLE, "", args); |
7118
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
34 } |
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
35 |
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
36 if (Math.abs(dist[0] - dist[1]) < 1E-5) { |
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
37 Object [] args = new Object[] {getRiverName(), dist[1]}; |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
38 return msg(I18N_CHART_LOCATION_SUBTITLE, "", args); |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
39 } |
7118
4605d6ca4ee9
Removed obsolete imports. Minor code cosmetics.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7107
diff
changeset
|
40 |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
41 return super.getDefaultChartSubtitle(); |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
42 } |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
43 |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
44 /* We override doOut here to save the startkm and endkm in the |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
45 * context. Some facets will deliver different data because of |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
46 * that setting. It is mainly used in MINFO where it causes |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
47 * adaptive smoothing on the data if you are zoomed out do |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
48 * reduce the static in the curve. */ |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
49 @Override |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
50 public void doOut( |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
51 ArtifactAndFacet bundle, |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
52 ThemeDocument theme, |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
53 boolean visible |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
54 ) { |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
55 /* Aheinecke (25.09.2013): I do not understand why this has to be |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
56 * done so difficult and if it really must be done for every |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
57 * facet. At least it has to be done _before_ the super class |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
58 * actually does the output and accesses the facet data. |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
59 */ |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
60 D4EArtifact artifact = (D4EArtifact)bundle.getArtifact(); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
61 |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
62 if (getXBounds(0) != null && getDomainAxisRange() != null) { |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
63 Bounds bounds = |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
64 calculateZoom(getXBounds(0), getDomainAxisRange()); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
65 context.putContextValue("startkm", bounds.getLower()); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
66 context.putContextValue("endkm", bounds.getUpper()); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
67 } |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
68 else if (getXBounds(0) != null && getDomainAxisRange() == null) { |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
69 context.putContextValue("startkm", getXBounds(0).getLower()); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
70 context.putContextValue("endkm", getXBounds(0).getUpper()); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
71 } |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
72 else if (getXBounds(0) == null && getDomainAxisRange() == null) { |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
73 RangeAccess access = new RangeAccess(artifact); |
7168
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
74 if (access.hasFrom() && access.hasTo()) { |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
75 context.putContextValue("startkm", access.getFrom()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
76 context.putContextValue("endkm", access.getTo()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
77 } |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
78 } |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
79 else if (getXBounds(0) == null && getDomainAxisRange() != null){ |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
80 RangeAccess access = new RangeAccess(artifact); |
7168
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
81 if (access.hasFrom() && access.hasTo()) { |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
82 Bounds b = new DoubleBounds(access.getFrom(), access.getTo()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
83 Bounds bounds = |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
84 calculateZoom(b, getDomainAxisRange()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
85 context.putContextValue("startkm", bounds.getLower()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
86 context.putContextValue("endkm", bounds.getUpper()); |
81416a62fa57
Saveguard range access in case an artifact has no range
Andre Heinecke <aheinecke@intevation.de>
parents:
7157
diff
changeset
|
87 } |
7157
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
88 } |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
89 super.doOut(bundle, theme, visible); |
ab109ae2acc6
Add startkm and endkm setting to longitudinal section generator 2
Andre Heinecke <aheinecke@intevation.de>
parents:
7118
diff
changeset
|
90 } |
7105
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
91 } |
ab57b6eee71c
Add refactored LongitudinalSectionGenerator2 that inherits DiagramGenerator
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
92 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |