view flys-artifacts/src/main/java/org/dive4elements/river/exports/process/BedheightProcessor.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/exports/process/BedheightProcessor.java@2fadc6c5cdad
children
line wrap: on
line source
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