[PATCH 2 of 3] Move manual point handling into a Processor
Wald Commits
scm-commit at wald.intevation.org
Mon Sep 23 12:22:08 CEST 2013
# HG changeset patch
# User Andre Heinecke <aheinecke at intevation.de>
# Date 1379931668 -7200
# Branch generator-refactoring
# Node ID c64c04d0796edee5f75f6713baf11c1bf1f6e75e
# Parent 5c059c05b100971c5912b7fb211ea6e54e49b825
Move manual point handling into a Processor
diff -r 5c059c05b100 -r c64c04d0796e artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java
--- 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.
diff -r 5c059c05b100 -r c64c04d0796e artifacts/src/main/java/org/dive4elements/river/exports/process/ManualPointsProcessor.java
--- /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);
+ }
+}
More information about the Dive4elements-commits
mailing list