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; teichmann@5831: import org.dive4elements.river.artifacts.model.minfo.BedHeightSingle; teichmann@5831: import org.dive4elements.river.exports.XYChartGenerator; 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@7057: public class BedheightProcessor extends DefaultProcessor { bjoern@4536: bjoern@4536: private final static Logger logger = bjoern@4536: Logger.getLogger(BedheightProcessor.class); bjoern@4536: bjoern@4536: private final static String BEDHEIGHT = "bedheight"; bjoern@4536: bjoern@4536: @Override teichmann@4551: public void doOut( teichmann@4551: XYChartGenerator generator, teichmann@4551: ArtifactAndFacet aandf, teichmann@6905: ThemeDocument theme, teichmann@4551: boolean visible, teichmann@4551: int index teichmann@4551: ) { bjoern@4536: CallContext context = generator.getCallContext(); bjoern@4536: Object data = aandf.getData(context); bjoern@4536: if (data instanceof BedHeightSingle) { bjoern@4536: doBedheightSingleOut(generator, aandf, theme, index, visible, bjoern@4536: (BedHeightSingle)data); bjoern@4536: } bjoern@4536: else if (data instanceof List) { bjoern@4536: doBedheightSingeValuesOut(generator, aandf, theme, index, visible, bjoern@4536: (List)data); bjoern@4536: } bjoern@4536: logger.error("Can't process " + data.getClass().getName() + " objects"); bjoern@4536: } bjoern@4536: bjoern@4536: private void doBedheightSingeValuesOut(XYChartGenerator generator, teichmann@6905: ArtifactAndFacet aandf, ThemeDocument theme, int index, boolean visible, bjoern@4536: List data) { teichmann@6905: logger.debug("doBedheightSingeValuesOut"); bjoern@4536: bjoern@4536: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), bjoern@4536: theme); bjoern@4536: for(BedHeightSingleValue bvalue: data) { bjoern@4536: series.add(bvalue.getStation(), bvalue.getSoundingWidth()); bjoern@4536: } bjoern@4536: generator.addAxisSeries(series, index, visible); bjoern@4536: } bjoern@4536: bjoern@4536: @Override bjoern@4536: public boolean canHandle(String facettype) { bjoern@4536: return BEDHEIGHT.equals(facettype); bjoern@4536: } bjoern@4536: bjoern@4536: public void doBedheightSingleOut(XYChartGenerator generator, teichmann@6905: ArtifactAndFacet aandf, ThemeDocument theme, int index, boolean visible, bjoern@4536: BedHeightSingle data) { bjoern@4536: double[] width = data.getMorphWidths(); bjoern@4536: double[] stations = data.getStations().toNativeArray(); bjoern@4536: bjoern@4536: logger.debug("doBedheightSingleOut"); bjoern@4536: bjoern@4536: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), bjoern@4536: theme); bjoern@4536: bjoern@4536: for (int i = 0; i < width.length; i++) { bjoern@4536: series.add(stations[i], width[i], false); bjoern@4536: } bjoern@4536: bjoern@4536: generator.addAxisSeries(series, index, visible); bjoern@4536: } bjoern@4536: }