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.jfree.data.xy.XYSeries; felix@6927: felix@6927: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; felix@6927: import org.dive4elements.artifacts.CallContext; felix@6927: import org.dive4elements.river.artifacts.model.FacetTypes; felix@6927: import org.dive4elements.river.artifacts.model.WQKms; felix@6927: felix@6927: import org.dive4elements.river.exports.StyledSeriesBuilder; felix@6927: import org.dive4elements.river.exports.XYChartGenerator; aheinecke@7075: import org.dive4elements.river.exports.DiagramGenerator; felix@6927: import org.dive4elements.river.jfree.StyledXYSeries; felix@6927: import org.dive4elements.river.themes.ThemeDocument; 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: aheinecke@7084: public static final String I18N_LONGITUDINAL_LABEL = aheinecke@7084: "chart.longitudinal.section.yaxis.second.label"; aheinecke@7084: aheinecke@7084: public static final String aheinecke@7084: I18N_LONGITUDINAL_LABEL_DEFAULT = "Q [m\u00b3/s]"; aheinecke@7084: felix@6927: /** Private logger. */ felix@6927: private static final Logger logger = felix@6927: Logger.getLogger(QOutProcessor.class); felix@6927: felix@6927: @Override felix@6927: public void doOut( aheinecke@7075: DiagramGenerator generator, aheinecke@7075: ArtifactAndFacet bundle, aheinecke@7075: ThemeDocument theme, aheinecke@7075: boolean visible) { aheinecke@7075: CallContext context = generator.getCallContext(); aheinecke@7075: WQKms wqkms = (WQKms) bundle.getData(context); aheinecke@7075: aheinecke@7075: XYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme); aheinecke@7075: aheinecke@7075: StyledSeriesBuilder.addStepPointsKmQ(series, wqkms); aheinecke@7075: aheinecke@7075: generator.addAxisSeries(series, axisName, visible); aheinecke@7075: aheinecke@7081: /* Check if the diagram should be inverted*/ aheinecke@7081: generator.setInverted(wqkms.guessRTLData()); aheinecke@7075: } aheinecke@7075: aheinecke@7075: @Override aheinecke@7075: public void doOut( felix@6927: XYChartGenerator generator, aheinecke@7075: ArtifactAndFacet bundle, felix@6927: ThemeDocument theme, felix@6927: boolean visible, felix@6927: int index) felix@6927: { felix@6927: CallContext context = generator.getCallContext(); aheinecke@7075: WQKms wqkms = (WQKms) bundle.getData(context); felix@6927: aheinecke@7075: XYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme); aheinecke@7075: aheinecke@7075: StyledSeriesBuilder.addStepPointsKmQ(series, wqkms); aheinecke@7075: aheinecke@7075: generator.addAxisSeries(series, index, visible); aheinecke@7075: aheinecke@7081: /* Check if the diagram should be inverted*/ aheinecke@7081: generator.setInverted(wqkms.guessRTLData()); felix@6927: } felix@6927: aheinecke@7084: @Override aheinecke@7084: public String getAxisLabel(DiagramGenerator generator) { aheinecke@7108: return generator.msg(I18N_LONGITUDINAL_LABEL, aheinecke@7108: I18N_LONGITUDINAL_LABEL_DEFAULT); aheinecke@7084: } aheinecke@7084: felix@6927: /** felix@6927: * Returns true if facettype is q-type. felix@6927: */ felix@6927: @Override felix@6927: public boolean canHandle(String facetType) { felix@6927: if (facetType == null) { felix@6927: return false; felix@6927: } felix@6927: felix@6927: if (facetType.equals(FacetTypes.STATIC_WQKMS_Q) felix@6929: || facetType.equals(FacetTypes.LONGITUDINAL_Q) felix@6929: || facetType.equals(FacetTypes.DISCHARGE_LONGITUDINAL_Q)) { 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 :