view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation1.java @ 2089:0da8874bd378

Added initial state to map artifact to be able to advance and step back. The map artifact overrides describe() to have the complete UI information in the describe response document. flys-artifacts/trunk@3613 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 06 Jan 2012 12:02:10 +0000
parents c09c9e05ecfa
children
line wrap: on
line source
package de.intevation.flys.artifacts.model;

import java.util.ArrayList;

import org.apache.log4j.Logger;

public class Calculation1
extends      Calculation
{
    private static Logger logger = Logger.getLogger(Calculation1.class);

    protected double [] kms;
    protected double [] qs;
    protected double [] ws;
    protected double    refKm;

    public Calculation1() {
    }

    public Calculation1(
        double [] kms,
        double [] qs,
        double [] ws,
        double    refKm
    ) {
        this.kms   = kms;
        this.qs    = qs;
        this.ws    = ws;
        this.refKm = refKm;
    }

    public CalculationResult calculate(WstValueTable wst) {

        ArrayList<WQKms> results = new ArrayList<WQKms>();

        String    prefix;
        double [] origData;

        if (ws != null) { prefix = "W="; origData = ws; }
        else            { prefix = "Q="; origData = qs; }

        int oldNumProblems = numProblems();

        for (int i = 0; i < qs.length; i++) {

            double [] oqs = new double[kms.length];
            double [] ows = new double[kms.length];

            boolean success =
                wst.interpolate(qs[i], refKm, kms, ows, oqs, this) != null;

            int newNumProblems = numProblems();

            if (success) {
                WQKms result = new WQKms(kms, oqs, ows, prefix + origData[i]);
                if (oldNumProblems != newNumProblems) {
                    logger.debug(
                        qs[i] + " caused " + (newNumProblems-oldNumProblems) +
                        " new problem(s).");
                    result.removeNaNs();
                }
                results.add(result);
            }

            oldNumProblems = newNumProblems;
        }

        return new CalculationResult(
            results.toArray(new WQKms[results.size()]),
            this);
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org