view flys-artifacts/src/main/java/de/intevation/flys/artifacts/FixationArtifact.java @ 4573:b87073a05f9d

flys-client: Patch to render combobox options as clickable links. The way of passing data arguments to the links and further to the Artifact feeding service is somewhat hacked and should be refactored (later...).
author Christian Lins <christian.lins@intevation.de>
date Tue, 27 Nov 2012 12:50:10 +0100
parents 03b8d10a99c0
children b195fede1c3b
line wrap: on
line source
package de.intevation.flys.artifacts;

import de.intevation.artifacts.CallContext;

import de.intevation.flys.artifacts.geom.Lines;
import de.intevation.flys.artifacts.StaticWKmsArtifact;

import de.intevation.flys.artifacts.model.CalculationResult;
import de.intevation.flys.artifacts.model.WKms;
import de.intevation.flys.artifacts.model.fixings.FixRealizingResult;

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

import de.intevation.flys.model.FastCrossSectionLine;

import org.apache.log4j.Logger;

/**
 * The default fixation analysis artifact.
 *
 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
 */
public class FixationArtifact
extends      FLYSArtifact
implements   WaterLineArtifact
{
    /** The logger for this class. */
    private static Logger logger = Logger.getLogger(FixationArtifact.class);

    /** The name of the artifact. */
    public static final String ARTIFACT_NAME = "fixanalysis";

    /* FacetActivity for this artifact is registered in FixAnalysisCompute . */

    /**
     * The default constructor.
     */
    public FixationArtifact() {
        logger.debug("ctor()");
    }

    /**
     * Returns the name of the concrete artifact.
     *
     * @return the name of the concrete artifact.
     */
    @Override
    public String getName() {
        return ARTIFACT_NAME;
    }

    @Override
    public Lines.LineData getWaterLines(
        int                  facetIdx,
        FastCrossSectionLine      csl,
        double                      d,
        double                      w,
        CallContext           context
    ) {
        FixRealizingResult result = (FixRealizingResult)
            ((CalculationResult)this.compute(context, ComputeType.ADVANCE, false)).getData();
        
        WKms wkms = result.getWQKms()[facetIdx];

        double km = csl.getKm();

        // Find W at km.
        double wAtKm;

        wAtKm = StaticWKmsArtifact.getWAtKm(wkms, km);

        if (wAtKm == -1 || Double.isNaN(wAtKm)) {
            logger.warn("Waterlevel at km " + km + " unknown.");
            return new Lines.LineData(new double[][] {{}}, 0d, 0d);
        }

        // This should be FixRealizationResult, which can be getWQKms()ed
        return Lines.createWaterLines(csl.getPoints(), wAtKm);
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org