view artifacts/src/main/java/org/dive4elements/river/artifacts/access/SQRelationAccess.java @ 7261:a56fe3bc6700

Refactoring: Let RiverAccess.getRiver return an River. Renamed getRiver in getRiverName. Update Callers.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Tue, 08 Oct 2013 14:50:58 +0200
parents 3ccbc278f2e6
children d8d0caaf60a2
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.access;

import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;

import org.dive4elements.river.artifacts.D4EArtifact;
import org.dive4elements.river.artifacts.model.DateRange;
import org.dive4elements.river.model.MeasurementStation;

public class SQRelationAccess
extends      RiverAccess
{
    private static Logger log = Logger.getLogger(SQRelationAccess.class);

    protected Double    location;

    protected DateRange period;

    protected Double    outliers;

    private String      method;

    protected MeasurementStation measurementStation;

    public SQRelationAccess() {
    }

    public SQRelationAccess(D4EArtifact artifact) {
        super(artifact);
    }

    public Double getLocation() {
        if (location == null) {
            // XXX: The parameter name suggests plural!?
            location = getDouble("ld_locations");
        }

        if (log.isDebugEnabled()) {
            log.debug("location: " + location);
        }

        return location;
    }

    public DateRange getPeriod() {
        if (period == null) {
            Long start = getLong("start");
            Long end   = getLong("end");

            if (start != null && end != null) {
                period = new DateRange(new Date(start), new Date(end));
            }
        }

        return period;
    }

    public Double getOutliers() {
        if (outliers == null) {
            outliers = getDouble("outliers");
        }
        if (log.isDebugEnabled()) {
            log.debug("outliers: " + outliers);
        }
        return outliers;
    }

    public String getOutlierMethod() {
        if (method == null) {
            method = getString("outlier-method");
        }
        if (log.isDebugEnabled()) {
            log.debug("outlier-method: " + method);
        }
        return method;
    }

    public String getMeasurementStationName() {
        MeasurementStation station = getMeasurementStation();
        return station == null ? null : station.getName();
    }

    public String getMeasurementStationGaugeName() {
        MeasurementStation station = getMeasurementStation();
        return station == null ? null : station.getGaugeName();
    }

    public MeasurementStation getMeasurementStation() {
        if (measurementStation != null) {
            return measurementStation;
        }
        List<MeasurementStation> candidates = MeasurementStation.getStationsAtKM(
                getRiverName(), getLocation());
        if (candidates != null) {
            // Just take the first one as we only use the name
            // and that "should" be unique at the location
            measurementStation = candidates.get(0);
        }

        return measurementStation;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org