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.fixings; christian@3067: christian@3761: import org.apache.log4j.Logger; christian@3761: teichmann@5831: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.FacetTypes; teichmann@5831: import org.dive4elements.river.artifacts.model.fixings.FixDerivateFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.fixings.FixFunction; teichmann@5831: import org.dive4elements.river.artifacts.resources.Resources; teichmann@5831: import org.dive4elements.river.exports.ChartGenerator; teichmann@5831: import org.dive4elements.river.jfree.JFreeUtil; teichmann@5831: import org.dive4elements.river.jfree.StyledXYSeries; teichmann@6905: import org.dive4elements.river.themes.ThemeDocument; christian@3067: christian@3067: /** christian@3067: * Generator for fixation derived function curve. christian@3067: * christian@3067: * @author Christian Lins christian@3067: */ sascha@3076: public class FixDerivedCurveGenerator raimund@3088: extends FixChartGenerator christian@3067: implements FacetTypes christian@3067: { felix@3905: /** Private logger. */ sascha@3076: private static Logger logger = christian@3761: Logger.getLogger(FixDerivedCurveGenerator.class); christian@3067: christian@3067: public static final String I18N_CHART_TITLE = christian@3761: "chart.fixings.derivedcurve.title"; christian@3067: sascha@3076: public static final String I18N_CHART_SUBTITLE = christian@3761: "chart.fixings.derivedcurve.subtitle"; christian@3067: christian@3067: public static final String I18N_XAXIS_LABEL = christian@3761: "chart.fixings.derivedcurve.xaxis.label"; christian@3067: sascha@3076: public static final String I18N_YAXIS_LABEL = christian@3761: "chart.fixings.derivedcurve.yaxis.label"; christian@3067: sascha@3076: public static final String I18N_CHART_TITLE_DEFAULT = christian@3761: "Ableitungskurve"; christian@3067: christian@3067: public static final String I18N_XAXIS_LABEL_DEFAULT = christian@3761: "Q [m\u00B3/s]"; christian@3067: christian@3067: public static final String I18N_YAXIS_LABEL_DEFAULT = christian@3761: "W [NN + m]"; christian@3067: christian@3067: public static enum YAXIS { christian@3067: W(0), christian@3067: Q(1); christian@3067: public int idx; christian@3067: private YAXIS(int c) { christian@3067: idx = c; sascha@3076: } christian@3067: } christian@3067: christian@3067: christian@3067: @Override teichmann@6905: public void doOut(ArtifactAndFacet aaf, ThemeDocument doc, boolean visible) { christian@3067: logger.debug("doOut"); christian@3067: christian@3761: if (FacetTypes.IS.MANUALPOINTS(aaf.getFacetName())) { christian@3761: doPoints(aaf.getData(context), christian@3761: aaf, christian@3761: doc, visible, YAXIS.W.idx); sascha@3215: } christian@3761: else { christian@3761: FixDerivateFacet facet = (FixDerivateFacet)aaf.getFacet(); christian@3761: FixFunction func = (FixFunction)facet.getData( christian@3761: aaf.getArtifact(), context); sascha@3110: christian@3761: if (func == null) { christian@3761: logger.warn("doOut: Facet does not contain FixFunction"); christian@3761: return; christian@3761: } sascha@3215: christian@3761: double maxQ = func.getMaxQ(); christian@3761: christian@3761: if (maxQ > 0) { christian@3761: StyledXYSeries series = JFreeUtil.sampleFunction2D( christian@3761: func.getFunction(), christian@3761: doc, christian@3761: aaf.getFacetDescription(), christian@3761: 500, // number of samples christian@3761: 0.0 , // start christian@3761: maxQ); // end christian@3761: addAxisSeries(series, 0, visible); christian@3761: } christian@3067: } christian@3067: } christian@3067: christian@3067: christian@3067: @Override christian@3067: protected String getDefaultChartTitle() { christian@3067: return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT); christian@3067: } christian@3067: christian@3067: christian@3067: @Override christian@3406: protected String getChartTitle() { christian@3406: return Resources.format( christian@3406: context.getMeta(), christian@3406: I18N_CHART_TITLE, christian@3406: I18N_CHART_TITLE_DEFAULT, christian@3406: context.getContextValue(CURRENT_KM)); christian@3406: } christian@3406: christian@3406: christian@3406: @Override christian@3067: protected String getDefaultXAxisLabel() { christian@3067: return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT); christian@3067: } christian@3067: christian@3067: christian@3067: @Override christian@3067: protected String getDefaultYAxisLabel(int pos) { sascha@3076: return msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT); christian@3067: } christian@3067: christian@3067: christian@3067: @Override christian@3067: protected ChartGenerator.YAxisWalker getYAxisWalker() { christian@3067: return new YAxisWalker() { christian@3067: @Override christian@3067: public int length() { christian@3067: return YAXIS.values().length; christian@3067: } christian@3067: christian@3067: @Override christian@3761: public String getId(int idx) { christian@3067: YAXIS[] yaxes = YAXIS.values(); christian@3067: return yaxes[idx].toString(); christian@3067: } christian@3067: }; christian@3067: } christian@3067: } christian@3067: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :