annotate artifacts/src/main/java/org/dive4elements/river/exports/ChartExportHelper.java @ 7597:fca46ce8e4f5

(issue1225) Implement Magic labels. There is now a new value in the chartsettings "Suggested Label" which is hidden in the property editor. A suggested label is the label that combines the label's of all processors that wrote data to an axis. This suggested label is set as the label when the user has not overwritten the label.
author Andre Heinecke <aheinecke@intevation.de>
date Mon, 25 Nov 2013 14:58:14 +0100
parents 491b645123b6
children ef99781bcec7
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.Double;
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.awt.geom.Rectangle2D;
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 import java.io.IOException;
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 import java.io.OutputStream;
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 import java.io.OutputStreamWriter;
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 import java.io.UnsupportedEncodingException;
7046
50b9959330de issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7045
diff changeset
31
50b9959330de issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7045
diff changeset
32 import java.text.NumberFormat;
50b9959330de issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7045
diff changeset
33
1036
e6aff80b59ff Added proof-of-concept collision detection for text annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 714
diff changeset
34 import org.jfree.chart.ChartRenderingInfo;
152
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 import javax.imageio.ImageIO;
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37
2231
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
38 import au.com.bytecode.opencsv.CSVWriter;
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
39
152
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 import org.apache.batik.svggen.SVGGraphics2D;
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 import org.apache.batik.svggen.SVGGraphics2DIOException;
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 import org.apache.log4j.Logger;
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 import org.jfree.chart.JFreeChart;
2231
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
46 import org.jfree.chart.plot.XYPlot;
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
47 import org.jfree.data.xy.XYDataset;
152
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3284
diff changeset
49 import org.dive4elements.artifacts.CallContext;
152
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3284
diff changeset
51 import org.dive4elements.artifacts.common.utils.XMLUtils;
152
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52
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.");
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 else
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
245 document = new Document(page);
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
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
250 document.addSubject(chart.getTitle().getText());
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
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
254 PdfContentByte content = writer.getDirectContent();
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
255
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
256 PdfTemplate template = content.createTemplate(width, height);
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
257 Graphics2D graphics = template.createGraphics(width, height);
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
258
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
259 double[] origin = getCenteredAnchor(
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
260 marginLeft, marginRight, marginBottom, marginTop,
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
261 width, height,
1735
5966a20fc72c Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1036
diff changeset
262 size[0], size[1]);
152
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
263
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
264 Rectangle2D area = new Rectangle2D.Double(
1735
5966a20fc72c Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1036
diff changeset
265 origin[0], origin[1], size[0], size[1]);
152
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
266
2160
8428de5846e8 Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1735
diff changeset
267 ChartRenderingInfo info = new ChartRenderingInfo();
8428de5846e8 Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1735
diff changeset
268
8428de5846e8 Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1735
diff changeset
269 chart.draw(graphics, area, info);
152
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
270 graphics.dispose();
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
271 content.addTemplate(template, 0f, 0f);
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
272 }
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
273 catch (DocumentException de) {
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
274 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
275 }
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
276 finally {
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
277 document.close();
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
278 }
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
2231
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
282 /**
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
283 * A method to export a CSV file to an
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
284 * <code>OutputStream</code>.
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
285 *
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
286 * @param out OutputStream
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
287 * @param chart JFreeChart containing the data.
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
288 * @param context The CallContext object that contains extra parameters.
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
289 */
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
290 public static void exportCSV(
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
291 OutputStream out,
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
292 JFreeChart chart,
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
293 CallContext context)
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
294 {
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
295 log.debug("export chart as CSV");
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
296 CSVWriter writer = null;
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
297 try {
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
298 writer = new CSVWriter(
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
299 new OutputStreamWriter(
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
300 out,
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
301 DEFAULT_ENCODING),
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
302 DEFAULT_CSV_SEPARATOR);
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
303 }
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
304 catch(UnsupportedEncodingException uee) {
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
305 log.warn("Wrong encoding for CSV export.");
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
306 return;
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
307 }
7047
b5e9b8b5c8d6 issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7046
diff changeset
308
b5e9b8b5c8d6 issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7046
diff changeset
309 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
310
2231
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
311 XYPlot plot = chart.getXYPlot();
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
312 int count = plot.getDatasetCount();
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
313 for (int i = 0; i < count; i++) {
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
314 XYDataset data = plot.getDataset(i);
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
315 int scount = data.getSeriesCount();
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
316 for (int j = 0; j < scount; j++) {
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
317 Comparable seriesKey = data.getSeriesKey(j);
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
318 log.debug("series key: " + seriesKey.toString());
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
319 writeCSVHeader(writer, seriesKey.toString());
7047
b5e9b8b5c8d6 issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7046
diff changeset
320 writeCSVData(writer, data, format);
2231
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
321 }
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
322 }
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
323 try {
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
324 writer.close();
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
325 }
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
326 catch(IOException ioe) {
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
327 log.error("Writing CSV export failed!");
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
328 }
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
329 }
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
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
332 protected static void writeCSVHeader(CSVWriter writer, String key) {
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
333 writer.writeNext(new String[] {"#"});
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
334 writer.writeNext(new String[] {"# " + key});
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
335 writer.writeNext(new String[] {"#"});
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
336 writer.writeNext(new String[] {"X", "Y"});
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
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
339
7047
b5e9b8b5c8d6 issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7046
diff changeset
340 /** 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
341 protected static void writeCSVData(
b5e9b8b5c8d6 issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7046
diff changeset
342 CSVWriter writer, XYDataset data, NumberFormat format) {
2231
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
343 int series = data.getSeriesCount();
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
344 for (int i = 0; i < series; i++) {
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
345 int items = data.getItemCount(i);
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
346 for (int j = 0; j < items; j++) {
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
347 log.debug("write data: " + data.getX(i, j) + ", " + data.getY(i, j));
7151
491b645123b6 issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7095
diff changeset
348
491b645123b6 issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7095
diff changeset
349 /*
491b645123b6 issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7095
diff changeset
350 // Skip (NaN,NaN) datapoints.
491b645123b6 issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7095
diff changeset
351 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
352 && 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
353 continue;
491b645123b6 issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7095
diff changeset
354 }
491b645123b6 issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7095
diff changeset
355 */
491b645123b6 issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7095
diff changeset
356
7094
99527ef3f151 Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7047
diff changeset
357 String xString;
99527ef3f151 Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7047
diff changeset
358 String yString;
7151
491b645123b6 issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7095
diff changeset
359
7046
50b9959330de issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7045
diff changeset
360 try {
7151
491b645123b6 issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7095
diff changeset
361 xString = 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
362 ? ""
491b645123b6 issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7095
diff changeset
363 : format.format(data.getX(i, j));
7095
bdadffad35b1 issue1493: Don't let NaNs slip through csv export.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7094
diff changeset
364 yString = java.lang.Double.isNaN(data.getYValue(i, j))
bdadffad35b1 issue1493: Don't let NaNs slip through csv export.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7094
diff changeset
365 ? ""
bdadffad35b1 issue1493: Don't let NaNs slip through csv export.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7094
diff changeset
366 : format.format(data.getY(i, j));
7046
50b9959330de issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7045
diff changeset
367 }
50b9959330de issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7045
diff changeset
368 catch (NumberFormatException nfe) {
7094
99527ef3f151 Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7047
diff changeset
369 xString = data.getX(i, j).toString();
99527ef3f151 Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7047
diff changeset
370 yString = data.getY(i, j).toString();
7046
50b9959330de issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7045
diff changeset
371 }
7094
99527ef3f151 Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7047
diff changeset
372 writer.writeNext(new String[] {
99527ef3f151 Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7047
diff changeset
373 xString,
99527ef3f151 Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7047
diff changeset
374 yString});
2231
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
375 }
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
376 }
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
377 }
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
378
5648b5b34ae2 Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2160
diff changeset
379
1735
5966a20fc72c Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1036
diff changeset
380 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
381 int[] size = new int[2];
5966a20fc72c Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1036
diff changeset
382
5966a20fc72c Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1036
diff changeset
383 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
384 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
385
5966a20fc72c Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1036
diff changeset
386 return size;
5966a20fc72c Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1036
diff changeset
387 }
5966a20fc72c Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1036
diff changeset
388
5966a20fc72c Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1036
diff changeset
389
152
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
390 /**
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
391 * 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
392 * according to the given parameters.
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
393 *
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
394 * @param mLeft Left margin
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
395 * @param mRight Right margin
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
396 * @param mBottom Bottom margin
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
397 * @param mTop Top margin
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
398 * @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
399 * @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
400 * @param chartWidth The width of the chart.
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
401 * @param chartHeight The height of the chart.
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
402 *
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
403 * @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
404 * 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
405 * point.
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
406 */
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
407 public static double[] getCenteredAnchor(
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
408 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
409 double width, double height,
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
410 double chartWidth, double chartHeight
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
411 ) {
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
412 if (log.isDebugEnabled()) {
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
413 log.debug("Calculate centered origin...");
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
414 log.debug("-> PDF width : " + width);
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
415 log.debug("-> PDF height : " + height);
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
416 log.debug("-> Chart width : " + chartWidth);
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
417 log.debug("-> Chart height : " + chartHeight);
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
418 log.debug("-> margin left : " + mLeft);
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
419 log.debug("-> margin right : " + mRight);
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
420 log.debug("-> margin bottom: " + mBottom);
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
421 log.debug("-> margin top : " + mTop);
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
422 }
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
423
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
424 double[] origin = new double[2];
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
425
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
426 double centerX = width / 2;
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
427 double centerY = height / 2;
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
428
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
429 origin[0] = centerX - chartWidth / 2;
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
430 origin[1] = centerY - chartHeight / 2;
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
431
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
432 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
433 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
434
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
435 if (log.isDebugEnabled()) {
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
436 log.debug("==> centered left origin: " + origin[0]);
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
437 log.debug("==> centered top origin: " + origin[1]);
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
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
440 return origin;
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
441 }
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
442 }
956445dd601d Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
443 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org