teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5994: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5994: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.artifacts.math.fitting; sascha@2569: sascha@2569: import java.util.Collection; sascha@2569: import java.util.LinkedHashMap; sascha@2569: import java.util.Map; sascha@2569: d@9643: public final class FunctionFactory { sascha@2569: private static FunctionFactory instance; sascha@2569: d@9643: private final Map functions; sascha@2569: sascha@2569: private FunctionFactory() { d@9643: this.functions = new LinkedHashMap<>(); sascha@2569: sascha@3178: registerFunction(Log.INSTANCE); sascha@3178: registerFunction(Linear.INSTANCE); sascha@3178: registerFunction(LogLinear.INSTANCE); d@9643: registerFunction(LogLinearAlternative.INSTANCE); sascha@3178: registerFunction(Exp.INSTANCE); sascha@3178: registerFunction(Quad.INSTANCE); sascha@3178: registerFunction(Pow.INSTANCE); sascha@3178: registerFunction(SQPow.INSTANCE); sascha@2569: } sascha@2569: sascha@2569: public static synchronized FunctionFactory getInstance() { sascha@2569: if (instance == null) { sascha@2569: instance = new FunctionFactory(); sascha@2569: } sascha@2569: return instance; sascha@2569: } sascha@2569: d@9643: public Function getFunction(final String name) { d@9643: return this.functions.get(name); sascha@2569: } sascha@2569: d@9643: public void registerFunction(final Function function) { d@9643: this.functions.put(function.getName(), function); sascha@2569: } sascha@2569: sascha@2569: public Collection getFunctions() { d@9643: return this.functions.values(); sascha@2569: } sascha@2569: } sascha@2569: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :