view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ComputedDischargeCurveState.java @ 4031:e4e345d81a65

issue889/2
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Thu, 04 Oct 2012 14:54:44 +0200
parents c1f445b94d03
children 5fb103635427
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.FLYSArtifact;
import de.intevation.flys.artifacts.WINFOArtifact;
import de.intevation.flys.artifacts.ChartArtifact;

import de.intevation.flys.artifacts.model.FacetTypes;
import de.intevation.flys.artifacts.model.WaterlevelFacet;
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.WQKms;
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 discharge curve calculation
 * mode has been chosen.
 *
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 */
public class ComputedDischargeCurveState
extends      DefaultState
implements   FacetTypes
{
    /** The logger that is used in this state.*/
    private static Logger logger =
        Logger.getLogger(ComputedDischargeCurveState.class);

    public ComputedDischargeCurveState() {
    }


    /**
     * Get computed discharge curve data from cache (if available) or
     * compute anew. Create Waterlevel and DataFacets.
     */
    @Override
    public Object computeAdvance(
        FLYSArtifact artifact,
        String       hash,
        CallContext  context,
        List<Facet>  facets,
        Object       old
    ) {
        logger.debug("ComputedDischargeCurveState.computeAdvance");
        if(artifact instanceof WINFOArtifact) {
            WINFOArtifact winfo = (WINFOArtifact)artifact;

            CalculationResult res = old instanceof CalculationResult
                ? (CalculationResult)old
                : winfo.getComputedDischargeCurveData();

            WQKms [] wqkms = (WQKms [])res.getData();

            if (facets != null && wqkms.length > 0) {
                for (int i = 0; i < wqkms.length; ++i) {

                    Object[] args = new Object[] {
                        FLYSUtils.getRiver(winfo).getName(),
                        wqkms[i].getName()
                    };

                    String name = Resources.getMsg(
                        context.getMeta(),
                        "chart.computed.discharge.curve.curve.label",
                        "",
                        args);

                    facets.add(new WaterlevelFacet(i, COMPUTED_DISCHARGE_Q, name));
                    facets.add(new WaterlevelFacet(i, AT, "AT data"));
                }

                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