view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/ReferenceCurveFacet.java @ 2230:59af81364eb1

Improved the 'historical discharge' calculation: implemented findValueForW(). flys-artifacts/trunk@3872 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 01 Feb 2012 15:41:11 +0000
parents fdeb6d61c24c
children dd93a8e1377a
line wrap: on
line source
package de.intevation.flys.artifacts.model;

import de.intevation.artifactdatabase.state.Facet;

import de.intevation.artifacts.Artifact;
import de.intevation.artifacts.CallContext;

import de.intevation.flys.artifacts.FLYSArtifact;

import de.intevation.flys.artifacts.states.DefaultState.ComputeType;

import org.apache.log4j.Logger;

/** Facet for W-over-Ws. */
public class ReferenceCurveFacet 
extends      DataFacet
{
    private static Logger log = Logger.getLogger(ReferenceCurveFacet.class);

    public ReferenceCurveFacet() {
    }

    public ReferenceCurveFacet(int index, String name, String description) {
        super(index, name, description, ComputeType.ADVANCE, null, null);
    }

    public ReferenceCurveFacet(
        int         index,
        String      name,
        String      description,
        ComputeType type,
        String      stateID,
        String      hash
    ) {
        super(index, name, description, type, hash, stateID);
    }

    public Object getData(Artifact artifact, CallContext context) {

        if (log.isDebugEnabled()) {
            log.debug("Get data for reference curve at index: " + index +
                " /stateId: " + stateId);
        }

        FLYSArtifact winfo = (FLYSArtifact)artifact;

        CalculationResult res = (CalculationResult)
            winfo.compute(context, hash, stateId, type, false);

        return getInternalData((WW [])res.getData());
    }

    /** To be overwritten by normalized reference curve. */
    protected Object getInternalData(WW [] wws) {
        // Using the ApplyFunctionIterator to unify data processing.
        return new WW.ApplyFunctionIterator(wws[index]);
    }

    @Override
    public void set(Facet other) {
        super.set(other);
        ReferenceCurveFacet o= (ReferenceCurveFacet)other;
        type    = o.type;
        hash    = o.hash;
        stateId = o.stateId;
    }

    /** Copy deeply. */
    @Override
    public Facet deepCopy() {
        ReferenceCurveFacet copy = new ReferenceCurveFacet();
        copy.set(this);
        return copy;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org