view artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedHeightFacet.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 a709e6334c4a
children 99912f51468d
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.model.minfo;

import gnu.trove.TDoubleArrayList;

import java.util.List;

import org.apache.log4j.Logger;
import org.dive4elements.artifacts.Artifact;
import org.dive4elements.artifacts.CallContext;
import org.dive4elements.river.artifacts.D4EArtifact;
import org.dive4elements.river.artifacts.access.BedHeightAccess;
import org.dive4elements.river.artifacts.model.BlackboardDataFacet;
import org.dive4elements.river.artifacts.model.FacetTypes;
import org.dive4elements.river.model.BedHeightSingle;
import org.dive4elements.river.model.BedHeightSingleValue;

public class BedHeightFacet
extends      BlackboardDataFacet
implements   FacetTypes {

    private static final Logger log = Logger.getLogger(BedHeightFacet.class);

    private String type;

    public BedHeightFacet(String name, String description, String type) {
        this.name = name;
        this.description = description;
        this.type = type;
        this.index = 0;
        this.metaData.put("X", "chart.longitudinal.section.xaxis.label");
        this.metaData.put("Y", "chart.bedheight.height.yaxis.label");
    }

    /**
     * Returns the data this facet requires.
     *
     * @param artifact the owner artifact.
     * @param context  the CallContext (ignored).
     *
     * @return the data.
     */
    @Override
    public Object getData(Artifact artifact, CallContext context) {
        BedHeightAccess access = new BedHeightAccess((D4EArtifact)artifact);
        if (type.equals("singlevalues")) {
            /* Former doc (from BedHeightAccess):
             * Return a {@link List} of {@link BedHeightSingleValue}s
             * at the range of the artifact
             * @return List of {@link BedHeightSingleValue}s */
            BedHeightSingle single = BedHeightSingle.getBedHeightSingleById(
                    access.getHeightId());
            List<BedHeightSingleValue> bedheightValues =
                BedHeightSingleValue.getBedHeightSingleValues(
                    single,
                    access.getFrom(),
                    access.getTo());
            double[][] values = new double[2][bedheightValues.size()];
            int i = 0;
            for (BedHeightSingleValue bedheightValue : bedheightValues) {
                values[0][i] = bedheightValue.getStation();
                values[1][i] = bedheightValue.getHeight();
                i++;
            }
            return values;
        }
        else {
            /* Former doc (from BedHeightAccess):
             * Return the {@link BedHeight} at the height_id and time of the artifact
             * @return {@link BedHeight} */
            BedHeightData data = BedHeightFactory.getHeight(
                access.getType(),
                access.getHeightId());
            //data.removeNaNs();
            TDoubleArrayList stations= data.getStations();
            double[][] values = new double[2][stations.size()];
            for (int i = 0; i < stations.size(); i++) {
                values[0][i] = stations.get(i);
                values[1][i] = data.getHeight(i);
            }
            return values;
        }
    }

    /**
     * Create a deep copy of this Facet.
     * @return a deep copy.
     */
    @Override
    public BedHeightFacet deepCopy() {
        BedHeightFacet copy = new BedHeightFacet(name, description, type);
        copy.set(this);
        return copy;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org