Mercurial > dive4elements > river
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); + + } +}