annotate artifacts/src/main/java/org/dive4elements/river/exports/ChartInfoGenerator.java @ 7087:ada424214b02 generator-refactoring

Use Object instead of DOM Element as argument for setup of out generators. First step to remove dependency to XML DOM when using configuration.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 22 Sep 2013 21:05:12 +0200
parents 0a337f0005c2
children 41567bf1e131
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: 3422
diff changeset
9 package org.dive4elements.river.exports;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
11 import org.dive4elements.river.collections.D4EArtifactCollection;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3422
diff changeset
12 import org.dive4elements.river.java2d.NOPGraphics2D;
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: 5994
diff changeset
13 import org.dive4elements.river.themes.ThemeDocument;
1752
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
14
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import java.io.IOException;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 import java.io.OutputStream;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17
1752
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
18 import java.awt.Transparency;
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
19 import java.awt.Graphics2D;
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
20
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
21 import java.awt.geom.Rectangle2D;
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
22
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
23 import java.awt.image.BufferedImage;
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
24
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 import org.w3c.dom.Document;
7037
5c6fd2c010dd Add setup(Element config) method to Generator interface to be initialized from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6905
diff changeset
26 import org.w3c.dom.Element;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 import org.apache.log4j.Logger;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 import org.jfree.chart.ChartRenderingInfo;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 import org.jfree.chart.JFreeChart;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3422
diff changeset
33 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3422
diff changeset
34 import org.dive4elements.artifacts.CallContext;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3422
diff changeset
36 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3422
diff changeset
37 import org.dive4elements.artifactdatabase.state.Settings;
695
45cd58a2a2bb OutGenerators doOut() takes a facet object now instead of just its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 673
diff changeset
38
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3422
diff changeset
39 import org.dive4elements.artifacts.common.utils.XMLUtils;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 /**
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 * An OutGenerator that generates meta information for charts. A concrete
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 * ChartInfoGenerator need to instantiate a concrete ChartGenerator and dispatch
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 * the methods to that instance. The only thing this ChartInfoGenerator needs
3242
1dca41dba135 Move annotation code to base class ChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 2261
diff changeset
46 * to, is to overwrite the generate() method which doesn't write the chart image
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 * to the OutputStream but a Document that contains some meta information of the
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 * created chart.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 */
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 public abstract class ChartInfoGenerator implements OutGenerator {
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53
1752
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
54 public static final boolean USE_NOP_GRAPHICS =
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
55 Boolean.getBoolean("info.rendering.nop.graphics");
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
56
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 /** The logger used in this generator.*/
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 private static Logger logger =
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 Logger.getLogger(ChartInfoGenerator.class);
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 /** The OutGenerator that creates the charts.*/
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2057
diff changeset
63 protected ChartGenerator generator;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 protected OutputStream out;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2057
diff changeset
69 public ChartInfoGenerator(ChartGenerator generator) {
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 this.generator = generator;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72
7087
ada424214b02 Use Object instead of DOM Element as argument for setup of out generators. First step to remove dependency to XML DOM when using configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7077
diff changeset
73 public void setup(Object config) {
7037
5c6fd2c010dd Add setup(Element config) method to Generator interface to be initialized from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6905
diff changeset
74 logger.debug("ChartInfoGenerator.setup");
5c6fd2c010dd Add setup(Element config) method to Generator interface to be initialized from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6905
diff changeset
75 }
5c6fd2c010dd Add setup(Element config) method to Generator interface to be initialized from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6905
diff changeset
76
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 /**
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 * Dispatches the operation to the instantiated generator.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 * @param request
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 * @param out
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 * @param context
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 */
7077
0a337f0005c2 Extended init() of OutGenerator to take name of the out to serve.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7037
diff changeset
85 public void init(String outName, Document request, OutputStream out, CallContext context) {
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 this.out = out;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87
7077
0a337f0005c2 Extended init() of OutGenerator to take name of the out to serve.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7037
diff changeset
88 generator.init(outName, request, out, context);
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 /**
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93 * Dispatches the operation to the instantiated generator.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 *
1945
f2c14e09a8f1 Adjusted to doOut signature change.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1752
diff changeset
95 * @param master The master artifact
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 */
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 public void setMasterArtifact(Artifact master) {
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 generator.setMasterArtifact(master);
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102 /**
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103 * Dispatches the operation to the instantiated generator.
3422
118fe1cc8cc8 OutGenerators got a setCollection() method; analogous to setMasterArtifact(). Registered the SQOverviewGenerator as OutGenerator for 'sq_overview' Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3242
diff changeset
104 *
118fe1cc8cc8 OutGenerators got a setCollection() method; analogous to setMasterArtifact(). Registered the SQOverviewGenerator as OutGenerator for 'sq_overview' Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3242
diff changeset
105 * @param collection The collection.
118fe1cc8cc8 OutGenerators got a setCollection() method; analogous to setMasterArtifact(). Registered the SQOverviewGenerator as OutGenerator for 'sq_overview' Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3242
diff changeset
106 */
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
107 public void setCollection(D4EArtifactCollection collection) {
3422
118fe1cc8cc8 OutGenerators got a setCollection() method; analogous to setMasterArtifact(). Registered the SQOverviewGenerator as OutGenerator for 'sq_overview' Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3242
diff changeset
108 generator.setCollection(collection);
118fe1cc8cc8 OutGenerators got a setCollection() method; analogous to setMasterArtifact(). Registered the SQOverviewGenerator as OutGenerator for 'sq_overview' Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3242
diff changeset
109 }
118fe1cc8cc8 OutGenerators got a setCollection() method; analogous to setMasterArtifact(). Registered the SQOverviewGenerator as OutGenerator for 'sq_overview' Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3242
diff changeset
110
118fe1cc8cc8 OutGenerators got a setCollection() method; analogous to setMasterArtifact(). Registered the SQOverviewGenerator as OutGenerator for 'sq_overview' Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3242
diff changeset
111
118fe1cc8cc8 OutGenerators got a setCollection() method; analogous to setMasterArtifact(). Registered the SQOverviewGenerator as OutGenerator for 'sq_overview' Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3242
diff changeset
112 /**
118fe1cc8cc8 OutGenerators got a setCollection() method; analogous to setMasterArtifact(). Registered the SQOverviewGenerator as OutGenerator for 'sq_overview' Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3242
diff changeset
113 * Dispatches the operation to the instantiated generator.
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114 */
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: 5994
diff changeset
115 @Override
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
116 public void doOut(
1945
f2c14e09a8f1 Adjusted to doOut signature change.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1752
diff changeset
117 ArtifactAndFacet artifactFacet,
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: 5994
diff changeset
118 ThemeDocument attr,
1945
f2c14e09a8f1 Adjusted to doOut signature change.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1752
diff changeset
119 boolean visible
1684
bdb05dc9b763 Bugfix: #353 Enabled chart's to be drawn with proper axes set even if no data is contained.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
120 ) {
1945
f2c14e09a8f1 Adjusted to doOut signature change.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1752
diff changeset
121 generator.doOut(artifactFacet, attr, visible);
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 /**
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 * This method generates the chart using a concrete ChartGenerator but
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127 * doesn't write the chart itself to the OutputStream but a Document that
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128 * contains meta information of the created chart.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
129 */
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130 @Override
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
131 public void generate()
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132 throws IOException
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
133 {
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
134 logger.debug("ChartInfoGenerator.generate");
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
135
653
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
136 JFreeChart chart = generator.generateChart();
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
137
653
67c7020f4ed3 Refactored the chart creation in the ChartInfoGenerators. Now, every chart is created by the XYChartGenerator again.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
138 int[] size = generator.getSize();
2057
49b7c2b1a6a7 Make use of the export size for charts specified in ChartSettings if a chart export is requested.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2047
diff changeset
139 if (size == null) {
49b7c2b1a6a7 Make use of the export size for charts specified in ChartSettings if a chart export is requested.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2047
diff changeset
140 size = generator.getDefaultSize();
49b7c2b1a6a7 Make use of the export size for charts specified in ChartSettings if a chart export is requested.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2047
diff changeset
141 }
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
142
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
143 ChartRenderingInfo info = new ChartRenderingInfo();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
144
1752
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
145 long startTime = System.currentTimeMillis();
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
146
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
147 if (USE_NOP_GRAPHICS) {
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
148 BufferedImage image =
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
149 new BufferedImage(size[0], size[1], Transparency.BITMASK);
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
150
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
151 Graphics2D g2d = image.createGraphics();
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
152 Graphics2D nop = new NOPGraphics2D(g2d);
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
153
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
154 chart.draw(
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
155 nop,
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
156 new Rectangle2D.Double(0, 0, size[0], size[1]),
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
157 null,
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
158 info);
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
159
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
160 nop.dispose();
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
161 }
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
162 else {
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
163 chart.createBufferedImage(
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
164 size[0], size[1], Transparency.BITMASK, info);
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
165 }
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
166
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
167 long stopTime = System.currentTimeMillis();
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
168
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
169 if (logger.isDebugEnabled()) {
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
170 logger.debug("Rendering info took: " +
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
171 (stopTime-startTime) + "ms");
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
172 }
b7b424ae32a8 Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1684
diff changeset
173
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
174
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 655
diff changeset
175 InfoGeneratorHelper helper = new InfoGeneratorHelper(generator);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 655
diff changeset
176 Document doc = helper.createInfoDocument(chart, info);
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
177
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
178 XMLUtils.toStream(doc, out);
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
179 }
1979
a7c437c9547e Added a getSettings() operation to OutGenerator - FLYSArtifactCollection will now evaluate all available Outputs and create initial Settings using OutGenerators if the Settings for an Output is missing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
180
a7c437c9547e Added a getSettings() operation to OutGenerator - FLYSArtifactCollection will now evaluate all available Outputs and create initial Settings using OutGenerators if the Settings for an Output is missing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
181
a7c437c9547e Added a getSettings() operation to OutGenerator - FLYSArtifactCollection will now evaluate all available Outputs and create initial Settings using OutGenerators if the Settings for an Output is missing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
182 /**
2047
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
183 * A proxy method which calls <i>generator</i>.getSettings() and returns its
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
184 * return value.
1979
a7c437c9547e Added a getSettings() operation to OutGenerator - FLYSArtifactCollection will now evaluate all available Outputs and create initial Settings using OutGenerators if the Settings for an Output is missing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
185 *
2047
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
186 * @return a Settings object provided by <i>generator</i>.
1979
a7c437c9547e Added a getSettings() operation to OutGenerator - FLYSArtifactCollection will now evaluate all available Outputs and create initial Settings using OutGenerators if the Settings for an Output is missing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
187 */
2047
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
188 @Override
1979
a7c437c9547e Added a getSettings() operation to OutGenerator - FLYSArtifactCollection will now evaluate all available Outputs and create initial Settings using OutGenerators if the Settings for an Output is missing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
189 public Settings getSettings() {
2047
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
190 return generator.getSettings();
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
191 }
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
192
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
193
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
194 /**
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
195 * A proxy method which calls <i>generator</i>.setSettings().
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
196 *
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
197 * @param settings A settings object for the <i>generator</i>.
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
198 */
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
199 @Override
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
200 public void setSettings(Settings settings) {
0318fa6f0844 Make use of first attributes specified in the ChartSettings. NOTE: work is still in progress.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1979
diff changeset
201 generator.setSettings(settings);
1979
a7c437c9547e Added a getSettings() operation to OutGenerator - FLYSArtifactCollection will now evaluate all available Outputs and create initial Settings using OutGenerators if the Settings for an Output is missing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1948
diff changeset
202 }
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
203 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
204 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org