package org.icij.task;
import java.util.HashMap;
import java.util.Set;
public class DefaultTaskFactory {
private final HashMap<String, Class<? extends DefaultTask>> tasks;
public DefaultTaskFactory() {
tasks = new HashMap<>();
}
public void addTask(final String name, final Class<? extends DefaultTask> task) {
tasks.put(name, task);
}
public DefaultTask<Object> getTask(final String name) throws Exception {
if (!tasks.containsKey(name)) {
throw new IllegalArgumentException(String.format("Unknown task: %s.", name));
}
return tasks.get(name).getDeclaredConstructor().newInstance();
}
public Set<String> listNames() {
return tasks.keySet();
}
}