view flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/Calculation4Access.java @ 4837:9e25c7523485

Fixed calculation of effective width in MINFO SQ relation. * Get all (including empty datasets) from db. * Filter empty datasets when processing data of the same date. * Added debug outputs.
author Raimund Renkert <rrenkert@intevation.de>
date Wed, 23 Jan 2013 11:14:41 +0100
parents 65bfb6faa538
children 61ebb6fb2ac4
line wrap: on
line source
package de.intevation.flys.artifacts.access;

import de.intevation.flys.artifacts.FLYSArtifact;

import de.intevation.flys.artifacts.model.Segment;

import java.util.Collections;
import java.util.List;

import org.apache.log4j.Logger;

import de.intevation.flys.utils.DoubleUtil;
import de.intevation.flys.utils.FLYSUtils;

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

    protected List<Segment> segments;

    protected double [] fromToStep;

    protected Boolean isQ;

    protected Boolean isRange;

    public Calculation4Access() {
    }

    public Calculation4Access(FLYSArtifact artifact) {
        super(artifact);
    }

    public List<Segment> getSegments() {
        if (segments == null) {
            String input = getString("wq_values");
            if (input == null || (input = input.trim()).length() == 0) {
                log.warn("no wq_values given");
                segments = Collections.<Segment>emptyList();
            }
        }
        return segments;
    }

    public boolean isQ() {
        if (isQ == null) {
            Boolean value = getBoolean("wq_isq");
            isQ = value != null && value;
        }
        return isQ;
    }

    public boolean isRange() {
        if (isRange == null) {
            String mode = getString("ld_mode");
            isRange = mode == null || mode.equals("distance");
        }
        return isRange;
    }

    public double [] getFromToStep() {
        if (fromToStep == null) {
            // XXX: Is this really needed in this calculation?
            if (!isRange()) {
                return null;
            }

            // XXX: FLYSArtifact sucks!
            double [] fromTo = FLYSUtils.getKmRange(artifact);

            if (fromTo == null) {
                return null;
            }

            Double dStep = getDouble("ld_step");
            if (dStep == null) {
                return null;
            }

            fromToStep =  new double [] {
                fromTo[0],
                fromTo[1],
                DoubleUtil.round(dStep / 1000d)
            };
        }
        return fromToStep;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org