felix@7523: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde felix@7523: * Software engineering by Intevation GmbH felix@7523: * felix@7523: * This file is Free Software under the GNU AGPL (>=v3) felix@7523: * and comes with ABSOLUTELY NO WARRANTY! Check out the felix@7523: * documentation coming with Dive4Elements River for details. felix@7523: */ felix@7523: felix@7523: package org.dive4elements.river.exports.process; felix@7523: felix@7523: import org.apache.log4j.Logger; felix@7523: import org.jfree.data.xy.XYSeries; felix@7523: felix@7523: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; felix@7523: import org.dive4elements.artifacts.CallContext; felix@7523: import org.dive4elements.river.artifacts.model.FacetTypes; felix@7523: import org.dive4elements.river.artifacts.model.WKms; felix@7523: import org.dive4elements.river.exports.StyledSeriesBuilder; felix@7523: import org.dive4elements.river.exports.DiagramGenerator; felix@7523: import org.dive4elements.river.jfree.StyledAreaSeriesCollection; felix@7523: import org.dive4elements.river.jfree.StyledXYSeries; felix@7523: import org.dive4elements.river.themes.ThemeDocument; felix@7523: felix@7523: felix@7523: public class FixDeltaWAProcessor felix@7523: extends DefaultProcessor implements FacetTypes { felix@7523: teichmann@8202: private final static Logger log = felix@7523: Logger.getLogger(FixDeltaWAProcessor.class); felix@7523: felix@7523: public static final String I18N_AXIS_LABEL = felix@7523: "chart.beddifference.height.yaxis.label"; felix@7523: public static final String I18N_AXIS_LABEL_DEFAULT = felix@7523: "delta S [cm / Jahr]"; felix@7523: felix@7523: @Override felix@7523: public void doOut( felix@7523: DiagramGenerator generator, felix@7523: ArtifactAndFacet bundle, felix@7523: ThemeDocument theme, felix@7523: boolean visible) { gernotbelger@9123: CallContext context = generator.getContext(); felix@7523: Object data = bundle.getData(context); felix@7523: gernotbelger@9556: final String facetName = bundle.getFacetName(); gernotbelger@9556: gernotbelger@9556: XYSeries series = new StyledXYSeries(facetName, tom@8856: bundle.getFacetDescription(), theme); felix@7523: felix@7523: // Handle WKms data. felix@7523: WKms wkms = (WKms) data; felix@7523: felix@7523: StyledSeriesBuilder.addPoints(series, wkms); felix@7523: generator.addAxisSeries(series, axisName, visible); felix@7523: felix@7523: // If a "band around the curve shall be drawn, add according area. felix@7523: double bandWidth = theme.parseBandWidth(); felix@7523: if (bandWidth > 0 ) { gernotbelger@9556: XYSeries seriesDown = new StyledXYSeries(facetName, felix@7523: "band " + bundle.getFacetDescription(), false, theme); gernotbelger@9556: XYSeries seriesUp = new StyledXYSeries(facetName, felix@7523: bundle.getFacetDescription()+"+/-"+bandWidth, false, theme); felix@7523: StyledSeriesBuilder.addUpperBand(seriesUp, wkms, bandWidth); felix@7523: StyledSeriesBuilder.addLowerBand(seriesDown, wkms, bandWidth); felix@7523: tom@8856: StyledAreaSeriesCollection area = gernotbelger@9556: new StyledAreaSeriesCollection(facetName, theme); felix@7523: area.addSeries(seriesUp); felix@7523: area.addSeries(seriesDown); felix@7523: area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN); gernotbelger@9496: generator.addAxisDataset(area, axisName, visible); felix@7523: } felix@7523: } felix@7523: felix@7523: @Override felix@7523: public boolean canHandle(String facetType) { felix@7523: return STATIC_DELTA_W_CMA.equals(facetType); felix@7523: } felix@7523: felix@7523: @Override felix@7523: public String getAxisLabel(DiagramGenerator generator) { felix@7523: return generator.msg( felix@7523: I18N_AXIS_LABEL, felix@7523: I18N_AXIS_LABEL_DEFAULT); felix@7523: } felix@7523: } felix@7523: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :