package net.sf.openrocket.optimization.services;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.ServiceLoader;
import net.sf.openrocket.document.OpenRocketDocument;
import net.sf.openrocket.optimization.rocketoptimization.OptimizableParameter;
import net.sf.openrocket.optimization.rocketoptimization.SimulationModifier;
public final class OptimizationServiceHelper {
private OptimizationServiceHelper() {
// Prevent instantiation
}
/**
* Return the simulation modifiers for an OpenRocketDocument. This queries the
* getModifiers() method from all available services and returns a collection of all
* the modifiers.
*
* @param document the OpenRocketDocument.
* @return a collection of all simulation modifiers applicable to the document.
*/
public static Collection<SimulationModifier> getSimulationModifiers(OpenRocketDocument document) {
List<SimulationModifier> list = new ArrayList<SimulationModifier>();
ServiceLoader<SimulationModifierService> loader = ServiceLoader.load(SimulationModifierService.class);
for (SimulationModifierService service : loader) {
list.addAll(service.getModifiers(document));
}
return list;
}
/**
* Return the optimization parameters for an OpenRocketDocument. This queries the
* getParameters() method from all available services and returns a collection of all
* the modifiers.
*
* @param document the OpenRocketDocument.
* @return a collection of all optimization parameters applicable to the document.
*/
public static Collection<OptimizableParameter> getOptimizableParameters(OpenRocketDocument document) {
List<OptimizableParameter> list = new ArrayList<OptimizableParameter>();
ServiceLoader<OptimizableParameterService> loader = ServiceLoader.load(OptimizableParameterService.class);
for (OptimizableParameterService service : loader) {
list.addAll(service.getParameters(document));
}
return list;
}
}