felix@6927: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde felix@6927: * Software engineering by Intevation GmbH felix@6927: * felix@6927: * This file is Free Software under the GNU AGPL (>=v3) felix@6927: * and comes with ABSOLUTELY NO WARRANTY! Check out the felix@6927: * documentation coming with Dive4Elements River for details. felix@6927: */ felix@6927: felix@6927: package org.dive4elements.river.exports.process; felix@6927: felix@6927: import org.apache.log4j.Logger; felix@6927: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; felix@6927: import org.dive4elements.artifacts.CallContext; felix@6927: import org.dive4elements.river.artifacts.model.FacetTypes; aheinecke@7163: import org.dive4elements.river.artifacts.model.FlowVelocityData; gernotbelger@9312: import org.dive4elements.river.artifacts.model.WQKms; gernotbelger@9312: import org.dive4elements.river.exports.DiagramGenerator; felix@6927: import org.dive4elements.river.exports.StyledSeriesBuilder; felix@6927: import org.dive4elements.river.exports.XYChartGenerator; felix@6927: import org.dive4elements.river.jfree.StyledXYSeries; gernotbelger@9312: import org.dive4elements.river.model.FlowVelocityMeasurementValue.FastFlowVelocityMeasurementValue; felix@6927: import org.dive4elements.river.themes.ThemeDocument; gernotbelger@9312: import org.jfree.data.xy.XYSeries; felix@6927: felix@6927: /** felix@6927: * Add data to chart/generator. felix@6927: * felix@6927: * @author Björn Ricks felix@6927: */ aheinecke@7057: public class QOutProcessor extends DefaultProcessor { felix@6927: gernotbelger@9312: public static final String I18N_LONGITUDINAL_LABEL = "common.export.csv.header.q"; aheinecke@7084: gernotbelger@9312: public static final String I18N_LONGITUDINAL_LABEL_DEFAULT = "Q [m\u00b3/s]"; aheinecke@7084: teichmann@8202: /** Private log. */ gernotbelger@9312: private static final Logger log = Logger.getLogger(QOutProcessor.class); felix@6927: felix@6927: @Override gernotbelger@9312: public void doOut(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) { gernotbelger@9312: final CallContext context = generator.getContext(); gernotbelger@9312: final Object data = bundle.getData(context); gernotbelger@9556: final XYSeries series = new StyledXYSeries(bundle.getFacetName(), bundle.getFacetDescription(), theme); gernotbelger@9312: final String facetName = bundle.getFacetName(); aheinecke@7075: aheinecke@7163: if (facetName.equals(FacetTypes.FLOW_VELOCITY_DISCHARGE)) { felix@7289: if (data instanceof FlowVelocityData) { gernotbelger@9312: final FlowVelocityData fData = (FlowVelocityData) data; felix@7289: StyledSeriesBuilder.addPoints(series, fData.getQPoints(), true); gernotbelger@9312: } else { gernotbelger@9312: final FastFlowVelocityMeasurementValue fData = (FastFlowVelocityMeasurementValue) data; gernotbelger@9312: final double[][] points = new double[][] { { fData.getStation() }, { fData.getQ() } }; felix@7289: StyledSeriesBuilder.addPoints(series, points, true); felix@7289: } aheinecke@7163: } else { gernotbelger@9312: final WQKms wqkms = (WQKms) data; aheinecke@7163: StyledSeriesBuilder.addStepPointsKmQ(series, wqkms); aheinecke@7163: } aheinecke@7075: gernotbelger@9312: generator.addAxisSeries(series, this.axisName, visible); aheinecke@7075: } aheinecke@7075: aheinecke@7075: @Override gernotbelger@9312: public void doOut(final XYChartGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible, final int index) { gernotbelger@9312: final CallContext context = generator.getContext(); gernotbelger@9312: final WQKms wqkms = (WQKms) bundle.getData(context); felix@6927: gernotbelger@9556: final XYSeries series = new StyledXYSeries(bundle.getFacetName(),bundle.getFacetDescription(), theme); aheinecke@7075: aheinecke@7075: StyledSeriesBuilder.addStepPointsKmQ(series, wqkms); aheinecke@7075: aheinecke@7075: generator.addAxisSeries(series, index, visible); aheinecke@7075: gernotbelger@9312: /* Check if the diagram should be inverted */ aheinecke@7081: generator.setInverted(wqkms.guessRTLData()); felix@6927: } felix@6927: aheinecke@7084: @Override gernotbelger@9312: public String getAxisLabel(final DiagramGenerator generator) { gernotbelger@9312: return generator.msg(I18N_LONGITUDINAL_LABEL, I18N_LONGITUDINAL_LABEL_DEFAULT); aheinecke@7084: } aheinecke@7084: felix@6927: /** felix@6927: * Returns true if facettype is q-type. felix@6927: */ felix@6927: @Override gernotbelger@9312: public boolean canHandle(final String facetType) { felix@6927: if (facetType == null) { felix@6927: return false; felix@6927: } felix@6927: gernotbelger@9312: if (facetType.equals(FacetTypes.STATIC_WQKMS_Q) || facetType.equals(FacetTypes.LONGITUDINAL_Q) gernotbelger@9312: || facetType.startsWith(FacetTypes.DISCHARGE_LONGITUDINAL_Q) || facetType.startsWith(FacetTypes.FLOW_VELOCITY_DISCHARGE)) { felix@6927: return true; felix@6927: } felix@6927: return false; felix@6927: } felix@6927: } felix@6927: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :