Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/process/BedDiffHeightYearProcessor.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 | aef7542dd3ca |
children | 8dbb969091c5 |
rev | line source |
---|---|
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
3 * |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
7 */ |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
8 |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.exports.process; |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
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 |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
13 import org.apache.log4j.Logger; |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
14 import org.jfree.data.xy.XYSeries; |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
15 |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
16 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
17 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:
7683
diff
changeset
|
18 import org.dive4elements.river.artifacts.D4EArtifact; |
ea6b441b4872
Calculate the zoom dependent radius and add the informations to chart subtitle.
Raimund Renkert <rrenkert@intevation.de>
parents:
7683
diff
changeset
|
19 import org.dive4elements.river.artifacts.access.RiverAccess; |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
20 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:
7683
diff
changeset
|
21 import org.dive4elements.river.artifacts.resources.Resources; |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
22 import org.dive4elements.river.exports.StyledSeriesBuilder; |
7075
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
23 import org.dive4elements.river.exports.DiagramGenerator; |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
24 import org.dive4elements.river.exports.XYChartGenerator; |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
25 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:
6778
diff
changeset
|
26 import org.dive4elements.river.themes.ThemeDocument; |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
27 |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
28 |
7058
5c07024cdc24
Fix indention / line length
Andre Heinecke <aheinecke@intevation.de>
parents:
7057
diff
changeset
|
29 public class BedDiffHeightYearProcessor |
5c07024cdc24
Fix indention / line length
Andre Heinecke <aheinecke@intevation.de>
parents:
7057
diff
changeset
|
30 extends DefaultProcessor implements FacetTypes { |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
31 |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8022
diff
changeset
|
32 private final static Logger log = |
6567
e8de5e135bf3
Moved BedDiffYearProcessor to BedDiffHeightYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6566
diff
changeset
|
33 Logger.getLogger(BedDiffHeightYearProcessor.class); |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
34 |
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
|
35 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
|
36 |
7142
8c70767028e1
Configure BedDiffYear diagram and remove old generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
37 public static final String I18N_AXIS_LABEL = |
8c70767028e1
Configure BedDiffYear diagram and remove old generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
38 "chart.beddifference.height.yaxis.label"; |
8c70767028e1
Configure BedDiffYear diagram and remove old generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
39 public static final String I18N_AXIS_LABEL_DEFAULT = |
8c70767028e1
Configure BedDiffYear diagram and remove old generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
40 "delta S [cm / Jahr]"; |
8c70767028e1
Configure BedDiffYear diagram and remove old generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
41 |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
42 @Override |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
43 public void doOut( |
7075
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
44 DiagramGenerator generator, |
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
45 ArtifactAndFacet bundle, |
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
46 ThemeDocument theme, |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
47 boolean visible |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
48 ) { |
7075
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
49 CallContext context = generator.getCallContext(); |
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
50 Object data = bundle.getData(context); |
7892
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
51 Map<String, String> metaData = bundle.getFacet().getMetaData( |
e844be34a606
Add metadata to chart series and datasets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7808
diff
changeset
|
52 bundle.getArtifact(), context); |
7075
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
53 |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
54 if (!(data instanceof double[][])) { |
7550
13876b523e33
Minor refactoring for future readability and refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7142
diff
changeset
|
55 // Should not happen if canHandle is correct |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8022
diff
changeset
|
56 log.error("Can't process " + data.getClass().getName() + " objects"); |
7075
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
57 return; |
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
58 } |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
59 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
60 double[][] bData = (double[][]) data; |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
61 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
62 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
|
63 series.putMetaData(metaData, bundle.getArtifact(), context); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
64 |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
65 StyledSeriesBuilder.addPoints(series, bData, false, GAP_TOLERANCE); |
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 generator.addAxisSeries(series, axisName, visible); |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
68 } |
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
69 |
7075
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
70 @Override |
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
71 public void doOut( |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
72 XYChartGenerator generator, |
7075
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
73 ArtifactAndFacet bundle, |
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:
6778
diff
changeset
|
74 ThemeDocument theme, |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
75 boolean visible, |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
76 int index |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
77 ) { |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
78 CallContext context = generator.getCallContext(); |
7075
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
79 Object data = bundle.getData(context); |
253d80af5b7f
More Processor refactoring
Andre Heinecke <aheinecke@intevation.de>
parents:
7058
diff
changeset
|
80 |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
81 if (!(data instanceof double[][])) { |
7550
13876b523e33
Minor refactoring for future readability and refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7142
diff
changeset
|
82 // Should not happen if canHandle is correct |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8022
diff
changeset
|
83 log.error("Can't process " + data.getClass().getName() + " objects"); |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
84 return; |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
85 } |
7550
13876b523e33
Minor refactoring for future readability and refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7142
diff
changeset
|
86 |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
87 double[][] bData = (double[][]) data; |
7550
13876b523e33
Minor refactoring for future readability and refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7142
diff
changeset
|
88 XYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme); |
7985
10debf4b82be
Split bed differences facet into data specific facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7892
diff
changeset
|
89 StyledSeriesBuilder.addPoints(series, bData, false, GAP_TOLERANCE); |
7550
13876b523e33
Minor refactoring for future readability and refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7142
diff
changeset
|
90 |
13876b523e33
Minor refactoring for future readability and refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7142
diff
changeset
|
91 generator.addAxisSeries(series, index, visible); |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
92 } |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
93 |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
94 @Override |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
95 public boolean canHandle(String facetType) { |
6583
e7e5b40cccc3
Commit omitted patch for BedDiffHeightYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6573
diff
changeset
|
96 return BED_DIFFERENCE_HEIGHT_YEAR.equals(facetType) // from BedDiffYearHeight |
e7e5b40cccc3
Commit omitted patch for BedDiffHeightYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6573
diff
changeset
|
97 || BED_DIFFERENCE_HEIGHT_YEAR_FILTERED.equals(facetType) // from BedDiffYearHeight |
7683
28758f51f1b2
issue1594/issue1603: Put bed_differences to correct axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7551
diff
changeset
|
98 ; |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
99 } |
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
100 |
7142
8c70767028e1
Configure BedDiffYear diagram and remove old generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
101 |
8c70767028e1
Configure BedDiffYear diagram and remove old generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
102 @Override |
8c70767028e1
Configure BedDiffYear diagram and remove old generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
103 public String getAxisLabel(DiagramGenerator generator) { |
8c70767028e1
Configure BedDiffYear diagram and remove old generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
104 return generator.msg( |
8c70767028e1
Configure BedDiffYear diagram and remove old generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
105 I18N_AXIS_LABEL, |
8c70767028e1
Configure BedDiffYear diagram and remove old generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
106 I18N_AXIS_LABEL_DEFAULT); |
8c70767028e1
Configure BedDiffYear diagram and remove old generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
107 } |
8c70767028e1
Configure BedDiffYear diagram and remove old generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7075
diff
changeset
|
108 |
6566
88b9b666872e
Minor refactoring to use processor and later use processor in WINFO-Diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
109 } |
6567
e8de5e135bf3
Moved BedDiffYearProcessor to BedDiffHeightYearProcessor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6566
diff
changeset
|
110 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |