Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/ChartGenerator2.java @ 9123:1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
author | gernotbelger |
---|---|
date | Tue, 05 Jun 2018 19:21:16 +0200 |
parents | 07d51fd4864c |
children | ef5754ba5573 |
rev | line source |
---|---|
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5867
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5867
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4858
diff
changeset
|
9 package org.dive4elements.river.exports; |
348
635af5381a4d
Added an abstract OutGenerator that should be the base class for all generators which create charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
11 import static org.dive4elements.river.exports.injector.InjectorConstants.CURRENT_KM; |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
12 |
3257
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
13 import java.awt.Font; |
7079
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
14 import java.awt.Graphics2D; |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
15 import java.awt.Transparency; |
3257
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
16 import java.awt.geom.Rectangle2D; |
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
17 import java.awt.image.BufferedImage; |
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
18 import java.io.IOException; |
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
19 import java.io.OutputStream; |
8076
e1b49fc9d2b5
Fixed sub title zoom stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8074
diff
changeset
|
20 import java.text.NumberFormat; |
8892
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8885
diff
changeset
|
21 import java.util.HashMap; |
3257
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
22 import java.util.Map; |
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
23 import java.util.SortedMap; |
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
24 import java.util.TreeMap; |
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
25 |
7079
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
26 import org.dive4elements.artifacts.CallContext; |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
27 import org.dive4elements.artifacts.common.utils.XMLUtils; |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
28 import org.dive4elements.river.java2d.NOPGraphics2D; |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
29 import org.dive4elements.river.jfree.RiverAnnotation; |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
30 import org.dive4elements.river.utils.Formatter; |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
31 import org.jfree.chart.ChartRenderingInfo; |
3257
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
32 import org.jfree.chart.JFreeChart; |
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
33 import org.jfree.chart.axis.NumberAxis; |
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
34 import org.jfree.chart.plot.XYPlot; |
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
35 import org.jfree.data.Range; |
2aca387333d6
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3250
diff
changeset
|
36 import org.w3c.dom.Document; |
8370
e1ff1263d79a
Fixed W/Q diagram subtitle in fix analysis.
Raimund Renkert <rrenkert@intevation.de>
parents:
8341
diff
changeset
|
37 |
348
635af5381a4d
Added an abstract OutGenerator that should be the base class for all generators which create charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
38 /** |
7043
06a9a241faac
Factor out annotation handling code
Andre Heinecke <aheinecke@intevation.de>
parents:
7034
diff
changeset
|
39 * Implementation of the OutGenerator interface for charts. |
06a9a241faac
Factor out annotation handling code
Andre Heinecke <aheinecke@intevation.de>
parents:
7034
diff
changeset
|
40 * It should provide some basic things that equal in all chart types. |
348
635af5381a4d
Added an abstract OutGenerator that should be the base class for all generators which create charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
41 * |
635af5381a4d
Added an abstract OutGenerator that should be the base class for all generators which create charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
42 */ |
9104 | 43 public abstract class ChartGenerator2 extends AbstractChartGenerator { |
348
635af5381a4d
Added an abstract OutGenerator that should be the base class for all generators which create charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
44 |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
45 private static final boolean USE_NOP_GRAPHICS = Boolean.getBoolean("info.rendering.nop.graphics"); |
2238
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
46 |
8341
130160b8d245
Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents:
8317
diff
changeset
|
47 /** Map of annotations to add at specific Y-axis. */ |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
48 protected SortedMap<Integer, RiverAnnotation> yAnnotations = new TreeMap<>(); |
7077
0a337f0005c2
Extended init() of OutGenerator to take name of the out to serve.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7068
diff
changeset
|
49 |
8892
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8885
diff
changeset
|
50 private Map<String, IdentifiableNumberAxis> axisNameToAxis = new HashMap<>(); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8885
diff
changeset
|
51 |
8341
130160b8d245
Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents:
8317
diff
changeset
|
52 public void addYAnnotation(RiverAnnotation annotation, int axisIndex) { |
130160b8d245
Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents:
8317
diff
changeset
|
53 yAnnotations.put(axisIndex, annotation); |
130160b8d245
Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents:
8317
diff
changeset
|
54 } |
130160b8d245
Introduce annotations, which know to which axis they belong.
Tom Gottfried <tom@intevation.de>
parents:
8317
diff
changeset
|
55 |
3278
c27c4e06dd87
Re-add HYK rendering code to CrossSectionGenerator
Christian Lins <christian.lins@intevation.de>
parents:
3270
diff
changeset
|
56 @Override |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
57 protected void doGenerate(final CallContext context, final OutputStream out, final String outName) throws IOException { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8076
diff
changeset
|
58 log.debug("ChartGenerator2.generate"); |
2234
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
59 |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
60 if (outName.indexOf("chartinfo") > 0) |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
61 generateInfo(context, out); |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
62 else |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
63 generateImage(context); |
7079
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
64 } |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
65 |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
66 /** |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
67 * Generate only meta infos |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
68 */ |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
69 private void generateInfo(final CallContext context, final OutputStream out) { |
7079
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
70 |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8076
diff
changeset
|
71 log.debug("ChartInfoGenerator2.generateInfo"); |
7079
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
72 |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
73 JFreeChart chart = generateChart(context); |
7079
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
74 |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
75 int[] size = getSize(); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
76 if (size == null) { |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
77 size = getDefaultSize(); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
78 } |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
79 |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
80 ChartRenderingInfo info = new ChartRenderingInfo(); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
81 |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
82 long startTime = System.currentTimeMillis(); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
83 |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
84 if (USE_NOP_GRAPHICS) { |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
85 BufferedImage image = |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
86 new BufferedImage(size[0], size[1], Transparency.BITMASK); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
87 |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
88 Graphics2D g2d = image.createGraphics(); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
89 Graphics2D nop = new NOPGraphics2D(g2d); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
90 |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
91 chart.draw( |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
92 nop, |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
93 new Rectangle2D.Double(0, 0, size[0], size[1]), |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
94 null, |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
95 info); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
96 |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
97 nop.dispose(); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
98 } |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
99 else { |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
100 chart.createBufferedImage( |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
101 size[0], size[1], Transparency.BITMASK, info); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
102 } |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
103 |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
104 long stopTime = System.currentTimeMillis(); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
105 |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8076
diff
changeset
|
106 if (log.isDebugEnabled()) { |
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8076
diff
changeset
|
107 log.debug("Rendering info took: " + |
7079
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
108 (stopTime-startTime) + "ms"); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
109 } |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
110 |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
111 |
7084
f0731aa7b735
Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents:
7079
diff
changeset
|
112 InfoGeneratorHelper2 helper = new InfoGeneratorHelper2(this); |
7079
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
113 Document doc = helper.createInfoDocument(chart, info); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
114 |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
115 XMLUtils.toStream(doc, out); |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
116 } |
48e30e2c5db9
ChartGenerator2 can be used as ChartInfoGenerator, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7077
diff
changeset
|
117 |
2236
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
118 /** |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
119 * Creates a new <i>ChartSection</i>. |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
120 * |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
121 * @return a new <i>ChartSection</i>. |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
122 */ |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
123 @Override |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
124 protected ChartSection buildChartSection(final CallContext context) { |
2236
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
125 ChartSection chartSection = new ChartSection(); |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
126 chartSection.setTitle(getChartTitle(context)); |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
127 chartSection.setSubtitle(getChartSubtitlePure(context)); |
3613
dd6e25980c91
Fixed typo.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3555
diff
changeset
|
128 chartSection.setDisplayGrid(isGridVisible()); |
3615
f84854eba0b3
Preparations for logo inclusion in charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3613
diff
changeset
|
129 chartSection.setDisplayLogo(showLogo()); |
3618
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
130 chartSection.setLogoVPlacement(logoVPlace()); |
b7867c03760a
Split logo placement property in two (vertical/horizontal).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3617
diff
changeset
|
131 chartSection.setLogoHPlacement(logoHPlace()); |
2236
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
132 return chartSection; |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
133 } |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
134 |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
135 protected String interpolateVariables(final CallContext context, String s) { |
8732
c0c162d7cb0e
(issue1754) Handle the case if no radius is given.
Tom Gottfried <tom@intevation.de>
parents:
8387
diff
changeset
|
136 log.debug("Interpolate variables in string '" + s + "'"); |
8074
bd0dfa57b1fe
flys/issue1262: Introduce variable $RADIUS to be used in user defined chart sub titles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7974
diff
changeset
|
137 Object radius = context.getContextValue("radius"); |
bd0dfa57b1fe
flys/issue1262: Introduce variable $RADIUS to be used in user defined chart sub titles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7974
diff
changeset
|
138 if (radius instanceof Double) { |
8076
e1b49fc9d2b5
Fixed sub title zoom stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8074
diff
changeset
|
139 NumberFormat f = Formatter.getCSVFormatter(context); |
8732
c0c162d7cb0e
(issue1754) Handle the case if no radius is given.
Tom Gottfried <tom@intevation.de>
parents:
8387
diff
changeset
|
140 s = s.replace("$RADIUS", f.format(radius) + " km"); |
8074
bd0dfa57b1fe
flys/issue1262: Introduce variable $RADIUS to be used in user defined chart sub titles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7974
diff
changeset
|
141 } |
8732
c0c162d7cb0e
(issue1754) Handle the case if no radius is given.
Tom Gottfried <tom@intevation.de>
parents:
8387
diff
changeset
|
142 else { |
c0c162d7cb0e
(issue1754) Handle the case if no radius is given.
Tom Gottfried <tom@intevation.de>
parents:
8387
diff
changeset
|
143 s = s.replace("$RADIUS", "-"); |
c0c162d7cb0e
(issue1754) Handle the case if no radius is given.
Tom Gottfried <tom@intevation.de>
parents:
8387
diff
changeset
|
144 } |
c0c162d7cb0e
(issue1754) Handle the case if no radius is given.
Tom Gottfried <tom@intevation.de>
parents:
8387
diff
changeset
|
145 |
8370
e1ff1263d79a
Fixed W/Q diagram subtitle in fix analysis.
Raimund Renkert <rrenkert@intevation.de>
parents:
8341
diff
changeset
|
146 Object km = context.getContextValue(CURRENT_KM); |
e1ff1263d79a
Fixed W/Q diagram subtitle in fix analysis.
Raimund Renkert <rrenkert@intevation.de>
parents:
8341
diff
changeset
|
147 if (km instanceof Number && s.contains("$KM")) { |
8387
8c60595fd74c
Unify discharge curve subtitles.
Tom Gottfried <tom@intevation.de>
parents:
8370
diff
changeset
|
148 NumberFormat f = Formatter.getCalculationKm(context.getMeta()); |
8732
c0c162d7cb0e
(issue1754) Handle the case if no radius is given.
Tom Gottfried <tom@intevation.de>
parents:
8387
diff
changeset
|
149 s = s.replace("$KM", f.format(km)); |
8370
e1ff1263d79a
Fixed W/Q diagram subtitle in fix analysis.
Raimund Renkert <rrenkert@intevation.de>
parents:
8341
diff
changeset
|
150 } |
8732
c0c162d7cb0e
(issue1754) Handle the case if no radius is given.
Tom Gottfried <tom@intevation.de>
parents:
8387
diff
changeset
|
151 |
8074
bd0dfa57b1fe
flys/issue1262: Introduce variable $RADIUS to be used in user defined chart sub titles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7974
diff
changeset
|
152 return s; |
bd0dfa57b1fe
flys/issue1262: Introduce variable $RADIUS to be used in user defined chart sub titles.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7974
diff
changeset
|
153 } |
2234
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
154 |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
155 /** |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
156 * Returns the subtitle of a chart. The return value depends on the |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
157 * existence of ChartSettings: if there are ChartSettings set, this method |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
158 * returns the chart title provided by those settings. Otherwise, this |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
159 * method returns getDefaultChartSubtitle(). |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
160 * @param context |
2234
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
161 * |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
162 * @return the subtitle of a chart. |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
163 */ |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
164 protected String getChartSubtitlePure(CallContext context) { |
2234
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
165 ChartSettings chartSettings = getChartSettings(); |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
166 |
8076
e1b49fc9d2b5
Fixed sub title zoom stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8074
diff
changeset
|
167 String subTitle = chartSettings != null |
e1b49fc9d2b5
Fixed sub title zoom stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8074
diff
changeset
|
168 ? getChartSubtitle(chartSettings) |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
169 : getDefaultChartSubtitle(context); |
8076
e1b49fc9d2b5
Fixed sub title zoom stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8074
diff
changeset
|
170 |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
171 String defSubTitle = getDefaultChartSubtitle(context); |
8076
e1b49fc9d2b5
Fixed sub title zoom stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8074
diff
changeset
|
172 |
e1b49fc9d2b5
Fixed sub title zoom stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8074
diff
changeset
|
173 if (subTitle == null) { |
e1b49fc9d2b5
Fixed sub title zoom stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8074
diff
changeset
|
174 subTitle = defSubTitle != null ? defSubTitle : ""; |
2234
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
175 } |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
176 |
8076
e1b49fc9d2b5
Fixed sub title zoom stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8074
diff
changeset
|
177 return subTitle; |
e1b49fc9d2b5
Fixed sub title zoom stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8074
diff
changeset
|
178 } |
e1b49fc9d2b5
Fixed sub title zoom stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8074
diff
changeset
|
179 |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
180 @Override |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
181 protected String getChartSubtitle(CallContext context) { |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
182 return interpolateVariables(context, getChartSubtitlePure(context)); |
2234
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
183 } |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
184 |
7068
726d998dce29
Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7043
diff
changeset
|
185 /** |
726d998dce29
Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7043
diff
changeset
|
186 * Glue between axis names and index. |
726d998dce29
Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7043
diff
changeset
|
187 */ |
726d998dce29
Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7043
diff
changeset
|
188 protected abstract String axisIndexToName(int index); |
2234
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
189 |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
190 /** |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
191 * This method returns the font size for an Y axis. If the font size is |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
192 * specified in ChartSettings (if <i>chartSettings</i> is set), this size is |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
193 * returned. Otherwise the default font size 12 is returned. |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
194 * |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
195 * @return the font size for the x axis. |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
196 */ |
7068
726d998dce29
Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7043
diff
changeset
|
197 protected int getYAxisFontSize(int index) { |
2234
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
198 ChartSettings chartSettings = getChartSettings(); |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
199 if (chartSettings == null) { |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
200 return DEFAULT_FONT_SIZE; |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
201 } |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
202 |
7068
726d998dce29
Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7043
diff
changeset
|
203 AxisSection as = chartSettings.getAxisSection(axisIndexToName(index)); |
4376
3c8964855270
Avoid NullPointerExceptions if no settings are available
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4276
diff
changeset
|
204 if (as == null) { |
3c8964855270
Avoid NullPointerExceptions if no settings are available
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4276
diff
changeset
|
205 return DEFAULT_FONT_SIZE; |
3c8964855270
Avoid NullPointerExceptions if no settings are available
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4276
diff
changeset
|
206 } |
2234
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
207 Integer fontSize = as.getFontSize(); |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
208 |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
209 return fontSize != null ? fontSize : DEFAULT_FONT_SIZE; |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
210 } |
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
211 |
7084
f0731aa7b735
Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents:
7079
diff
changeset
|
212 protected abstract String getYAxisLabel(String axisName); |
2233
958a10e2e246
Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2141
diff
changeset
|
213 |
2234
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
214 /** |
2236
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
215 * This method searches for a specific axis in the <i>settings</i> if |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
216 * <i>settings</i> is set. If the axis was found, this method returns the |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
217 * specified axis range if the axis range is fixed. Otherwise, this method |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
218 * returns null. |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
219 * |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
220 * @param axisId The identifier of an axis. |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
221 * |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
222 * @return the specified axis range from <i>settings</i> if the axis is |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
223 * fixed, otherwise null. |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
224 */ |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
225 public Range getRangeForAxisFromSettings(String axisId) { |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
226 ChartSettings chartSettings = getChartSettings(); |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
227 if (chartSettings == null) { |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
228 return null; |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
229 } |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
230 |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
231 AxisSection as = chartSettings.getAxisSection(axisId); |
4376
3c8964855270
Avoid NullPointerExceptions if no settings are available
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4276
diff
changeset
|
232 |
3c8964855270
Avoid NullPointerExceptions if no settings are available
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4276
diff
changeset
|
233 if (as == null) { |
3c8964855270
Avoid NullPointerExceptions if no settings are available
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4276
diff
changeset
|
234 return null; |
3c8964855270
Avoid NullPointerExceptions if no settings are available
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4276
diff
changeset
|
235 } |
3c8964855270
Avoid NullPointerExceptions if no settings are available
Björn Ricks <bjoern.ricks@intevation.de>
parents:
4276
diff
changeset
|
236 |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
237 if (as.isFixed()) { |
2236
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
238 Double upper = as.getUpperRange(); |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
239 Double lower = as.getLowerRange(); |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
240 |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
241 if (upper != null && lower != null) { |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
242 return lower < upper |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
243 ? new Range(lower, upper) |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
244 : new Range(upper, lower); |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
245 } |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
246 } |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
247 |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
248 return null; |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
249 } |
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
250 |
2242
7e8e1d5384c0
Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2238
diff
changeset
|
251 /** |
2233
958a10e2e246
Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2141
diff
changeset
|
252 * Creates a new instance of <i>IdentifiableNumberAxis</i>. |
958a10e2e246
Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2141
diff
changeset
|
253 * |
958a10e2e246
Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2141
diff
changeset
|
254 * @param idx The index of the new axis. |
958a10e2e246
Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2141
diff
changeset
|
255 * @param label The label of the new axis. |
958a10e2e246
Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2141
diff
changeset
|
256 * |
958a10e2e246
Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2141
diff
changeset
|
257 * @return an instance of IdentifiableNumberAxis. |
958a10e2e246
Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2141
diff
changeset
|
258 */ |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
259 protected final NumberAxis createNumberAxis(int idx, String label) { |
7068
726d998dce29
Remove Axis Walker, unabstract Diagram generator
Andre Heinecke <aheinecke@intevation.de>
parents:
7043
diff
changeset
|
260 return new IdentifiableNumberAxis(axisIndexToName(idx), label); |
2233
958a10e2e246
Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2141
diff
changeset
|
261 } |
2234
46ec09c7f578
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2233
diff
changeset
|
262 |
2236
c2b15d9c0f43
Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2234
diff
changeset
|
263 /** |
2238
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
264 * Create Y (range) axis for given index. |
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
265 * Shall be overriden by subclasses. |
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
266 */ |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
267 @Override |
2238
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
268 protected NumberAxis createYAxis(int index) { |
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
269 |
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
270 Font labelFont = new Font( |
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
271 DEFAULT_FONT_NAME, |
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
272 Font.BOLD, |
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
273 getYAxisFontSize(index)); |
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
274 |
7084
f0731aa7b735
Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents:
7079
diff
changeset
|
275 String axisName = axisIndexToName(index); |
f0731aa7b735
Implement Label handling
Andre Heinecke <aheinecke@intevation.de>
parents:
7079
diff
changeset
|
276 |
8892
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8885
diff
changeset
|
277 IdentifiableNumberAxis axis = new IdentifiableNumberAxis(axisName, getYAxisLabel(axisName)); |
2238
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
278 |
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
279 axis.setAutoRangeIncludesZero(false); |
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
280 axis.setLabelFont(labelFont); |
2590
d75b427da50a
#522 Modified axes creation: label and tick label fonts will now always be the same.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2587
diff
changeset
|
281 axis.setTickLabelFont(labelFont); |
8885
e5f688820951
Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents:
8856
diff
changeset
|
282 // REMARK: we overwrite the default values to 0.0, because in earlier version margins were never applied. |
e5f688820951
Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents:
8856
diff
changeset
|
283 axis.setLowerMargin(0); |
e5f688820951
Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents:
8856
diff
changeset
|
284 axis.setUpperMargin(0); |
2238
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
285 |
8892
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8885
diff
changeset
|
286 /* remember axis for lookup */ |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8885
diff
changeset
|
287 axisNameToAxis.put( axisName, axis ); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8885
diff
changeset
|
288 |
2238
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
289 return axis; |
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
290 } |
23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2236
diff
changeset
|
291 |
8892
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8885
diff
changeset
|
292 public final IdentifiableNumberAxis getAxis(final String axisName) { |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8885
diff
changeset
|
293 return axisNameToAxis.get(axisName); |
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8885
diff
changeset
|
294 } |
8935 | 295 |
296 /** Returns the number of registered y-axes */ | |
297 public final int getNumYAxes() { | |
298 return axisNameToAxis.size(); | |
299 } | |
9123
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
300 |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
301 protected final void addYAnnotationsToRenderer(final XYPlot plot) { |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
302 final AnnotationRenderer annotationRenderer = new AnnotationRenderer(getChartSettings(), getDatasets(), DEFAULT_FONT_NAME); |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
303 annotationRenderer.addYAnnotationsToRenderer(plot, this.yAnnotations); |
1cc7653ca84f
Cleanup of ChartGenerator and ChartGenerator2 code. Put some of the copy/pasted code into a common abstraction.
gernotbelger
parents:
9104
diff
changeset
|
304 } |
8892
87a242425467
Introduced ChartExtender that allows to tweak the charts for very specific use cases.
gernotbelger
parents:
8885
diff
changeset
|
305 } |