diff artifacts/src/main/java/org/dive4elements/river/exports/process/ComputedDischargeProcessor.java @ 8182:0b4cd7a5f079

Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
author Raimund Renkert <rrenkert@intevation.de>
date Thu, 04 Sep 2014 11:14:24 +0200
parents
children e4606eae8ea5
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/process/ComputedDischargeProcessor.java	Thu Sep 04 11:14:24 2014 +0200
@@ -0,0 +1,72 @@
+package org.dive4elements.river.exports.process;
+
+import org.apache.log4j.Logger;
+import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
+import org.dive4elements.artifacts.CallContext;
+import org.dive4elements.river.artifacts.model.FacetTypes;
+import org.dive4elements.river.artifacts.model.WQKms;
+import org.dive4elements.river.exports.DiagramGenerator;
+import org.dive4elements.river.exports.StyledSeriesBuilder;
+import org.dive4elements.river.jfree.StyledXYSeries;
+import org.dive4elements.river.themes.ThemeDocument;
+import org.jfree.data.xy.XYSeries;
+
+
+public class ComputedDischargeProcessor
+extends DefaultProcessor
+implements FacetTypes
+{
+    private static Logger logger =
+        Logger.getLogger(ComputedDischargeProcessor.class);
+
+
+    @Override
+    public void doOut(
+            DiagramGenerator generator,
+            ArtifactAndFacet bundle,
+            ThemeDocument    theme,
+            boolean          visible
+    ) {
+        CallContext context = generator.getCallContext();
+        Object data = bundle.getData(context);
+        if (data instanceof WQKms) {
+            doDischargeOut(generator, bundle, theme, visible);
+        }
+    }
+
+    @Override
+    public String getAxisLabel(DiagramGenerator generator) {
+        return null;
+    }
+
+    /**
+     * Returns true if the Processor class is able to generate output for a facet type
+     *
+     * @param facettype Name of the facet type
+     * @return true if the facettype can be processed
+     */
+    @Override
+    public boolean canHandle(String facettype) {
+        return COMPUTED_DISCHARGE_Q.equals(facettype);
+    }
+
+    private void doDischargeOut(
+        DiagramGenerator generator,
+        ArtifactAndFacet bundle,
+        ThemeDocument theme,
+        boolean visible
+    ) {
+        CallContext context = generator.getCallContext();
+        XYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme);
+        Object data = bundle.getData(context);
+        WQKms wqkms = (WQKms) data;
+        double[][] wqData = new double[2][wqkms.size()];
+        for (int i = 0; i < wqkms.size(); i++) {
+            wqData[0][i] = wqkms.getQ(i);
+            wqData[1][i] = wqkms.getW(i);
+        }
+        StyledSeriesBuilder.addPoints(series, wqData, false);
+        generator.addAxisSeries(series, axisName, visible);
+        
+    }
+}

http://dive4elements.wald.intevation.org