view artifacts/src/main/java/org/dive4elements/river/exports/process/SQRelationProcessor.java @ 8022:b5cba2690347

Removed obsolete imports.
author Sascha L. Teichmann <teichmann@intevation.de>
date Wed, 09 Jul 2014 16:38:29 +0200
parents e3f2d8c006fb
children e4606eae8ea5
line wrap: on
line source
/* Copyright (C) 2013 by Bundesanstalt für Gewässerkunde
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU AGPL (>=v3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * documentation coming with Dive4Elements River for details.
 */

package org.dive4elements.river.exports.process;

import java.util.Map;

import org.apache.log4j.Logger;

import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
import org.dive4elements.artifacts.CallContext;
import org.dive4elements.river.exports.DiagramGenerator;
import org.dive4elements.river.jfree.StyledXYSeries;
import org.dive4elements.river.themes.ThemeDocument;
import org.dive4elements.river.artifacts.model.FacetTypes;

import org.dive4elements.river.jfree.JFreeUtil;

import org.dive4elements.river.artifacts.model.sq.SQ;
import org.dive4elements.river.artifacts.model.sq.SQFunction;

public class SQRelationProcessor extends DefaultProcessor {

    public static final String I18N_AXIS_LABEL =
        "chart.sq_relation.yaxis.label";
    public static final String I18N_AXIS_LABEL_DEFAULT =
        "";

    private final static Logger logger =
            Logger.getLogger(SQRelationProcessor.class);

    @Override
    public void doOut(
            DiagramGenerator generator,
            ArtifactAndFacet bundle,
            ThemeDocument    theme,
            boolean          visible) {
        CallContext context = generator.getCallContext();
        String facetName = bundle.getFacetName();
        StyledXYSeries series;
        Object data = bundle.getData(context);
        String desc = bundle.getFacetDescription();
        Map<String, String> metaData =
            bundle.getFacet().getMetaData(bundle.getArtifact(), context);
        if (data == null) {
            // Check has been here before so we keep it but
            // this should never happen.
            logger.error("Data is null for facet: " + facetName);
            return;
        }

        if (FacetTypes.IS.SQ_CURVE(facetName)) {
            SQFunction func = (SQFunction) data;

            series = JFreeUtil.sampleFunction2DPositive(
                func.getFunction(),
                theme,
                desc,
                500,
                Math.max(func.getMinQ(), 0.01),
                Math.max(func.getMaxQ(), 0.02));

        } else if (FacetTypes.IS.SQ_MEASUREMENT(facetName) ||
               FacetTypes.IS.SQ_OUTLIER(facetName)) {

            SQ[] sqs = (SQ[]) data;
            series = new StyledXYSeries(desc, theme);

            for (SQ sq: sqs) {
                double q = sq.getQ();
                double s = sq.getS();
                if (s > 0d && q > 0d) {
                    series.add(q, s, false);
                }
            }
        } else {
            logger.error("Could not handle: " + facetName);
            return;
        }
        series.putMetaData(metaData, bundle.getArtifact(), context);

        if (logger.isDebugEnabled()) {
            logger.debug("Series '" + desc + "' has "
                + series.getItemCount() + " items.");

            logger.debug("   -> min x = " + series.getMinX());
            logger.debug("   -> max x = " + series.getMaxX());
            logger.debug("   -> min y = " + series.getMinY());
            logger.debug("   -> max y = " + series.getMaxY());
        }

        generator.addAxisSeries(series, axisName, visible);
    }

    @Override
    public boolean canHandle(String facettype) {
        return FacetTypes.IS.SQ_CURVE(facettype) ||
            FacetTypes.IS.SQ_MEASUREMENT(facettype) ||
            FacetTypes.IS.SQ_OUTLIER(facettype);
    }

    @Override
    public String getAxisLabel(DiagramGenerator generator) {
        return generator.msg(
                I18N_AXIS_LABEL,
                I18N_AXIS_LABEL_DEFAULT);
    }
}

http://dive4elements.wald.intevation.org