view flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/FixationArtifactAccess.java @ 3290:36f3b53d5cfc

SQ relation: Added infrastructure to extract fractions from measurments. flys-artifacts/trunk@4958 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 12 Jul 2012 17:34:40 +0000
parents 4a70525c5b0d
children
line wrap: on
line source
package de.intevation.flys.artifacts.access;

import de.intevation.artifactdatabase.data.StateData;
import de.intevation.flys.artifacts.FLYSArtifact;
import de.intevation.flys.artifacts.model.DateRange;

import java.util.Arrays;
import java.util.Date;

import org.apache.log4j.Logger;


public class FixationArtifactAccess
extends      Access
{
    private static Logger log = Logger.getLogger(FixationArtifactAccess.class);

    protected String river;

    protected String calculationMode;

    protected Double from;
    protected Double to;
    protected Double step;

    protected Long start;
    protected Long end;

    protected Integer qSectorStart;
    protected Integer qSectorEnd;

    protected DateRange    referencePeriod;
    protected DateRange [] analysisPeriods;

    protected int [] events;

    protected Boolean preprocessing;

    protected String  function;

    protected double [] qs;

    public FixationArtifactAccess() {
    }

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

    public String getRiver() {
        if (river == null) {
            river = getString("river");
        }
        if (log.isDebugEnabled()) {
            log.debug("river: '" + river + "'");
        }
        return river;
    }

    public String getCalculationMode() {
        if (calculationMode == null) {
            calculationMode = getString("calculation.mode");
        }

        if (log.isDebugEnabled()) {
            log.debug("calculationMode: '" + calculationMode + "'");
        }
        return calculationMode;
    }

    public Double getFrom() {

        if (from == null) {
            from = getDouble("from");
        }

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

        return from;
    }

    public Double getTo() {

        if (to == null) {
            to = getDouble("to");
        }

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

        return to;
    }

    public Double getStep() {

        if (step == null) {
            step = getDouble("step");
        }

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

        return step;
    }

    public Long getStart() {

        if (start == null) {
            start = getLong("start");
        }

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

        return start;
    }

    public Long getEnd() {

        if (end == null) {
            end = getLong("end");
        }

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

        return end;
    }

    public Integer getQSectorStart() {

        if (qSectorStart == null) {
            qSectorStart = getInteger("q1");
        }

        if (log.isDebugEnabled()) {
            log.debug("q1: '" + qSectorStart + "'");
        }

        return qSectorStart;
    }

    public Integer getQSectorEnd() {

        if (qSectorEnd == null) {
            qSectorEnd = getInteger("q2");
        }

        if (log.isDebugEnabled()) {
            log.debug("q2: '" + qSectorEnd + "'");
        }

        return qSectorEnd;
    }

    public int [] getEvents() {
        if (events == null) {
            events = getIntArray("events");
        }
        if (log.isDebugEnabled() && events != null) {
            log.debug("events: " + Arrays.toString(events));
        }
        return events;
    }

    public DateRange getReferencePeriod() {
        if (referencePeriod == null) {
            StateData refStart = artifact.getData("ref_start");
            StateData refEnd   = artifact.getData("ref_end");

            if (refStart == null || refEnd == null) {
                log.warn("missing 'ref_start' or 'ref_start' value");
                return null;
            }

            try {
                long rs = Long.parseLong((String)refStart.getValue());
                long re = Long.parseLong((String)refEnd  .getValue());

                if (rs > re) { long t = rs; rs = re; re = t; }

                Date from = new Date(rs);
                Date to   = new Date(re);
                referencePeriod = new DateRange(from, to);
            }
            catch (NumberFormatException nfe) {
                log.warn("ref_start or ref_end is not an integer.");
            }
        }

        return referencePeriod;
    }

    public DateRange [] getAnalysisPeriods() {
        if (analysisPeriods == null) {
            analysisPeriods = getDateRange("ana_data");
        }

        return analysisPeriods;
    }

    /**
     * @return DateRange object ranging from eldest to youngest date
     * of analysis and reference periods.
     */
    public DateRange getDateRange() {
        DateRange refP = getReferencePeriod();

        Date from = refP.getFrom();
        Date to   = refP.getTo();

        DateRange[] rs = getAnalysisPeriods();
        for(DateRange r : rs) {
            if(r.getFrom().before(from)) {
                from = r.getFrom();
            }
            if(r.getTo().after(to)) {
                to = r.getTo();
            }
        }

        return new DateRange(from, to);
    }

    public Boolean getPreprocessing() {
        if (preprocessing == null) {
            preprocessing = getBoolean("preprocessing");
        }
        if (log.isDebugEnabled()) {
            log.debug("preprocessing: " + preprocessing);
        }
        return preprocessing;
    }

    public String getFunction() {
        if (function == null) {
            function = getString("function");
        }
        if (log.isDebugEnabled()) {
            log.debug("function: " + function);
        }
        return function;
    }

    public double [] getQs() {
        if (qs == null) {
            qs = getDoubleArray("qs");
        }

        if (log.isDebugEnabled() && qs != null) {
            log.debug("qs: " + Arrays.toString(qs));
        }
        return qs;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org