view artifacts/src/main/java/org/dive4elements/river/artifacts/math/fitting/FunctionFactory.java @ 9643:58f3fe98fd6b

Fitting new Option UI
author dnt_bjoernsen <d.tironi@bjoernsen.de>
date Mon, 02 Dec 2019 14:14:06 +0100
parents af13ceeba52a
children
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU AGPL (>=v3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * documentation coming with Dive4Elements River for details.
 */

package org.dive4elements.river.artifacts.math.fitting;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

public final class FunctionFactory {
    private static FunctionFactory instance;

    private final Map<String, Function> functions;

    private FunctionFactory() {
        this.functions = new LinkedHashMap<>();

        registerFunction(Log.INSTANCE);
        registerFunction(Linear.INSTANCE);
        registerFunction(LogLinear.INSTANCE);
        registerFunction(LogLinearAlternative.INSTANCE);
        registerFunction(Exp.INSTANCE);
        registerFunction(Quad.INSTANCE);
        registerFunction(Pow.INSTANCE);
        registerFunction(SQPow.INSTANCE);
    }

    public static synchronized FunctionFactory getInstance() {
        if (instance == null) {
            instance = new FunctionFactory();
        }
        return instance;
    }

    public Function getFunction(final String name) {
        return this.functions.get(name);
    }

    public void registerFunction(final Function function) {
        this.functions.put(function.getName(), function);
    }

    public Collection<Function> getFunctions() {
        return this.functions.values();
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org