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 :

http://dive4elements.wald.intevation.org