view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SQRelationCalculation.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 ec9aab93f292
children 79c8e0d9fdea
line wrap: on
line source
package de.intevation.flys.artifacts.model.sq;

import de.intevation.flys.artifacts.access.SQRelationAccess;

import de.intevation.flys.artifacts.model.Calculation;
import de.intevation.flys.artifacts.model.CalculationResult;
import de.intevation.flys.artifacts.model.DateRange;

import de.intevation.flys.backend.SedDBSessionHolder;

import org.apache.log4j.Logger;

public class SQRelationCalculation extends Calculation {

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

    protected String       river;
    protected double       location;
    protected DateRange [] periods;
    protected double       outliers;

    public SQRelationCalculation() {
    }

    public SQRelationCalculation(SQRelationAccess access) {

        String       river    = access.getRiver();
        Double       location = access.getLocation();
        DateRange [] periods  = access.getPeriods();
        Double       outliers = access.getOutliers();

        if (river == null) {
            // TODO: i18n
            addProblem("sq.missing.river");
        }

        if (location == null) {
            // TODO: i18n
            addProblem("sq.missing.location");
        }

        if (periods == null) {
            // TODO: i18n
            addProblem("sq.missing.periods");
        }

        if (outliers == null) {
            // TODO: i18n
            addProblem("sq.missing.outliers");
        }

        if (!hasProblems()) {
            this.river    = river;
            this.location = location;
            this.periods  = periods;
            this.outliers = outliers;
        }
    }


    public CalculationResult calculate() {
        log.debug("SQRelationCalculation.calculate");

        if (hasProblems()) {
            return new CalculationResult(this);
        }

        SedDBSessionHolder.acquire();
        try {
            return internalCalculate();
        }
        finally {
            SedDBSessionHolder.release();
        }
    }

    protected CalculationResult internalCalculate() {

        boolean debug = log.isDebugEnabled();

        for (DateRange period: periods) {
            Measurements measurements =
                MeasurementFactory.getMeasurements(river, location, period);

            if (debug) {
                log.debug(measurements.toString());
            }
        }

        // TODO: Implement me!

        SQResult [] result = null;

        return new CalculationResult(result, this);
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org