view flys-artifacts/src/main/java/de/intevation/flys/exports/fixings/AbstractFixGenerator.java @ 4377:512a3af69e18

Extract common generator method from FixLongitudinalSectionGenerator The extracted methods and code can be reused for generating charts for bed differences if fixanalysis data is loaded via the datacache.
author Björn Ricks <bjoern.ricks@intevation.de>
date Fri, 02 Nov 2012 15:47:15 +0100
parents
children 8f131a870c6f
line wrap: on
line source
package de.intevation.flys.exports.fixings;

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

import de.intevation.artifactdatabase.state.ArtifactAndFacet;
import de.intevation.flys.artifacts.model.fixings.AnalysisPeriod;
import de.intevation.flys.artifacts.model.fixings.QWD;
import de.intevation.flys.jfree.StyledXYSeries;
import de.intevation.flys.utils.KMIndex;

public abstract class AbstractFixGenerator extends FixChartGenerator {

    public static final String I18N_DW_YAXIS_LABEL_DEFAULT  =
            "delta W [cm]";

    public static final String I18N_DW_YAXIS_LABEL =
            "chart.fixings.longitudinalsection.yaxis.label";

    private final static Logger logger =
            Logger.getLogger(FixLongitudinalSectionGenerator.class);
    
    @SuppressWarnings("unchecked")
    protected void doSectorAverageOut(ArtifactAndFacet aaf, Document doc, boolean visible, int idx) {
        logger.debug("doSectorAverageOut" + aaf.getFacet().getIndex());
    
        int index = aaf.getFacet().getIndex();
        int sectorNdx = index & 3;
    
        KMIndex<AnalysisPeriod> kms =
                (KMIndex<AnalysisPeriod>)aaf.getData(context);
    
        if(kms == null) {
            return;
        }
    
        XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc);
    
        for (KMIndex.Entry<AnalysisPeriod> entry: kms) {
            double km = entry.getKm();
            AnalysisPeriod ap = entry.getValue();
            QWD qwd = ap.getQSectorAverages()[sectorNdx];
            if (qwd == null) {
                continue;
            }
            double deltaW = qwd.getDeltaW();
            series.add(km, deltaW);
        }
    
        addAxisSeries(series, idx, visible);
    
    }

    @SuppressWarnings("unchecked")
    protected void doAnalysisEventsOut(ArtifactAndFacet aaf, Document doc, boolean visible, int idx) {
        logger.debug("doAnalysisEventsOut");
    
        KMIndex<QWD> kms =
                (KMIndex<QWD>)aaf.getData(context);
    
        if(kms == null) {
            return;
        }
    
        XYSeriesCollection col = new XYSeriesCollection();
    
        StyledXYSeries series = new StyledXYSeries(aaf.getFacetDescription(), false, doc);
    
        for (KMIndex.Entry<QWD> entry: kms) {
            double km = entry.getKm();
            QWD qwd = entry.getValue();
    
            series.add(km, qwd.getDeltaW());
        }
        col.addSeries(series);
    
        addAxisDataset(col, idx, visible);
    }

    @SuppressWarnings("unchecked")
    protected void doReferenceEventsOut(ArtifactAndFacet aaf, Document doc, boolean visible, int idx) {
        logger.debug("doReferenceEventOut");
    
        KMIndex<QWD> kms =
                (KMIndex<QWD>)aaf.getData(context);
    
        if(kms == null) {
            return;
        }
    
        XYSeriesCollection col = new XYSeriesCollection();
    
        StyledXYSeries series = new StyledXYSeries(aaf.getFacetDescription(), false, doc);
    
        for (KMIndex.Entry<QWD> entry: kms) {
            double km = entry.getKm();
            QWD qwd = entry.getValue();
    
            series.add(km, qwd.getDeltaW());
        }
        col.addSeries(series);
    
        addAxisDataset(col, idx, visible);
    }

}

http://dive4elements.wald.intevation.org