view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/DurationCurveState.java @ 5285:05eaecd2be42

merge
author Tom Gottfried <tom@intevation.de>
date Thu, 14 Mar 2013 11:56:13 +0100
parents 7887112c37cc
children
line wrap: on
line source
package de.intevation.flys.artifacts.states;

import java.util.List;

import org.apache.log4j.Logger;

import de.intevation.artifacts.CallContext;

import de.intevation.artifactdatabase.state.Facet;

import de.intevation.flys.artifacts.access.RangeAccess;
import de.intevation.flys.artifacts.FLYSArtifact;
import de.intevation.flys.artifacts.WINFOArtifact;
import de.intevation.flys.artifacts.ChartArtifact;

import de.intevation.flys.artifacts.model.DurationCurveFacet;
import de.intevation.flys.artifacts.model.FacetTypes;
import de.intevation.flys.artifacts.model.WQDay;

import de.intevation.flys.artifacts.model.DataFacet;
import de.intevation.flys.artifacts.model.ReportFacet;
import de.intevation.flys.artifacts.model.EmptyFacet;
import de.intevation.flys.artifacts.model.CalculationResult;

import de.intevation.flys.artifacts.resources.Resources;

import de.intevation.flys.utils.FLYSUtils;


/**
 * The final state that will be reached after the duration curve calculation
 * mode has been chosen.
 *
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 */
public class DurationCurveState
extends      DefaultState
implements   FacetTypes
{
    /** The logger that is used in this state. */
    private static Logger logger = Logger.getLogger(DurationCurveState.class);

    public DurationCurveState() {
    }


    @Override
    public Object computeAdvance(
        FLYSArtifact artifact,
        String       hash,
        CallContext  context,
        List<Facet>  facets,
        Object       old
    ) {
        if (artifact instanceof WINFOArtifact) {
            WINFOArtifact winfo = (WINFOArtifact)artifact;

            CalculationResult res;

            if (old instanceof CalculationResult) {
                res = (CalculationResult)old;
            }
            else {
                res = winfo.getDurationCurveData();
            }

            WQDay wqday = (WQDay)res.getData();

            if (wqday != null && facets != null) {
                RangeAccess rangeAccess = new RangeAccess(winfo, context);
                // Create an i18ed name for a (w or q) duration curve facet.
                Object[] args = new Object[] {
                    FLYSUtils.getRiver(winfo).getName(),
                    rangeAccess.getLocations()[0]
                };

                String nameW = Resources.getMsg(
                    context.getMeta(),
                    "chart.duration.curve.curve.w",
                    "",
                    args);

                String nameQ = Resources.getMsg(
                    context.getMeta(),
                    "chart.duration.curve.curve.q",
                    "",
                    args);

                Facet w = new DurationCurveFacet(DURATION_W, nameW);
                Facet q = new DurationCurveFacet(DURATION_Q, nameQ);

                facets.add(w);
                facets.add(q);

                facets.add(new DataFacet(CSV, "CSV data"));
                facets.add(new DataFacet(PDF, "PDF data"));

                if (res.getReport().hasProblems()) {
                    facets.add(new ReportFacet());
                }
            }

            return res;
        }
        else if (artifact instanceof ChartArtifact) {
            ChartArtifact chart = (ChartArtifact)artifact;
            facets.add(new EmptyFacet());
            return null;
        }
        return null;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org