teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5994: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5994: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.exports.process; bjoern@4536: bjoern@4536: import java.util.List; bjoern@4536: bjoern@4536: import org.apache.log4j.Logger; bjoern@4536: import org.jfree.data.xy.XYSeries; bjoern@4536: teichmann@5831: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; teichmann@5831: import org.dive4elements.artifacts.CallContext; felix@7391: import org.dive4elements.river.artifacts.model.minfo.BedHeightSingleData; felix@7394: import org.dive4elements.river.artifacts.model.FacetTypes; teichmann@5831: import org.dive4elements.river.exports.XYChartGenerator; aheinecke@7093: import org.dive4elements.river.exports.DiagramGenerator; teichmann@5831: import org.dive4elements.river.jfree.StyledXYSeries; teichmann@5831: import org.dive4elements.river.model.BedHeightSingleValue; teichmann@6905: import org.dive4elements.river.themes.ThemeDocument; bjoern@4536: aheinecke@7144: public class BedHeightSoundingProcessor extends DefaultProcessor { bjoern@4536: bjoern@4536: private final static Logger logger = aheinecke@7144: Logger.getLogger(BedHeightSoundingProcessor.class); bjoern@4536: aheinecke@7127: public static final String I18N_AXIS_LABEL_DEFAULT aheinecke@7127: = "Gepeilte Breite [m]"; aheinecke@7127: public static final String I18N_AXIS_LABEL = aheinecke@7127: "chart.bedheight_middle.sounding.yaxis.label"; aheinecke@7127: bjoern@4536: @Override teichmann@4551: public void doOut( aheinecke@7093: DiagramGenerator generator, aheinecke@7093: ArtifactAndFacet bundle, aheinecke@7093: ThemeDocument theme, aheinecke@7093: boolean visible) { felix@7388: XYSeries series = prepareSeries(bundle, theme, generator.getCallContext()); felix@7388: generator.addAxisSeries(series, axisName, visible); felix@7388: } felix@7388: felix@7388: @Override felix@7388: public void doOut( felix@7388: XYChartGenerator generator, felix@7388: ArtifactAndFacet bundle, felix@7388: ThemeDocument theme, felix@7388: boolean visible, felix@7388: int index felix@7388: ) { felix@7388: XYSeries series = prepareSeries(bundle, theme, generator.getCallContext()); felix@7388: generator.addAxisSeries(series, index, visible); felix@7388: } felix@7388: felix@7388: /** Prepare an series, independent of axis. */ felix@7388: private XYSeries prepareSeries(ArtifactAndFacet bundle, felix@7388: ThemeDocument theme, CallContext context) { aheinecke@7093: Object data = bundle.getData(context); aheinecke@7093: XYSeries series = new StyledXYSeries(bundle.getFacetDescription(), aheinecke@7093: theme); felix@7391: if (data instanceof BedHeightSingleData) { felix@7391: BedHeightSingleData bData = (BedHeightSingleData)data; aheinecke@7093: double[] width = bData.getMorphWidths(); aheinecke@7093: double[] stations = bData.getStations().toNativeArray(); aheinecke@7093: aheinecke@7093: logger.debug("doBedheightSingleOut"); aheinecke@7093: aheinecke@7093: for (int i = 0; i < width.length; i++) { aheinecke@7093: series.add(stations[i], width[i], false); aheinecke@7093: } aheinecke@7093: } else if (data instanceof List) { aheinecke@7093: List bData = (List)data; aheinecke@7093: aheinecke@7093: logger.debug("doBedheightSingleValueOut"); aheinecke@7093: aheinecke@7093: for(BedHeightSingleValue bvalue: bData) { aheinecke@7093: series.add(bvalue.getStation(), bvalue.getSoundingWidth()); aheinecke@7093: } aheinecke@7093: } felix@7389: else { felix@7389: logger.error("Unknown data type " + data.getClass()); felix@7389: } felix@7388: return series; aheinecke@7093: } aheinecke@7093: bjoern@4536: bjoern@4536: @Override bjoern@4536: public boolean canHandle(String facettype) { felix@7394: return FacetTypes.BEDHEIGHT.equals(facettype); bjoern@4536: } aheinecke@7127: aheinecke@7127: @Override aheinecke@7127: public String getAxisLabel(DiagramGenerator generator) { aheinecke@7127: return generator.msg( aheinecke@7127: I18N_AXIS_LABEL, aheinecke@7127: I18N_AXIS_LABEL_DEFAULT); aheinecke@7127: } bjoern@4536: }