aheinecke@7145: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde aheinecke@7145: * Software engineering by Intevation GmbH aheinecke@7145: * aheinecke@7145: * This file is Free Software under the GNU AGPL (>=v3) aheinecke@7145: * and comes with ABSOLUTELY NO WARRANTY! Check out the aheinecke@7145: * documentation coming with Dive4Elements River for details. aheinecke@7145: */ aheinecke@7145: aheinecke@7145: package org.dive4elements.river.exports.process; aheinecke@7145: aheinecke@7145: import org.apache.log4j.Logger; aheinecke@7145: import org.jfree.data.xy.XYSeries; aheinecke@7145: aheinecke@7145: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; aheinecke@7145: import org.dive4elements.artifacts.CallContext; aheinecke@7145: import org.dive4elements.river.artifacts.model.FacetTypes; aheinecke@7145: import org.dive4elements.river.exports.DiagramGenerator; aheinecke@7145: import org.dive4elements.river.exports.StyledSeriesBuilder; aheinecke@7145: import org.dive4elements.river.jfree.StyledXYSeries; aheinecke@7145: import org.dive4elements.river.themes.ThemeDocument; aheinecke@7145: aheinecke@7145: import org.dive4elements.river.artifacts.model.minfo.BedDiffYearResult; aheinecke@7145: import org.dive4elements.river.artifacts.model.minfo.MorphologicWidth; aheinecke@7145: aheinecke@7145: public class BedWidthProcessor extends DefaultProcessor { aheinecke@7145: aheinecke@7145: private final static Logger logger = aheinecke@7145: Logger.getLogger(BedWidthProcessor.class); aheinecke@7145: aheinecke@7145: public static final String I18N_AXIS_LABEL_DEFAULT = aheinecke@7145: "Breite [m]"; aheinecke@7145: public static final String I18N_AXIS_LABEL = aheinecke@7145: "chart.beddifference.yaxis.label.morph"; aheinecke@7145: aheinecke@7145: @Override aheinecke@7145: public void doOut( aheinecke@7145: DiagramGenerator generator, aheinecke@7145: ArtifactAndFacet bundle, aheinecke@7145: ThemeDocument theme, aheinecke@7145: boolean visible) { aheinecke@7145: CallContext context = generator.getCallContext(); aheinecke@7145: XYSeries series = new StyledXYSeries(bundle.getFacetDescription(), aheinecke@7145: theme); aheinecke@7145: Object data = bundle.getData(context); aheinecke@7145: aheinecke@7145: if (data instanceof BedDiffYearResult) { aheinecke@7145: BedDiffYearResult bData = (BedDiffYearResult) data; aheinecke@7145: StyledSeriesBuilder.addPoints(series, bData.getMorphWidthData(), true); aheinecke@7145: } else if (data instanceof MorphologicWidth) { aheinecke@7145: MorphologicWidth bData = (MorphologicWidth) data; aheinecke@7145: StyledSeriesBuilder.addPoints(series, bData.getAsArray(), true); aheinecke@7148: } else { aheinecke@7148: logger.error("Unknown data for facet: " + bundle.getFacetName()); aheinecke@7145: } aheinecke@7145: aheinecke@7145: generator.addAxisSeries(series, axisName, visible); aheinecke@7145: } aheinecke@7145: aheinecke@7145: @Override aheinecke@7145: public boolean canHandle(String facettype) { aheinecke@7145: return facettype.equals(FacetTypes.BED_DIFFERENCE_MORPH_WIDTH) || aheinecke@7145: facettype.equals(FacetTypes.MORPHOLOGIC_WIDTH); aheinecke@7145: } aheinecke@7145: aheinecke@7145: @Override aheinecke@7145: public String getAxisLabel(DiagramGenerator generator) { aheinecke@7145: return generator.msg( aheinecke@7145: I18N_AXIS_LABEL, aheinecke@7145: I18N_AXIS_LABEL_DEFAULT); aheinecke@7145: } aheinecke@7145: }