Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/process/BedDiffYearProcessor.java @ 8730:cb33de3434a8
(issue1754) Proper subtitle handling for Radius
This deduplicates the subtitle and zoom / radius calculation code
by moving it out of the processors. Doing this fixes cases where
the subtitle would be removed when a the according filtered facet
was removed although it should still have shown the Range for example.
Range is now also added as a subtitle for the difference diagrams.
This adds some tasty hack (with cheese) to determine wether or
not the user has set the subtitle. See the comment in
getChartSubtitlePure in LongitudinalSectionGenerator2 for details.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Thu, 30 Apr 2015 13:06:51 +0200 |
parents | 5dea205ea3e7 |
children | 8dbb969091c5 |
rev | line source |
---|---|
6570
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
3 * |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
7 */ |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
8 |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.exports.process; |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
10 |
7892
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
11 import java.util.Map; |
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
12 |
6570
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
13 import org.apache.log4j.Logger; |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
14 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
15 import org.dive4elements.artifacts.CallContext; |
7808
ea6b441b4872
Calculate the zoom dependent radius and add the informations to chart subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7727
diff
changeset
|
16 import org.dive4elements.river.artifacts.D4EArtifact; |
6570
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
17 import org.dive4elements.river.artifacts.model.FacetTypes; |
7808
ea6b441b4872
Calculate the zoom dependent radius and add the informations to chart subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7727
diff
changeset
|
18 import org.dive4elements.river.artifacts.resources.Resources; |
6570
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
19 import org.dive4elements.river.exports.StyledSeriesBuilder; |
7092
6563262052ab
Add DiagramGenerator doOut function
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
20 import org.dive4elements.river.exports.DiagramGenerator; |
6570
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
21 import org.dive4elements.river.jfree.StyledXYSeries; |
6905
1b35b2ddfc28
Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6863
diff
changeset
|
22 import org.dive4elements.river.themes.ThemeDocument; |
6570
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
23 |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
24 |
7058
5c07024cdc24
Fix indention / line length
Andre Heinecke <aheinecke@intevation.de>
parents:
7057
diff
changeset
|
25 public class BedDiffYearProcessor |
5c07024cdc24
Fix indention / line length
Andre Heinecke <aheinecke@intevation.de>
parents:
7057
diff
changeset
|
26 extends DefaultProcessor implements FacetTypes { |
6570
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
27 |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8078
diff
changeset
|
28 private final static Logger log = |
6570
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
29 Logger.getLogger(BedDiffYearProcessor.class); |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
30 |
6778
cbe9ac4380a5
issue1439: Show line segments for points that have gaps on both sides. Small refac.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6771
diff
changeset
|
31 protected static double GAP_TOLERANCE = 0.101d; |
cbe9ac4380a5
issue1439: Show line segments for points that have gaps on both sides. Small refac.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6771
diff
changeset
|
32 |
7892
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
33 protected String yAxisLabel; |
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
34 |
7146
414794d0a50d
Add label for bed difference axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7092
diff
changeset
|
35 public static final String I18N_AXIS_LABEL = |
414794d0a50d
Add label for bed difference axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7092
diff
changeset
|
36 "chart.beddifference.yaxis.label.diff"; |
414794d0a50d
Add label for bed difference axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7092
diff
changeset
|
37 public static final String I18N_AXIS_LABEL_DEFAULT = |
414794d0a50d
Add label for bed difference axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7092
diff
changeset
|
38 "delta S [cm]"; |
414794d0a50d
Add label for bed difference axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7092
diff
changeset
|
39 |
6570
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
40 @Override |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
41 public void doOut( |
7092
6563262052ab
Add DiagramGenerator doOut function
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
42 DiagramGenerator generator, |
6563262052ab
Add DiagramGenerator doOut function
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
43 ArtifactAndFacet bundle, |
6563262052ab
Add DiagramGenerator doOut function
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
44 ThemeDocument theme, |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
45 boolean visible |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
46 ) { |
7092
6563262052ab
Add DiagramGenerator doOut function
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
47 CallContext context = generator.getCallContext(); |
7892
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
48 Map<String, String> metaData = |
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
49 bundle.getFacet().getMetaData(bundle.getArtifact(), context); |
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
50 yAxisLabel = metaData.get("Y"); |
8001
5277483044d9
Fixed NPE when loading folders from datacage.
Raimund Renkert <rrenkert@intevation.de>
parents:
7991
diff
changeset
|
51 |
5277483044d9
Fixed NPE when loading folders from datacage.
Raimund Renkert <rrenkert@intevation.de>
parents:
7991
diff
changeset
|
52 Object data = bundle.getData(context); |
5277483044d9
Fixed NPE when loading folders from datacage.
Raimund Renkert <rrenkert@intevation.de>
parents:
7991
diff
changeset
|
53 if (data == null) { |
5277483044d9
Fixed NPE when loading folders from datacage.
Raimund Renkert <rrenkert@intevation.de>
parents:
7991
diff
changeset
|
54 return; |
5277483044d9
Fixed NPE when loading folders from datacage.
Raimund Renkert <rrenkert@intevation.de>
parents:
7991
diff
changeset
|
55 } |
5277483044d9
Fixed NPE when loading folders from datacage.
Raimund Renkert <rrenkert@intevation.de>
parents:
7991
diff
changeset
|
56 |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
57 if (!(data instanceof double[][])) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8078
diff
changeset
|
58 log.error("Can't process " + data.getClass().getName() + " objects"); |
7092
6563262052ab
Add DiagramGenerator doOut function
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
59 return; |
6563262052ab
Add DiagramGenerator doOut function
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
60 } |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
61 double[][] bData = (double[][]) data; |
8696
5dea205ea3e7
(issue1670) Remove 99-percent copy-paste method, which had been used only once.
Tom Gottfried <tom@intevation.de>
parents:
8202
diff
changeset
|
62 for (int N = bData[0].length, i = 0; i < N; i++) { |
5dea205ea3e7
(issue1670) Remove 99-percent copy-paste method, which had been used only once.
Tom Gottfried <tom@intevation.de>
parents:
8202
diff
changeset
|
63 // scale to cm |
5dea205ea3e7
(issue1670) Remove 99-percent copy-paste method, which had been used only once.
Tom Gottfried <tom@intevation.de>
parents:
8202
diff
changeset
|
64 bData[1][i] *= 100d; |
5dea205ea3e7
(issue1670) Remove 99-percent copy-paste method, which had been used only once.
Tom Gottfried <tom@intevation.de>
parents:
8202
diff
changeset
|
65 } |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
66 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
67 StyledXYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
68 series.putMetaData(metaData, bundle.getArtifact(), context); |
8696
5dea205ea3e7
(issue1670) Remove 99-percent copy-paste method, which had been used only once.
Tom Gottfried <tom@intevation.de>
parents:
8202
diff
changeset
|
69 StyledSeriesBuilder.addPoints(series, |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
70 bData, |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
71 false, |
8696
5dea205ea3e7
(issue1670) Remove 99-percent copy-paste method, which had been used only once.
Tom Gottfried <tom@intevation.de>
parents:
8202
diff
changeset
|
72 GAP_TOLERANCE); |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
73 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
74 generator.addAxisSeries(series, axisName, visible); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
75 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
76 return; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
77 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
78 |
7092
6563262052ab
Add DiagramGenerator doOut function
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
79 @Override |
6570
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
80 public boolean canHandle(String facetType) { |
7705
f1257717fa4b
(issue1594) Move Bed differences absolute height into the correct processor
Andre Heinecke <aheinecke@intevation.de>
parents:
7683
diff
changeset
|
81 return BED_DIFFERENCE_YEAR.equals(facetType) // from BedDifferencesYear |
7683
28758f51f1b2
issue1594/issue1603: Put bed_differences to correct axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7146
diff
changeset
|
82 || BED_DIFFERENCE_YEAR_FILTERED.equals(facetType); // from BedDifferencesYear |
6570
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
83 } |
7146
414794d0a50d
Add label for bed difference axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7092
diff
changeset
|
84 |
414794d0a50d
Add label for bed difference axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7092
diff
changeset
|
85 @Override |
414794d0a50d
Add label for bed difference axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7092
diff
changeset
|
86 public String getAxisLabel(DiagramGenerator generator) { |
7892
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
87 if (yAxisLabel != null && !yAxisLabel.isEmpty()) { |
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
88 return generator.msg(yAxisLabel, I18N_AXIS_LABEL_DEFAULT); |
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
89 } |
7146
414794d0a50d
Add label for bed difference axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7092
diff
changeset
|
90 return generator.msg( |
7892
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
91 I18N_AXIS_LABEL, |
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
92 I18N_AXIS_LABEL_DEFAULT); |
7146
414794d0a50d
Add label for bed difference axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7092
diff
changeset
|
93 } |
6570
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
94 } |
6435b3d7fb52
Refactored BedDifferenceYearGenerator to use new BedDiffYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
95 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |