# HG changeset patch # User Ingo Weinzierl # Date 1258731925 0 # Node ID 9ba2cf8cad8d0f85a904b28014f434b9ea99d8af # Parent dc2713a3eaa72e70786d1ffe870c87fd6b43f5d8 Export format of charts is related to mime-type. gnv-artifacts/trunk@358 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r dc2713a3eaa7 -r 9ba2cf8cad8d gnv-artifacts/ChangeLog --- a/gnv-artifacts/ChangeLog Fri Nov 20 14:46:37 2009 +0000 +++ b/gnv-artifacts/ChangeLog Fri Nov 20 15:45:25 2009 +0000 @@ -1,3 +1,13 @@ +2009-11-20 Ingo Weinzierl + + * src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java: + Export format of charts (png, jpeg, gif) depends on mime-type. + + * src/main/java/de/intevation/gnv/chart/Chart.java, + src/main/java/de/intevation/gnv/chart/AbstractChart.java: Renamed export + method, because it doesn't export just png anymore, but jpeg or gif as + well. + 2009-11-20 Ingo Weinzierl * src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_out_chart.xml, diff -r dc2713a3eaa7 -r 9ba2cf8cad8d gnv-artifacts/src/main/java/de/intevation/gnv/chart/AbstractChart.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/chart/AbstractChart.java Fri Nov 20 14:46:37 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/AbstractChart.java Fri Nov 20 15:45:25 2009 +0000 @@ -31,7 +31,7 @@ public abstract JFreeChart generateChart(); - public BufferedImage exportPNG(int width, int height) { + public BufferedImage exportImage(int width, int height) { log.info("export chart as png"); return chart.createBufferedImage( diff -r dc2713a3eaa7 -r 9ba2cf8cad8d gnv-artifacts/src/main/java/de/intevation/gnv/chart/Chart.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/chart/Chart.java Fri Nov 20 14:46:37 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/Chart.java Fri Nov 20 15:45:25 2009 +0000 @@ -13,7 +13,7 @@ public JFreeChart generateChart(); - public BufferedImage exportPNG(int width, int height) + public BufferedImage exportImage(int width, int height) throws IOException; public void exportSVG(); //TODO Change return value diff -r dc2713a3eaa7 -r 9ba2cf8cad8d gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Fri Nov 20 14:46:37 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Fri Nov 20 15:45:25 2009 +0000 @@ -72,6 +72,10 @@ protected static final boolean CACHE_CHART = Boolean.parseBoolean(System.getProperty("cache.chart", "false")); + protected static final String[] IMG_EXPORT_FORMAT = { + "PNG", "JPEG", "GIF" + }; + /** * The UID of this Class */ @@ -163,15 +167,29 @@ * java.util.Collection, java.io.OutputStream, java.lang.String, * de.intevation.artifacts.CallMeta) */ - public void out(Document format, Collection inputData, - OutputStream outputStream, String uuid, CallMeta callMeta) - throws TransitionException { + public void out( + Document format, + Collection inputData, + OutputStream outputStream, + String uuid, + CallMeta callMeta + ) throws TransitionException + { log.debug("TimeSeriesOutputTransition.out"); - String outputMode = Config.getStringXPath(format, "action/out/@name"); + + String outputMode = Config.getStringXPath( + format, + "action/out/@name" + ); + String mimeType = Config.getStringXPath( + format, + "action/out/mime-type/@value" + ); + try { this.advance(uuid, callMeta); // TODO This hsould only be done if it is nessessary - + if (outputMode.equalsIgnoreCase("chart")) { log.debug("Chart will be generated."); int chartWidth = 600; @@ -199,8 +217,19 @@ .creatStyle(chartWidth, chartHeight); ChartLabels chartLables = new ChartLabels(this.getFisName(callMeta.getLanguages())+" "+this .getSelectedFeatureName(uuid), this.domainLable); - this.createChart(outputStream, parameters, measurements,dates, - chartStyle, chartLables, uuid); + + String exportFormat = getExportFormat(mimeType); + + this.createChart( + outputStream, + parameters, + measurements, + dates, + chartStyle, + chartLables, + uuid, + exportFormat + ); } else if (outputMode.equalsIgnoreCase("csv")) { log.debug("CSV-File will be generated."); Collection chartResult = this.getChartResult(uuid); @@ -239,7 +268,18 @@ } } - + + protected String getExportFormat(String mime) { + for(int i = 0; i < IMG_EXPORT_FORMAT.length; i++) { + if (mime.trim().toUpperCase().indexOf(IMG_EXPORT_FORMAT[i]) > 0) + return IMG_EXPORT_FORMAT[i]; + } + + // no format found relating to mimeType, default export as PNG + return IMG_EXPORT_FORMAT[0]; + } + + /** * @param outputStream * @param chartResult @@ -360,7 +400,8 @@ Collection dates, ChartStyle chartStyle, ChartLabels chartLables, - String uuid + String uuid, + String exportFormat ) throws IOException, TechnicalChartException { @@ -381,14 +422,20 @@ return; } - // TODO generic format Dimension dim = chartStyle.getChartSize(); - String format = "PNG"; int width = new Double(dim.getWidth()).intValue(); int height = new Double(dim.getHeight()).intValue(); - log.debug("export chart as " + format + " in " + width + "x" + height); - ImageIO.write(chart.exportPNG(width, height), format, outputStream); + log.debug( + "export chart as " + exportFormat + + " in " + width + "x" + height + ); + + ImageIO.write( + chart.exportImage(width, height), + exportFormat, + outputStream + ); } protected Chart getChart(