diff gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java @ 321:a4376fd23f99

Implemented svg export of charts. gnv-artifacts/trunk@383 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 30 Nov 2009 14:18:37 +0000
parents 18302372703f
children 3eff9241ea1e
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java	Mon Nov 30 09:51:59 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java	Mon Nov 30 14:18:37 2009 +0000
@@ -6,6 +6,7 @@
 import java.io.IOException;
 import java.io.File;
 import java.io.OutputStream;
+import java.io.FileOutputStream;
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -272,6 +273,36 @@
                     locale
                 );
             }
+            else if (outputMode.equalsIgnoreCase("svg")) {
+                log.debug("Output mode == svg");
+                int width  = 600;
+                int height = 400;
+
+                Locale[] serverLocales    =
+                    RessourceFactory.getInstance().getLocales();
+                Locale locale             =
+                    callMeta.getPreferredLocale(serverLocales);
+
+                log.debug(
+                    "Best locale - regarding intersection of server and " +
+                    "browser locales -  is " + locale.toString()
+                );
+
+                createSVG(
+                    outputStream,
+                    getParameters(uuid),
+                    getMeasurements(uuid),
+                    getDates(uuid),
+                    new ChartLabels(
+                        this.getFisName(callMeta.getLanguages()) +
+                        " "+ getSelectedFeatureName(uuid),
+                        this.domainLable),
+                    uuid,
+                    locale,
+                    width,
+                    height
+                );
+            }
             else if (outputMode.equalsIgnoreCase("csv")) {
                 log.debug("CSV-File will be generated.");
                 Collection<Result> chartResult = this.getChartResult(uuid);
@@ -513,6 +544,56 @@
             PDF_FORMAT_LANDSCAPE,
             50F, 50F, 50F, 50F
         );
+
+        try {
+            OutputStream toFile = new FileOutputStream("/vol1/home/iweinzierl/tmp/test.svg");
+            ChartExportHelper.exportSVG(
+                toFile,
+                chart.generateChart(),
+                null,
+                600, 400
+            );
+            toFile.flush();
+            toFile.close();
+        }
+        catch(Exception e) { log.debug("ERROR WHLILE TEST."); }
+    }
+
+
+    protected void createSVG(
+        OutputStream outputStream,
+        Collection   parameters,
+        Collection   measurements,
+        Collection   dates,
+        ChartLabels  chartLables,
+        String       uuid,
+        Locale       locale,
+        int          width,
+        int          height
+    ) {
+        Chart chart = getChart(
+            chartLables,
+            parameters,
+            measurements,
+            dates,
+            getChartResult(uuid),
+            locale,
+            uuid
+        );
+
+        if (chart == null) {
+            log.error("Could not initialize chart.");
+            return;
+        }
+
+        ChartExportHelper.exportSVG(
+            outputStream,
+            chart.generateChart(),
+            null,
+            600, 400
+        );
+
+        log.debug("svg export finished.");
     }
 
 

http://dive4elements.wald.intevation.org