Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/exports/process/HistoricalDischargeProcessor.java @ 8320:b1303070c050
Generate a W in CM axis if there are W data.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Wed, 24 Sep 2014 17:39:29 +0200 |
parents | e4606eae8ea5 |
children | 8dde253e04f7 |
line wrap: on
line source
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 HistoricalDischargeProcessor extends DefaultProcessor implements FacetTypes { private final static Logger log = Logger.getLogger(HistoricalDischargeProcessor.class); /** Station for which the diagram is shown. */ private double km; /** Tolerance for comparison of kilometers. */ public static final double KM_EPSILON = 0.001d; /** This processor needs to be constructed with a given km. */ public HistoricalDischargeProcessor() { km = Double.NaN; } public HistoricalDischargeProcessor(double km) { this.km = km; } /** Process data, add it to plot. */ @Override public void doOut( DiagramGenerator generator, ArtifactAndFacet bundle, ThemeDocument theme, boolean visible ) { log.debug("do out: " + bundle.getFacetName()); CallContext context = generator.getCallContext(); Object data = bundle.getData(context); if (data instanceof WQKms) { doDischargeOut(generator, bundle, theme, visible); } } /** True if this processor knows how to deal with facetType. */ @Override public boolean canHandle(String facetType) { return HISTORICAL_DISCHARGE_WQ_CURVE.equals(facetType); } /** The station of the current calculation/view. */ protected double getKm() { return km; } /** * Add series with discharge curve to diagram. */ protected void doDischargeOut( DiagramGenerator generator, ArtifactAndFacet bundle, ThemeDocument theme, boolean visible ) { CallContext context = generator.getCallContext(); WQKms data = (WQKms)bundle.getData(context); XYSeries series = new StyledXYSeries(bundle.getFacetName(), theme); double[][] wqData = new double[2][data.size()]; for (int i = 0; i < data.size(); i++) { wqData[0][i] = data.getQ(i); wqData[1][i] = data.getW(i); } StyledSeriesBuilder.addPoints(series, wqData, false); generator.addAxisSeries(series, axisName, visible); } }