Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/ChartExportHelper.java @ 8295:9ab967eb2c51
At least since rev eb052d759fcc, there are no bed height epochs anymore.
author | "Tom Gottfried <tom@intevation.de>" |
---|---|
date | Thu, 18 Sep 2014 18:16:51 +0200 |
parents | 03fc4cdb793c |
children | 582aaac447ad |
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 |
8428de5846e8
Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1735
diff
changeset
|
155 chart.draw(graphics, new Rectangle2D.Double(0.0D, 0.0D,size[0],size[1]), info); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
156 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
157 try { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
158 graphics.stream(new OutputStreamWriter(out, encoding)); |
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 catch (SVGGraphics2DIOException svge) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
161 log.error("Error while writing svg export to output stream.", svge); |
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 (UnsupportedEncodingException uee) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
164 log.error("Unsupported encoding: " + encoding, uee); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
165 } |
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 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
168 |
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 * 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
|
171 * <code>OutputStream</code>. |
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 * @param out OutputStream |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
174 * @param chart JFreeChart |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
175 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
176 public static void exportPDF( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
177 OutputStream out, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
178 JFreeChart chart, |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
179 CallContext cc |
152
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 log.info("export chart as pdf."); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
182 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
183 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
|
184 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
185 if (pageFormat == null) |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
186 pageFormat = DEFAULT_PAGE_SIZE; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
187 |
3270
4ac581062c40
Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2231
diff
changeset
|
188 // Max size of the chart. |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
189 Rectangle page = PageSize.getRectangle(pageFormat); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
190 float pageWidth = page.getWidth(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
191 float pageHeight = page.getHeight(); |
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 // The chart width. |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
194 int[] size = getSize(cc); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
195 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
196 boolean landscape = size[0] > size[1]; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
197 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
198 float width = 0; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
199 float height = 0; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
200 if (landscape) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
201 width = pageHeight; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
202 height = pageWidth; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
203 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
204 else { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
205 width = pageWidth; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
206 height = pageHeight; |
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 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
209 float marginLeft = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
210 "chart.marginLeft"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
211 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
212 float marginRight = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
213 "chart.marginRight"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
214 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
215 float marginTop = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
216 "chart.marginTop"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
217 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
218 float marginBottom = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
219 "chart.marginBottom"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
220 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
221 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
|
222 if (size[0] > spaceX) { |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
223 log.warn("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
|
224 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
|
225 size[0] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
226 size[1] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
227 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
|
228 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
229 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
230 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
|
231 if (size[1] > spaceY) { |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
232 log.warn("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
|
233 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
|
234 size[0] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
235 size[1] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
236 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
|
237 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
238 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
239 Document document = null; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
240 if (landscape) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
241 document = new Document(page.rotate()); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
242 log.debug("Create landscape pdf."); |
7700
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
243 } else { |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
244 document = new Document(page); |
152
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 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
247 try { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
248 PdfWriter writer = PdfWriter.getInstance(document, out); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
249 |
7700
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
250 document.addSubject(chart.getTitle() != null ? chart.getTitle().getText() : ""); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
251 document.addCreationDate(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
252 document.open(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
253 |
7700
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
254 try { |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
255 PdfContentByte content = writer.getDirectContent(); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
256 |
7700
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
257 PdfTemplate template = content.createTemplate(width, height); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
258 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
|
259 |
7700
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
260 double[] origin = getCenteredAnchor( |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
261 marginLeft, marginRight, marginBottom, marginTop, |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
262 width, height, |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
263 size[0], size[1]); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
264 |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
265 Rectangle2D area = new Rectangle2D.Double( |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
266 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
|
267 |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
268 ChartRenderingInfo info = new ChartRenderingInfo(); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
269 |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
270 chart.draw(graphics, area, info); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
271 graphics.dispose(); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
272 content.addTemplate(template, 0f, 0f); |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
273 } |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
274 finally { |
9211f8cafe8a
(issue1559) Improve Exception handling and allow null titles
Andre Heinecke <aheinecke@intevation.de>
parents:
7688
diff
changeset
|
275 document.close(); |
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 } catch (DocumentException de) { |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
278 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
|
279 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
280 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
281 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
282 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
283 /** |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
284 * A method to export a CSV file to an |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
285 * <code>OutputStream</code>. |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
286 * |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
287 * @param out OutputStream |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
288 * @param chart JFreeChart containing the data. |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
289 * @param context The CallContext object that contains extra parameters. |
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 public static void exportCSV( |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
292 OutputStream out, |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
293 JFreeChart chart, |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
294 CallContext context) |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
295 { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
296 log.debug("export chart as CSV"); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
297 CSVWriter writer = null; |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
298 try { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
299 writer = new CSVWriter( |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
300 new OutputStreamWriter( |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
301 out, |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
302 DEFAULT_ENCODING), |
7688
9509359c8db8
(issue1632) Use DOS line endings
Andre Heinecke <aheinecke@intevation.de>
parents:
7607
diff
changeset
|
303 DEFAULT_CSV_SEPARATOR, '"', '\\', "\r\n"); |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
304 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
305 catch(UnsupportedEncodingException uee) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
306 log.warn("Wrong encoding for CSV export."); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
307 return; |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
308 } |
7047
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
309 |
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
310 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
|
311 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
312 XYPlot plot = chart.getXYPlot(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
313 int count = plot.getDatasetCount(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
314 for (int i = 0; i < count; i++) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
315 XYDataset data = plot.getDataset(i); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
316 int scount = data.getSeriesCount(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
317 for (int j = 0; j < scount; j++) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
318 Comparable seriesKey = data.getSeriesKey(j); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
319 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
|
320 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
|
321 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
|
322 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
|
323 } |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
324 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
|
325 writeCSVData(writer, data, format); |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
326 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
327 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
328 try { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
329 writer.close(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
330 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
331 catch(IOException ioe) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
332 log.error("Writing CSV export failed!"); |
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 |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
336 |
7893
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
337 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
|
338 CSVWriter writer, |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
339 String key, |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
340 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
|
341 { |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
342 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
|
343 if (metaData != null) { |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
344 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
|
345 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
|
346 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
|
347 continue; |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
348 } |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
349 writer.writeNext(new String[] |
7992
03fc4cdb793c
Separate meta data key and value by ':'.
Raimund Renkert <rrenkert@intevation.de>
parents:
7893
diff
changeset
|
350 {"# " + 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
|
351 } |
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[] {"#"}); |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
353 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
|
354 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
|
355 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
|
356 } |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
357 else { |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
358 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
|
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[] {"X", "Y"}); |
56e7e6c18c26
Use the metadata to write csv header when exporting a chart.
Raimund Renkert <rrenkert@intevation.de>
parents:
7700
diff
changeset
|
361 } |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
362 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
363 |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
364 |
7047
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
365 /** 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
|
366 protected static void writeCSVData( |
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
367 CSVWriter writer, XYDataset data, NumberFormat format) { |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
368 int series = data.getSeriesCount(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
369 for (int i = 0; i < series; i++) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
370 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
|
371 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
|
372 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
|
373 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
374 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
|
375 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
|
376 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
|
377 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
|
378 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
|
379 |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
380 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
|
381 // 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
|
382 // 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
|
383 // 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
|
384 // addStepPointsKmQ |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
385 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
|
386 continue; |
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 lastX = xVal; |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
389 lastY = yVal; |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
390 |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
391 log.debug("write data: " + x + ", " + y); |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
392 |
7151
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
393 |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
394 /* |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
395 // Skip (NaN,NaN) datapoints. |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
396 if (java.lang.Double.isNaN(data.getYValue(i,j)) |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
397 && java.lang.Double.isNaN(data.getXValue(i,j))) { |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
398 continue; |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
399 } |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
400 */ |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
401 |
7094
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
402 String xString; |
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
403 String yString; |
7151
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
404 |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
405 try { |
7607
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
406 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
|
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(x); |
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
409 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
|
410 ? "" |
7607
ef99781bcec7
(issue1667) Remove duplicate points in the same series in Diagram CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7151
diff
changeset
|
411 : format.format(y); |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
412 } |
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
413 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
|
414 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
|
415 yString = y.toString(); |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
416 } |
7094
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
417 writer.writeNext(new String[] { |
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
418 xString, |
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
419 yString}); |
2231
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 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
422 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
423 |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
424 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
425 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
|
426 int[] size = new int[2]; |
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 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
|
429 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
|
430 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
431 return size; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
432 } |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
433 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
434 |
152
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 * This method returns the anchor of the chart so that the chart is centered |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
437 * according to the given parameters. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
438 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
439 * @param mLeft Left margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
440 * @param mRight Right margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
441 * @param mBottom Bottom margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
442 * @param mTop Top margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
443 * @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
|
444 * @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
|
445 * @param chartWidth The width of the chart. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
446 * @param chartHeight The height of the chart. |
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 * @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
|
449 * 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
|
450 * point. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
451 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
452 public static double[] getCenteredAnchor( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
453 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
|
454 double width, double height, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
455 double chartWidth, double chartHeight |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
456 ) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
457 if (log.isDebugEnabled()) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
458 log.debug("Calculate centered origin..."); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
459 log.debug("-> PDF width : " + width); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
460 log.debug("-> PDF height : " + height); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
461 log.debug("-> Chart width : " + chartWidth); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
462 log.debug("-> Chart height : " + chartHeight); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
463 log.debug("-> margin left : " + mLeft); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
464 log.debug("-> margin right : " + mRight); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
465 log.debug("-> margin bottom: " + mBottom); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
466 log.debug("-> margin top : " + mTop); |
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 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
469 double[] origin = new double[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 double centerX = width / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
472 double centerY = height / 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] = centerX - chartWidth / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
475 origin[1] = centerY - chartHeight / 2; |
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 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
|
478 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
|
479 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
480 if (log.isDebugEnabled()) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
481 log.debug("==> centered left origin: " + origin[0]); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
482 log.debug("==> centered top origin: " + origin[1]); |
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 return origin; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
486 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
487 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
488 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |