view flys-artifacts/src/main/java/de/intevation/flys/exports/fixings/FixDerivedCurveGenerator.java @ 3406:3732e1bab0aa

Add kilometer to chart titles flys-artifacts/trunk@5058 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Christian Lins <christian.lins@intevation.de>
date Thu, 19 Jul 2012 11:40:59 +0000
parents 750e98fc8b76
children 066e2b4d69ca
line wrap: on
line source
package de.intevation.flys.exports.fixings;

import de.intevation.artifactdatabase.state.ArtifactAndFacet;
import de.intevation.flys.artifacts.model.FacetTypes;
import de.intevation.flys.artifacts.model.fixings.FixDerivateFacet;
import de.intevation.flys.artifacts.model.fixings.FixFunction;
import de.intevation.flys.artifacts.resources.Resources;
import de.intevation.flys.exports.ChartGenerator;
import de.intevation.flys.jfree.JFreeUtil;
import de.intevation.flys.jfree.StyledXYSeries;

import org.apache.log4j.Logger;
import org.w3c.dom.Document;

/**
 * Generator for fixation derived function curve.
 *
 * @author <a href="mailto:christian.lins@intevation.de">Christian Lins</a>
 */
public class FixDerivedCurveGenerator
extends FixChartGenerator
implements FacetTypes
{
    private static Logger logger =
        Logger.getLogger(FixDerivedCurveGenerator.class);

    public static final String I18N_CHART_TITLE =
        "chart.fixings.derivedcurve.title";

    public static final String I18N_CHART_SUBTITLE =
        "chart.fixings.derivedcurve.subtitle";

    public static final String I18N_XAXIS_LABEL =
        "chart.fixings.derivedcurve.xaxis.label";

    public static final String I18N_YAXIS_LABEL =
        "chart.fixings.derivedcurve.yaxis.label";

    public static final String I18N_CHART_TITLE_DEFAULT =
        "Ableitungskurve";

    public static final String I18N_XAXIS_LABEL_DEFAULT =
        "Q [m\u00B3/s]";

    public static final String I18N_YAXIS_LABEL_DEFAULT =
        "W [NN + m]";

    public static enum YAXIS {
        W(0),
        Q(1);
        public int idx;
        private YAXIS(int c) {
            idx = c;
        }
    }


    @Override
    public void doOut(ArtifactAndFacet aaf, Document doc, boolean visible) {
        logger.debug("doOut");

        FixDerivateFacet facet = (FixDerivateFacet)aaf.getFacet();
        FixFunction func = (FixFunction)facet.getData(
            aaf.getArtifact(), context);

        if (func == null) {
            logger.warn("doOut: Facet does not contain FixFunction");
            return;
        }

        double maxQ = func.getMaxQ();

        if (maxQ > 0) {
            StyledXYSeries series = JFreeUtil.sampleFunction2D(
                func.getFunction(),
                doc,
                aaf.getFacetDescription(),
                500,   // number of samples
                0.0 ,  // start
                maxQ); // end
            addAxisSeries(series, 0, visible);
        }
    }


    @Override
    protected String getDefaultChartTitle() {
        return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT);
    }


    @Override
    protected String getChartTitle() {
        return Resources.format(
                context.getMeta(),
                I18N_CHART_TITLE,
                I18N_CHART_TITLE_DEFAULT,
                context.getContextValue(CURRENT_KM));
    }


    @Override
    protected String getDefaultXAxisLabel() {
        return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT);
    }


    @Override
    protected String getDefaultYAxisLabel(int pos) {
        return msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT);
    }


    @Override
    protected ChartGenerator.YAxisWalker getYAxisWalker() {
        return new YAxisWalker() {
            @Override
            public int length() {
                return YAXIS.values().length;
            }

            @Override
             public String getId(int idx) {
                YAXIS[] yaxes = YAXIS.values();
                return yaxes[idx].toString();
            }
        };
    }
}

// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org