Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/ChartExportHelper.java @ 9801:1d7a72a50183 3.2.x tip
Assume Compose V2, consistently
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 23 Nov 2023 10:14:13 +0100 |
parents | 0a5239a1e46e |
children |
rev | line source |
---|---|
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5862
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:
5862
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5862
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
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:
5862
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
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:
5862
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5862
diff
changeset
|
8 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3284
diff
changeset
|
9 package org.dive4elements.river.exports; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
11 import com.lowagie.text.Document; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
12 import com.lowagie.text.DocumentException; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
13 import com.lowagie.text.PageSize; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
14 import com.lowagie.text.Rectangle; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
15 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
16 import com.lowagie.text.pdf.PdfContentByte; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
17 import com.lowagie.text.pdf.PdfTemplate; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
18 import com.lowagie.text.pdf.PdfWriter; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
19 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
20 import java.awt.Graphics2D; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
21 import java.awt.Transparency; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
22 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
23 import java.awt.geom.Rectangle2D; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
24 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
25 import java.io.IOException; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
26 import java.io.OutputStream; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
27 import java.io.OutputStreamWriter; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
28 import java.io.UnsupportedEncodingException; |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
29 |
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
30 import java.text.NumberFormat; |
7893
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
31 import java.util.Map; |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
32 |
1036
e6aff80b59ff
Added proof-of-concept collision detection for text annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
714
diff
changeset
|
33 import org.jfree.chart.ChartRenderingInfo; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
34 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
35 import javax.imageio.ImageIO; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
36 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
37 import au.com.bytecode.opencsv.CSVWriter; |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
38 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
39 import org.apache.batik.svggen.SVGGraphics2D; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
40 import org.apache.batik.svggen.SVGGraphics2DIOException; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
41 |
9726 | 42 import org.apache.logging.log4j.Logger; |
43 import org.apache.logging.log4j.LogManager; | |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
44 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
45 import org.jfree.chart.JFreeChart; |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
46 import org.jfree.chart.plot.XYPlot; |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
47 import org.jfree.data.xy.XYDataset; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
48 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3284
diff
changeset
|
49 import org.dive4elements.artifacts.CallContext; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
50 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3284
diff
changeset
|
51 import org.dive4elements.artifacts.common.utils.XMLUtils; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
52 |
7893
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
53 import org.dive4elements.river.jfree.XYMetaSeriesCollection; |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
54 import org.dive4elements.river.utils.Formatter; |
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
55 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
56 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
57 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
58 * This class is a helper class which supports some methods to export charts |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
59 * into specific formats. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
60 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
61 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
62 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
63 public class ChartExportHelper { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
64 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
65 public static final String FORMAT_PNG = "png"; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
66 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
67 public static final String FORMAT_PDF = "pdf"; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
68 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
69 public static final String FORMAT_SVG = "svg"; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
70 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
71 public static final String FORMAT_CSV = "csv"; |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
72 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
73 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
74 * Constant field to define A4 as default page size. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
75 */ |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
76 public static final String DEFAULT_PAGE_SIZE = "A4"; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
77 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
78 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
79 * Constant field to define UTF-8 as default encoding. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
80 */ |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
81 public static final String DEFAULT_ENCODING = "UTF-8"; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
82 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
83 /** The default separator for the CSV export. */ |
7045
1f6c0915a58d
issue971: Use ";" as CSV separator also in ChartExportHelper, with the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5994
diff
changeset
|
84 public static final char DEFAULT_CSV_SEPARATOR = ';'; |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
85 |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
86 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
87 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
88 * Logger used for logging with log4j. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
89 */ |
9726 | 90 private static Logger log = LogManager.getLogger(ChartExportHelper.class); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
91 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
92 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
93 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
94 * A method to export a <code>JFreeChart</code> as image to an |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
95 * <code>OutputStream</code> with a given format, width and height. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
96 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
97 * @param out OutputStream |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
98 * @param chart JFreeChart object to be exported. |
3270
4ac581062c40
Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2231
diff
changeset
|
99 * @param cc context, in which e.g. size is stored. |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
100 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
101 * @throws IOException if writing image to OutputStream failed. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
102 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
103 public static void exportImage( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
104 OutputStream out, |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
105 JFreeChart chart, |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
106 CallContext cc |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
107 ) |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
108 throws IOException |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
109 { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
110 log.info("export chart as png"); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
111 |
1036
e6aff80b59ff
Added proof-of-concept collision detection for text annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
714
diff
changeset
|
112 ChartRenderingInfo info = new ChartRenderingInfo(); |
e6aff80b59ff
Added proof-of-concept collision detection for text annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
714
diff
changeset
|
113 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
114 String format = (String) cc.getContextValue("chart.image.format"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
115 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
116 int[] size = getSize(cc); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
117 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
118 ImageIO.write( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
119 chart.createBufferedImage( |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
120 size[0], size[1], Transparency.BITMASK, info |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
121 ), |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
122 format, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
123 out |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
124 ); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
125 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
126 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
127 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
128 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
129 * A method to export a <code>JFreeChart</code> as SVG to an |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
130 * <code>OutputStream</code>. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
131 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
132 * @param out OutputStream |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
133 * @param chart JFreeChart to be exported |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
134 * @param context The CallContext object that contains extra chart |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
135 * parameters. |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
136 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
137 public static void exportSVG( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
138 OutputStream out, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
139 JFreeChart chart, |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
140 CallContext context |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
141 ) { |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
142 String encoding = (String) context.getContextValue("chart.encoding"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
143 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
144 log.info("export chart as svg"); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
145 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
146 if (encoding == null) |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
147 encoding = DEFAULT_ENCODING; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
148 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
149 org.w3c.dom.Document document = XMLUtils.newDocument(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
150 SVGGraphics2D graphics = new SVGGraphics2D(document); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
151 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
152 int[] size = getSize(context); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
153 |
2160
8428de5846e8
Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1735
diff
changeset
|
154 ChartRenderingInfo info = new ChartRenderingInfo(); |
8428de5846e8
Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1735
diff
changeset
|
155 |
8856 | 156 chart.draw( |
157 graphics, | |
158 new Rectangle2D.Double(0.0D, 0.0D,size[0],size[1]), | |
159 info); | |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
160 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
161 try { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
162 graphics.stream(new OutputStreamWriter(out, encoding)); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
163 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
164 catch (SVGGraphics2DIOException svge) { |
8856 | 165 log.error( |
166 "Error while writing svg export to output stream.", svge); | |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
167 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
168 catch (UnsupportedEncodingException uee) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
169 log.error("Unsupported encoding: " + encoding, uee); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
170 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
171 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
172 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
173 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
174 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
175 * A method to export a <code>JFreeChart</code> as PDF to an |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
176 * <code>OutputStream</code>. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
177 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
178 * @param out OutputStream |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
179 * @param chart JFreeChart |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
180 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
181 public static void exportPDF( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
182 OutputStream out, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
183 JFreeChart chart, |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
184 CallContext cc |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
185 ) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
186 log.info("export chart as pdf."); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
187 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
188 String pageFormat = (String) cc.getContextValue("chart.page.format"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
189 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
190 if (pageFormat == null) |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
191 pageFormat = DEFAULT_PAGE_SIZE; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
192 |
3270
4ac581062c40
Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2231
diff
changeset
|
193 // Max size of the chart. |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
194 Rectangle page = PageSize.getRectangle(pageFormat); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
195 float pageWidth = page.getWidth(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
196 float pageHeight = page.getHeight(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
197 |
3270
4ac581062c40
Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2231
diff
changeset
|
198 // The chart width. |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
199 int[] size = getSize(cc); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
200 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
201 boolean landscape = size[0] > size[1]; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
202 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
203 float width = 0; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
204 float height = 0; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
205 if (landscape) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
206 width = pageHeight; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
207 height = pageWidth; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
208 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
209 else { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
210 width = pageWidth; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
211 height = pageHeight; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
212 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
213 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
214 float marginLeft = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
215 "chart.marginLeft"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
216 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
217 float marginRight = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
218 "chart.marginRight"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
219 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
220 float marginTop = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
221 "chart.marginTop"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
222 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
223 float marginBottom = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
224 "chart.marginBottom"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
225 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
226 float spaceX = width - marginLeft - marginRight; |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
227 if (size[0] > spaceX) { |
8856 | 228 log.warn( |
229 "Width of the chart is too big for pdf -> resize it now."); | |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
230 double ratio = ((double)spaceX) / size[0]; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
231 size[0] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
232 size[1] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
233 log.debug("Resized chart to " + size[0] + "x" + size[1]); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
234 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
235 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
236 float spaceY = height - marginTop - marginBottom; |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
237 if (size[1] > spaceY) { |
8856 | 238 log.warn( |
239 "Height of the chart is too big for pdf -> resize it now."); | |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
240 double ratio = ((double)spaceY) / size[1]; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
241 size[0] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
242 size[1] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
243 log.debug("Resized chart to " + size[0] + "x" + size[1]); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
244 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
245 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
246 Document document = null; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
247 if (landscape) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
248 document = new Document(page.rotate()); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
249 log.debug("Create landscape pdf."); |
7700
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
250 } else { |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
251 document = new Document(page); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
252 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
253 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
254 try { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
255 PdfWriter writer = PdfWriter.getInstance(document, out); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
256 |
8856 | 257 document.addSubject( |
258 chart.getTitle() != null ? chart.getTitle().getText() : ""); | |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
259 document.addCreationDate(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
260 document.open(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
261 |
7700
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
262 try { |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
263 PdfContentByte content = writer.getDirectContent(); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
264 |
7700
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
265 PdfTemplate template = content.createTemplate(width, height); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
266 Graphics2D graphics = template.createGraphics(width, height); |
2160
8428de5846e8
Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1735
diff
changeset
|
267 |
7700
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
268 double[] origin = getCenteredAnchor( |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
269 marginLeft, marginRight, marginBottom, marginTop, |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
270 width, height, |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
271 size[0], size[1]); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
272 |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
273 Rectangle2D area = new Rectangle2D.Double( |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
274 origin[0], origin[1], size[0], size[1]); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
275 |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
276 ChartRenderingInfo info = new ChartRenderingInfo(); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
277 |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
278 chart.draw(graphics, area, info); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
279 graphics.dispose(); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
280 content.addTemplate(template, 0f, 0f); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
281 } |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
282 finally { |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
283 document.close(); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
284 } |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
285 } catch (DocumentException de) { |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
286 log.error("Error while exporting chart to pdf.", de); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
287 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
288 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
289 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
290 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
291 /** |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
292 * A method to export a CSV file to an |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
293 * <code>OutputStream</code>. |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
294 * |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
295 * @param out OutputStream |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
296 * @param chart JFreeChart containing the data. |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
297 * @param context The CallContext object that contains extra parameters. |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
298 */ |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
299 public static void exportCSV( |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
300 OutputStream out, |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
301 JFreeChart chart, |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
302 CallContext context) |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
303 { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
304 log.debug("export chart as CSV"); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
305 CSVWriter writer = null; |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
306 try { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
307 writer = new CSVWriter( |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
308 new OutputStreamWriter( |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
309 out, |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
310 DEFAULT_ENCODING), |
7688
9509359c8db8
(issue1632) Use DOS line endings
Andre Heinecke <aheinecke@intevation.de>
parents:
7607
diff
changeset
|
311 DEFAULT_CSV_SEPARATOR, '"', '\\', "\r\n"); |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
312 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
313 catch(UnsupportedEncodingException uee) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
314 log.warn("Wrong encoding for CSV export."); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
315 return; |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
316 } |
7047
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
317 |
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
318 NumberFormat format = Formatter.getCSVFormatter(context); |
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
319 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
320 XYPlot plot = chart.getXYPlot(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
321 int count = plot.getDatasetCount(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
322 for (int i = 0; i < count; i++) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
323 XYDataset data = plot.getDataset(i); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
324 int scount = data.getSeriesCount(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
325 for (int j = 0; j < scount; j++) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
326 Comparable seriesKey = data.getSeriesKey(j); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
327 log.debug("series key: " + seriesKey.toString()); |
7893
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
328 Map<String, String> metaData = null; |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
329 if (data instanceof XYMetaSeriesCollection) { |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
330 metaData = ((XYMetaSeriesCollection) data).getMetaData(); |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
331 } |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
332 writeCSVHeader(writer, seriesKey.toString(), metaData); |
7047
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
333 writeCSVData(writer, data, format); |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
334 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
335 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
336 try { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
337 writer.close(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
338 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
339 catch(IOException ioe) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
340 log.error("Writing CSV export failed!"); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
341 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
342 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
343 |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
344 |
7893
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
345 protected static void writeCSVHeader( |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
346 CSVWriter writer, |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
347 String key, |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
348 Map<String, String> metaData) |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
349 { |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
350 writer.writeNext(new String[] {"#"}); |
7893
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
351 if (metaData != null) { |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
352 writer.writeNext(new String[] {"# " + key}); |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
353 for (Map.Entry<String, String> entry: metaData.entrySet()) { |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
354 if (entry.getKey().equals("X") || entry.getKey().equals("Y")) { |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
355 continue; |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
356 } |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
357 writer.writeNext(new String[] |
7992
03fc4cdb793c
Separate meta data key and value by ':'.
Raimund Renkert <rrenkert@intevation.de>
parents:
7893
diff
changeset
|
358 {"# " + entry.getKey() + ": " + entry.getValue()}); |
7893
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
359 } |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
360 writer.writeNext(new String[] {"#"}); |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
361 writer.writeNext(new String[] { |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
362 metaData.get("X") != null ? metaData.get("X") : "X", |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
363 metaData.get("Y") != null ? metaData.get("Y") : "Y"}); |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
364 } |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
365 else { |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
366 writer.writeNext(new String[] {"# " + key}); |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
367 writer.writeNext(new String[] {"#"}); |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
368 writer.writeNext(new String[] {"X", "Y"}); |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
369 } |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
370 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
371 |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
372 |
7047
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
373 /** Get x/y data from axis set and write it, on pair per line. */ |
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
374 protected static void writeCSVData( |
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
375 CSVWriter writer, XYDataset data, NumberFormat format) { |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
376 int series = data.getSeriesCount(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
377 for (int i = 0; i < series; i++) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
378 int items = data.getItemCount(i); |
7607
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
379 double lastX = java.lang.Double.MAX_VALUE; |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
380 double lastY = java.lang.Double.MAX_VALUE; |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
381 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
382 for (int j = 0; j < items; j++) { |
7607
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
383 Number x = data.getX(i, j); |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
384 Number y = data.getY(i, j); |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
385 double xVal = data.getXValue(i, j); |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
386 double yVal = data.getYValue(i, j); |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
387 |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
388 if (lastX == xVal && lastY == yVal) { |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
389 // comparing equality is ok here as we want |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
390 // to find data duplicates like they are added |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
391 // for example by the StyledSeriesBuilder in |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
392 // addStepPointsKmQ |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
393 log.debug("removing duplicate point in series"); |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
394 continue; |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
395 } |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
396 lastX = xVal; |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
397 lastY = yVal; |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
398 |
7094
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
399 String xString; |
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
400 String yString; |
7151
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
401 |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
402 try { |
7607
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
403 xString = java.lang.Double.isNaN(xVal) |
7151
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
404 ? "" |
7607
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
405 : format.format(x); |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
406 yString = java.lang.Double.isNaN(yVal) |
7095
bdadffad35b1
issue1493: Don't let NaNs slip through csv export.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7094
diff
changeset
|
407 ? "" |
7607
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
408 : format.format(y); |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
409 } |
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
410 catch (NumberFormatException nfe) { |
7607
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
411 xString = x.toString(); |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
412 yString = y.toString(); |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
413 } |
7094
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
414 writer.writeNext(new String[] { |
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
415 xString, |
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
416 yString}); |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
417 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
418 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
419 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
420 |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
421 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
422 public static int[] getSize(CallContext cc) { |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
423 int[] size = new int[2]; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
424 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
425 size[0] = (Integer) cc.getContextValue("chart.width"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
426 size[1] = (Integer) cc.getContextValue("chart.height"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
427 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
428 return size; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
429 } |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
430 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
431 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
432 /** |
8856 | 433 * Returns the anchor of the chart so that the chart is centered |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
434 * according to the given parameters. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
435 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
436 * @param mLeft Left margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
437 * @param mRight Right margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
438 * @param mBottom Bottom margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
439 * @param mTop Top margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
440 * @param width The complete width of the drawing area. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
441 * @param height The complete height of the drawing area. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
442 * @param chartWidth The width of the chart. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
443 * @param chartHeight The height of the chart. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
444 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
445 * @return an array that contains the anchor for a chart with the given |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
446 * parameters. The first value is the x point, the second value is the y |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
447 * point. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
448 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
449 public static double[] getCenteredAnchor( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
450 double mLeft, double mRight, double mBottom, double mTop, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
451 double width, double height, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
452 double chartWidth, double chartHeight |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
453 ) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
454 if (log.isDebugEnabled()) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
455 log.debug("Calculate centered origin..."); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
456 log.debug("-> PDF width : " + width); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
457 log.debug("-> PDF height : " + height); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
458 log.debug("-> Chart width : " + chartWidth); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
459 log.debug("-> Chart height : " + chartHeight); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
460 log.debug("-> margin left : " + mLeft); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
461 log.debug("-> margin right : " + mRight); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
462 log.debug("-> margin bottom: " + mBottom); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
463 log.debug("-> margin top : " + mTop); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
464 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
465 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
466 double[] origin = new double[2]; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
467 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
468 double centerX = width / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
469 double centerY = height / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
470 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
471 origin[0] = centerX - chartWidth / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
472 origin[1] = centerY - chartHeight / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
473 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
474 origin[0] = origin[0] >= mLeft ? origin[0] : mLeft; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
475 origin[1] = origin[1] >= mTop ? origin[1] : mTop; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
476 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
477 if (log.isDebugEnabled()) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
478 log.debug("==> centered left origin: " + origin[0]); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
479 log.debug("==> centered top origin: " + origin[1]); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
480 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
481 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
482 return origin; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
483 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
484 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
485 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |