view artifacts/src/main/java/org/dive4elements/river/artifacts/FixationArtifact.java @ 8202:e4606eae8ea5

sed src/**/*.java 's/logger/log/g'
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 05 Sep 2014 12:58:17 +0200
parents c18098d0151a
children 5e38e2924c07
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU AGPL (>=v3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * documentation coming with Dive4Elements River for details.
 */

package org.dive4elements.river.artifacts;

import org.dive4elements.artifacts.CallContext;

import org.dive4elements.river.artifacts.geom.Lines;

import org.dive4elements.river.artifacts.model.CalculationResult;
import org.dive4elements.river.artifacts.model.WKms;
import org.dive4elements.river.artifacts.model.fixings.FixRealizingResult;

import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;

import org.dive4elements.river.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      D4EArtifact
implements   WaterLineArtifact
{
    /** The log for this class. */
    private static Logger log = 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() {
        log.debug("ctor()");
    }

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

    /** Calculate waterlines against a cross section. */
    @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)) {
            log.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