package org.molgenis.script; import com.google.common.collect.Maps; import org.springframework.stereotype.Component; import java.util.Collection; import java.util.Map; import static java.lang.String.format; /** * Register script types. * <p> * Get a concrete ScriptRunner for a script type */ @Component public class ScriptRunnerFactory { private final Map<String, ScriptRunner> scriptRunners; public ScriptRunnerFactory() { scriptRunners = Maps.newHashMap(); } void registerScriptExecutor(ScriptRunner scriptExecutor) { scriptRunners.put(scriptExecutor.getName(), scriptExecutor); } Collection<ScriptRunner> getScriptRunners() { return scriptRunners.values(); } ScriptRunner getScriptRunner(String type) { ScriptRunner scriptRunner = scriptRunners.get(type); if (scriptRunner == null) { throw new ScriptException(format("Unknown script type [%s]", type)); } return scriptRunner; } }