Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/ChartExportHelper.java @ 8856:5e38e2924c07 3.2.x
Fix code style.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 18 Jan 2018 20:12:01 +0100 |
parents | 582aaac447ad |
children | ffd4e2b0381c 0a5239a1e46e |
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 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
42 import org.apache.log4j.Logger; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
43 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
44 import org.jfree.chart.JFreeChart; |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
45 import org.jfree.chart.plot.XYPlot; |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
46 import org.jfree.data.xy.XYDataset; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
47 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3284
diff
changeset
|
48 import org.dive4elements.artifacts.CallContext; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
49 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3284
diff
changeset
|
50 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
|
51 |
7893
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
52 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
|
53 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
|
54 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
55 |
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 * 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
|
58 * into specific formats. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
59 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
60 * @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
|
61 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
62 public class ChartExportHelper { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
63 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
64 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
|
65 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
66 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
|
67 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
68 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
|
69 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
70 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
|
71 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
72 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
73 * 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
|
74 */ |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
75 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
|
76 |
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 * 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
|
79 */ |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
80 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
|
81 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
82 /** 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
|
83 public static final char DEFAULT_CSV_SEPARATOR = ';'; |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
84 |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
85 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
86 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
87 * Logger used for logging with log4j. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
88 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
89 private static Logger log = Logger.getLogger(ChartExportHelper.class); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
90 |
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 * 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
|
94 * <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
|
95 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
96 * @param out OutputStream |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
97 * @param chart JFreeChart object to be exported. |
3270
4ac581062c40
Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2231
diff
changeset
|
98 * @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
|
99 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
100 * @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
|
101 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
102 public static void exportImage( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
103 OutputStream out, |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
104 JFreeChart chart, |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
105 CallContext cc |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
106 ) |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
107 throws IOException |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
108 { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
109 log.info("export chart as png"); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
110 |
1036
e6aff80b59ff
Added proof-of-concept collision detection for text annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
714
diff
changeset
|
111 ChartRenderingInfo info = new ChartRenderingInfo(); |
e6aff80b59ff
Added proof-of-concept collision detection for text annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
714
diff
changeset
|
112 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
113 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
|
114 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
115 int[] size = getSize(cc); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
116 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
117 ImageIO.write( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
118 chart.createBufferedImage( |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
119 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
|
120 ), |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
121 format, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
122 out |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
123 ); |
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 * 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
|
129 * <code>OutputStream</code>. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
130 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
131 * @param out OutputStream |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
132 * @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
|
133 * @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
|
134 * parameters. |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
135 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
136 public static void exportSVG( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
137 OutputStream out, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
138 JFreeChart chart, |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
139 CallContext context |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
140 ) { |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
141 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
|
142 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
143 log.info("export chart as svg"); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
144 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
145 if (encoding == null) |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
146 encoding = DEFAULT_ENCODING; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
147 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
148 org.w3c.dom.Document document = XMLUtils.newDocument(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
149 SVGGraphics2D graphics = new SVGGraphics2D(document); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
150 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
151 int[] size = getSize(context); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
152 |
2160
8428de5846e8
Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1735
diff
changeset
|
153 ChartRenderingInfo info = new ChartRenderingInfo(); |
8428de5846e8
Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1735
diff
changeset
|
154 |
8856 | 155 chart.draw( |
156 graphics, | |
157 new Rectangle2D.Double(0.0D, 0.0D,size[0],size[1]), | |
158 info); | |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
159 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
160 try { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
161 graphics.stream(new OutputStreamWriter(out, encoding)); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
162 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
163 catch (SVGGraphics2DIOException svge) { |
8856 | 164 log.error( |
165 "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
|
166 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
167 catch (UnsupportedEncodingException uee) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
168 log.error("Unsupported encoding: " + encoding, uee); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
169 } |
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 * 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
|
175 * <code>OutputStream</code>. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
176 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
177 * @param out OutputStream |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
178 * @param chart JFreeChart |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
179 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
180 public static void exportPDF( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
181 OutputStream out, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
182 JFreeChart chart, |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
183 CallContext cc |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
184 ) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
185 log.info("export chart as pdf."); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
186 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
187 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
|
188 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
189 if (pageFormat == null) |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
190 pageFormat = DEFAULT_PAGE_SIZE; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
191 |
3270
4ac581062c40
Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2231
diff
changeset
|
192 // Max size of the chart. |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
193 Rectangle page = PageSize.getRectangle(pageFormat); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
194 float pageWidth = page.getWidth(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
195 float pageHeight = page.getHeight(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
196 |
3270
4ac581062c40
Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2231
diff
changeset
|
197 // The chart width. |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
198 int[] size = getSize(cc); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
199 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
200 boolean landscape = size[0] > size[1]; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
201 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
202 float width = 0; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
203 float height = 0; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
204 if (landscape) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
205 width = pageHeight; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
206 height = pageWidth; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
207 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
208 else { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
209 width = pageWidth; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
210 height = pageHeight; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
211 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
212 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
213 float marginLeft = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
214 "chart.marginLeft"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
215 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
216 float marginRight = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
217 "chart.marginRight"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
218 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
219 float marginTop = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
220 "chart.marginTop"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
221 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
222 float marginBottom = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
223 "chart.marginBottom"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
224 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
225 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
|
226 if (size[0] > spaceX) { |
8856 | 227 log.warn( |
228 "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
|
229 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
|
230 size[0] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
231 size[1] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
232 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
|
233 } |
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 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
|
236 if (size[1] > spaceY) { |
8856 | 237 log.warn( |
238 "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
|
239 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
|
240 size[0] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
241 size[1] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
242 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
|
243 } |
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 Document document = null; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
246 if (landscape) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
247 document = new Document(page.rotate()); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
248 log.debug("Create landscape pdf."); |
7700
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
249 } else { |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
250 document = new Document(page); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
251 } |
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 try { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
254 PdfWriter writer = PdfWriter.getInstance(document, out); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
255 |
8856 | 256 document.addSubject( |
257 chart.getTitle() != null ? chart.getTitle().getText() : ""); | |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
258 document.addCreationDate(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
259 document.open(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
260 |
7700
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
261 try { |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
262 PdfContentByte content = writer.getDirectContent(); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
263 |
7700
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
264 PdfTemplate template = content.createTemplate(width, height); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
265 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
|
266 |
7700
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
267 double[] origin = getCenteredAnchor( |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
268 marginLeft, marginRight, marginBottom, marginTop, |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
269 width, height, |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
270 size[0], size[1]); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
271 |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
272 Rectangle2D area = new Rectangle2D.Double( |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
273 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
|
274 |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
275 ChartRenderingInfo info = new ChartRenderingInfo(); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
276 |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
277 chart.draw(graphics, area, info); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
278 graphics.dispose(); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
279 content.addTemplate(template, 0f, 0f); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
280 } |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
281 finally { |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
282 document.close(); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
283 } |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
284 } catch (DocumentException de) { |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
285 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
|
286 } |
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 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
290 /** |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
291 * A method to export a CSV file to an |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
292 * <code>OutputStream</code>. |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
293 * |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
294 * @param out OutputStream |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
295 * @param chart JFreeChart containing the data. |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
296 * @param context The CallContext object that contains extra parameters. |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
297 */ |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
298 public static void exportCSV( |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
299 OutputStream out, |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
300 JFreeChart chart, |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
301 CallContext context) |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
302 { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
303 log.debug("export chart as CSV"); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
304 CSVWriter writer = null; |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
305 try { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
306 writer = new CSVWriter( |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
307 new OutputStreamWriter( |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
308 out, |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
309 DEFAULT_ENCODING), |
7688
9509359c8db8
(issue1632) Use DOS line endings
Andre Heinecke <aheinecke@intevation.de>
parents:
7607
diff
changeset
|
310 DEFAULT_CSV_SEPARATOR, '"', '\\', "\r\n"); |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
311 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
312 catch(UnsupportedEncodingException uee) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
313 log.warn("Wrong encoding for CSV export."); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
314 return; |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
315 } |
7047
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
316 |
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
317 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
|
318 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
319 XYPlot plot = chart.getXYPlot(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
320 int count = plot.getDatasetCount(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
321 for (int i = 0; i < count; i++) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
322 XYDataset data = plot.getDataset(i); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
323 int scount = data.getSeriesCount(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
324 for (int j = 0; j < scount; j++) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
325 Comparable seriesKey = data.getSeriesKey(j); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
326 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
|
327 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
|
328 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
|
329 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
|
330 } |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
331 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
|
332 writeCSVData(writer, data, format); |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
333 } |
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 try { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
336 writer.close(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
337 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
338 catch(IOException ioe) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
339 log.error("Writing CSV export failed!"); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
340 } |
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 |
7893
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
344 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
|
345 CSVWriter writer, |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
346 String key, |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
347 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
|
348 { |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
349 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
|
350 if (metaData != null) { |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
351 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
|
352 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
|
353 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
|
354 continue; |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
355 } |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
356 writer.writeNext(new String[] |
7992
03fc4cdb793c
Separate meta data key and value by ':'.
Raimund Renkert <rrenkert@intevation.de>
parents:
7893
diff
changeset
|
357 {"# " + 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
|
358 } |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
359 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
|
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 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
|
362 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
|
363 } |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
364 else { |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
365 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
|
366 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
|
367 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
|
368 } |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
369 } |
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 |
7047
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
372 /** 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
|
373 protected static void writeCSVData( |
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
374 CSVWriter writer, XYDataset data, NumberFormat format) { |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
375 int series = data.getSeriesCount(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
376 for (int i = 0; i < series; i++) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
377 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
|
378 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
|
379 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
|
380 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
381 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
|
382 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
|
383 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
|
384 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
|
385 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
|
386 |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
387 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
|
388 // 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
|
389 // 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
|
390 // 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
|
391 // addStepPointsKmQ |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
392 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
|
393 continue; |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
394 } |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
395 lastX = xVal; |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
396 lastY = yVal; |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
397 |
7094
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
398 String xString; |
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
399 String yString; |
7151
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
400 |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
401 try { |
7607
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
402 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
|
403 ? "" |
7607
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
404 : 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
|
405 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
|
406 ? "" |
7607
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
407 : format.format(y); |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
408 } |
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
409 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
|
410 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
|
411 yString = y.toString(); |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
412 } |
7094
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
413 writer.writeNext(new String[] { |
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
414 xString, |
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
415 yString}); |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
416 } |
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 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
421 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
|
422 int[] size = new int[2]; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
423 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
424 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
|
425 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
|
426 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
427 return size; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
428 } |
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 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
431 /** |
8856 | 432 * 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
|
433 * according to the given parameters. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
434 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
435 * @param mLeft Left margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
436 * @param mRight Right margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
437 * @param mBottom Bottom margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
438 * @param mTop Top margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
439 * @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
|
440 * @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
|
441 * @param chartWidth The width of the chart. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
442 * @param chartHeight The height of the chart. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
443 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
444 * @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
|
445 * 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
|
446 * point. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
447 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
448 public static double[] getCenteredAnchor( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
449 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
|
450 double width, double height, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
451 double chartWidth, double chartHeight |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
452 ) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
453 if (log.isDebugEnabled()) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
454 log.debug("Calculate centered origin..."); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
455 log.debug("-> PDF width : " + width); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
456 log.debug("-> PDF height : " + height); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
457 log.debug("-> Chart width : " + chartWidth); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
458 log.debug("-> Chart height : " + chartHeight); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
459 log.debug("-> margin left : " + mLeft); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
460 log.debug("-> margin right : " + mRight); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
461 log.debug("-> margin bottom: " + mBottom); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
462 log.debug("-> margin top : " + mTop); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
463 } |
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 double[] origin = new double[2]; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
466 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
467 double centerX = width / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
468 double centerY = height / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
469 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
470 origin[0] = centerX - chartWidth / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
471 origin[1] = centerY - chartHeight / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
472 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
473 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
|
474 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
|
475 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
476 if (log.isDebugEnabled()) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
477 log.debug("==> centered left origin: " + origin[0]); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
478 log.debug("==> centered top origin: " + origin[1]); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
479 } |
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 return origin; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
482 } |
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 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |