sascha@2186: package de.intevation.flys.artifacts.model;
sascha@2186: 
sascha@2186: import java.util.ArrayList;
sascha@2186: 
sascha@2186: import org.apache.log4j.Logger;
sascha@2186: 
sascha@2186: 
sascha@2186: public class Calculation5
sascha@2186: extends      Calculation
sascha@2186: {
sascha@2186:     private static Logger log = Logger.getLogger(Calculation5.class);
sascha@2186: 
sascha@2186:     protected double    startKm;
sascha@2186:     protected double [] endKms;
sascha@2186: 
sascha@2186:     public Calculation5() {
sascha@2186:     }
sascha@2186: 
sascha@2186:     public Calculation5(double startKm, double [] endKms) {
sascha@2186:         this.startKm = startKm;
sascha@2186:         this.endKms  = endKms;
sascha@2186:     }
sascha@2186: 
sascha@2186:     public CalculationResult calculate(WstValueTable wst) {
sascha@2186:         ArrayList<WW> results = new ArrayList<WW>();
sascha@2186: 
sascha@2186:         int numProblems = numProblems();
sascha@2186: 
sascha@2186:         for (double endKm: endKms) {
sascha@2186: 
sascha@2186:             double [][] wws = wst.relateWs(startKm, endKm, this);
sascha@2186:             int newNumProblems = numProblems();
sascha@2186: 
sascha@2186:             if (wws.length == 2) {
sascha@2201:                 WW ww = new WW(
sascha@2201:                     generateName(startKm, endKm),
sascha@2201:                     startKm, wws[0],
sascha@2201:                     endKm,   wws[1]);
sascha@2186: 
sascha@2192:                 if (newNumProblems > numProblems) {
sascha@2186:                     ww.removeNaNs();
sascha@2186:                 }
sascha@2186: 
sascha@2186:                 results.add(ww);
sascha@2186:             }
sascha@2186:             numProblems = newNumProblems;
sascha@2186:         }
sascha@2186: 
sascha@2186:         return new CalculationResult(
sascha@2186:             results.toArray(new WW[results.size()]),
sascha@2186:             this);
sascha@2186:     }
sascha@2186: 
sascha@2186:     protected static String generateName(double startKm, double endKm) {
sascha@2186:         // TODO: I18N
sascha@2186:         return "W(km " + startKm + ") ~ W(km " + endKm + ")";
sascha@2186:     }
sascha@2186: }
sascha@2186: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :