view artifacts/src/main/java/org/dive4elements/river/exports/process/BedheightProcessor.java @ 5863:4897a58c8746

River artifacts: Added new copyright headers.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 28 Apr 2013 14:40:59 +0200
parents 5aa05a7a34b7
children af13ceeba52a
line wrap: on
line source
/* Copyright (C) 2011, 2012, 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.List;

import org.apache.log4j.Logger;
import org.jfree.data.xy.XYSeries;
import org.w3c.dom.Document;

import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
import org.dive4elements.artifacts.CallContext;
import org.dive4elements.river.artifacts.model.minfo.BedHeightSingle;
import org.dive4elements.river.exports.XYChartGenerator;
import org.dive4elements.river.jfree.StyledXYSeries;
import org.dive4elements.river.model.BedHeightSingleValue;

public class BedheightProcessor implements Processor {

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

    private final static String BEDHEIGHT = "bedheight";

    @Override
    public void doOut(
            XYChartGenerator generator,
            ArtifactAndFacet aandf,
            Document theme,
            boolean visible,
            int index
    ) {
        CallContext context = generator.getCallContext();
        Object data = aandf.getData(context);
        if (data instanceof BedHeightSingle) {
            doBedheightSingleOut(generator, aandf, theme, index, visible,
                    (BedHeightSingle)data);
        }
        else if (data instanceof List<?>) {
            doBedheightSingeValuesOut(generator, aandf, theme, index, visible,
                    (List<BedHeightSingleValue>)data);
        }
        logger.error("Can't process " + data.getClass().getName() + " objects");
    }

    private void doBedheightSingeValuesOut(XYChartGenerator generator,
            ArtifactAndFacet aandf, Document theme, int index, boolean visible,
            List<BedHeightSingleValue> data) {
        logger.debug("doBedheightSingleOut");

        XYSeries series = new StyledXYSeries(aandf.getFacetDescription(),
                theme);
        for(BedHeightSingleValue bvalue: data) {
            series.add(bvalue.getStation(), bvalue.getSoundingWidth());
        }
        generator.addAxisSeries(series, index, visible);
    }

    @Override
    public boolean canHandle(String facettype) {
        return BEDHEIGHT.equals(facettype);
    }

    public void doBedheightSingleOut(XYChartGenerator generator,
            ArtifactAndFacet aandf, Document theme, int index, boolean visible,
            BedHeightSingle data) {
        double[] width = data.getMorphWidths();
        double[] stations = data.getStations().toNativeArray();

        logger.debug("doBedheightSingleOut");

        XYSeries series = new StyledXYSeries(aandf.getFacetDescription(),
                theme);

        for (int i = 0; i < width.length; i++) {
            series.add(stations[i], width[i], false);
        }

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

http://dive4elements.wald.intevation.org