changeset 7097:c64c04d0796e generator-refactoring

Move manual point handling into a Processor
author Andre Heinecke <aheinecke@intevation.de>
date Mon, 23 Sep 2013 12:21:08 +0200
parents 5c059c05b100
children 7dc31a235232
files artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java artifacts/src/main/java/org/dive4elements/river/exports/process/ManualPointsProcessor.java
diffstat 2 files changed, 87 insertions(+), 50 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java	Mon Sep 23 12:20:27 2013 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java	Mon Sep 23 12:21:08 2013 +0200
@@ -36,8 +36,6 @@
 import org.jfree.data.xy.XYDataset;
 import org.jfree.data.xy.XYSeries;
 import org.jfree.data.xy.XYSeriesCollection;
-import org.json.JSONArray;
-import org.json.JSONException;
 
 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
 import org.dive4elements.artifactdatabase.state.Facet;
@@ -907,54 +905,6 @@
 
 
     /**
-     * Do Points out.
-     */
-    protected void doPoints(
-        Object     o,
-        ArtifactAndFacet aandf,
-        ThemeDocument theme,
-        boolean    visible,
-        int        axisIndex
-    ) {
-        String seriesName = aandf.getFacetDescription();
-        XYSeries series = new StyledXYSeries(seriesName, theme);
-
-        // Add text annotations for single points.
-        List<XYTextAnnotation> xy = new ArrayList<XYTextAnnotation>();
-
-        try {
-            JSONArray points = new JSONArray((String) o);
-            for (int i = 0, P = points.length(); i < P; i++) {
-                JSONArray array = points.getJSONArray(i);
-                double x    = array.getDouble(0);
-                double y    = array.getDouble(1);
-                String name = array.getString(2);
-                boolean act = array.getBoolean(3);
-                if (!act) {
-                    continue;
-                }
-                //logger.debug(" x " + x + " y " + y );
-                series.add(x, y, false);
-                xy.add(new CollisionFreeXYTextAnnotation(name, x, y));
-            }
-        }
-        catch(JSONException e){
-            logger.error("Could not decode json.");
-        }
-
-        RiverAnnotation annotation = new RiverAnnotation(null, null, null, theme);
-        annotation.setTextAnnotations(xy);
-
-        // Do not generate second legend entry. (null was passed for the aand before).
-        if (visible) {
-            annotations.add(annotation);
-        }
-//        doAnnotations(annotations, null, theme, visible);
-        addAxisSeries(series, axisIndex, visible);
-    }
-
-
-    /**
      * Create a hash from a legenditem.
      * This hash can then be used to merge legend items labels.
      * @return hash for given legenditem to identify mergeables.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/process/ManualPointsProcessor.java	Mon Sep 23 12:21:08 2013 +0200
@@ -0,0 +1,87 @@
+/* Copyright (C) 2013 by Bundesanstalt für Gewässerkunde
+ * Software engineering by Intevation GmbH
+ *
+ * This file is Free Software under the GNU AGPL (>=v3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+
+
+package org.dive4elements.river.exports.process;
+
+import org.apache.log4j.Logger;
+
+import java.util.List;
+import java.util.ArrayList;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+
+import org.jfree.data.xy.XYSeries;
+import org.jfree.chart.annotations.XYTextAnnotation;
+
+import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
+import org.dive4elements.artifacts.CallContext;
+import org.dive4elements.river.artifacts.model.FacetTypes;
+import org.dive4elements.river.exports.DiagramGenerator;
+import org.dive4elements.river.jfree.RiverAnnotation;
+import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation;
+import org.dive4elements.river.jfree.StyledXYSeries;
+import org.dive4elements.river.themes.ThemeDocument;
+
+public class ManualPointsProcessor extends DefaultProcessor {
+
+    private static final Logger logger = Logger.getLogger(ManualPointsProcessor.class);
+
+    @Override
+    public void doOut(
+            DiagramGenerator generator,
+            ArtifactAndFacet bundle,
+            ThemeDocument    theme,
+            boolean          visible) {
+        CallContext context = generator.getCallContext();
+        String seriesName = bundle.getFacetDescription();
+        XYSeries series = new StyledXYSeries(seriesName, theme);
+        String jsonData = (String) bundle.getData(context);
+
+        // Add text annotations for single points.
+        List<XYTextAnnotation> xy = new ArrayList<XYTextAnnotation>();
+
+        try {
+            JSONArray points = new JSONArray(jsonData);
+            for (int i = 0, P = points.length(); i < P; i++) {
+                JSONArray array = points.getJSONArray(i);
+                double x    = array.getDouble(0);
+                double y    = array.getDouble(1);
+                String name = array.getString(2);
+                boolean act = array.getBoolean(3);
+                if (!act) {
+                    continue;
+                }
+                //logger.debug(" x " + x + " y " + y );
+                series.add(x, y, false);
+                xy.add(new CollisionFreeXYTextAnnotation(name, x, y));
+            }
+        }
+        catch(JSONException e){
+            logger.error("Could not decode json.");
+        }
+
+        RiverAnnotation annotation = new RiverAnnotation(null, null, null, theme);
+        annotation.setTextAnnotations(xy);
+
+        if (visible) {
+            generator.addAnnotations(annotation);
+        }
+
+        generator.addAxisSeries(series, axisName, visible);
+    }
+
+    @Override
+    public boolean canHandle(String facetType) {
+        if (facetType == null) {
+            return false;
+        }
+        return FacetTypes.IS.MANUALPOINTS(facetType);
+    }
+}

http://dive4elements.wald.intevation.org