/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.components.optimizer.execution.algorithms.registry.internal; import java.util.Collection; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Map; import de.rcenvironment.components.optimizer.common.MethodDescription; import de.rcenvironment.components.optimizer.common.execution.OptimizerAlgorithmExecutor; import de.rcenvironment.components.optimizer.execution.algorithms.registry.OptimizerAlgorithmExecutorFactory; import de.rcenvironment.components.optimizer.execution.algorithms.registry.OptimizerAlgorithmExecutorFactoryRegistry; import de.rcenvironment.core.component.api.ComponentException; import de.rcenvironment.core.component.execution.api.ComponentContext; import de.rcenvironment.core.datamodel.api.TypedDatum; /** * Implementation of {@link OptimizerAlgorithmExecutorFactoryRegistry}. * * @author Sascha Zur */ public class OptimizerAlgorithmExecutorFactoryRegistryImpl implements OptimizerAlgorithmExecutorFactoryRegistry { private final List<OptimizerAlgorithmExecutorFactory> factories = Collections.synchronizedList(new LinkedList<OptimizerAlgorithmExecutorFactory>()); @Override public void addOptimizerAlgorithmExecutorFactory(OptimizerAlgorithmExecutorFactory incProvider) { if (incProvider != null && !factories.contains(incProvider)) { factories.add(incProvider); } } @Override public void removeOptimizerAlgorithmExecutorFactory(OptimizerAlgorithmExecutorFactory algFactory) { if (algFactory != null && factories.contains(algFactory)) { factories.remove(algFactory); } } @Override public OptimizerAlgorithmExecutor createAlgorithmProviderInstance(String algorithmPackage, Map<String, MethodDescription> methodConfiguration, Map<String, TypedDatum> outputValues, Collection<String> input, ComponentContext compContext, Map<String, Map<String, Double>> boundMaps, Map<String, Double> stepValues) throws ComponentException { OptimizerAlgorithmExecutor result = null; for (OptimizerAlgorithmExecutorFactory currentProvider : factories) { if (currentProvider.getOptimizerAlgorithmPackageIdentifier().equalsIgnoreCase(algorithmPackage)) { result = currentProvider.createOptimizerAlgorithmExecutorInstance(methodConfiguration, outputValues, input, compContext, boundMaps.get("upper"), boundMaps.get("lower"), stepValues); } } return result; } }