package org.royaldev.royalbot;
import org.royaldev.royalbot.handlers.Handler;
import org.royaldev.royalbot.plugins.Plugin;
import java.util.Collection;
import java.util.Map;
import java.util.TreeMap;
// Must stay in main package and be package-local
/**
* A class for registering and retrieving {@link org.royaldev.royalbot.plugins.Plugin}s.
*/
public class PluginHandler implements Handler<Plugin, String> {
private final Map<String, Plugin> plugins = new TreeMap<>();
PluginHandler() {}
@Override
public boolean register(Plugin plugin) {
final String name = plugin.getPluginDescription().getName();
synchronized (plugins) {
if (plugins.containsKey(name)) return false;
plugins.put(name, plugin);
}
return true;
}
@Override
public boolean unregister(Plugin plugin) {
return unregister(plugin.getPluginDescription().getName());
}
public boolean unregister(String name) {
synchronized (plugins) {
if (!plugins.containsKey(name)) return false;
plugins.remove(name);
}
return true;
}
@Override
public Plugin get(String name) {
if (name == null) return null;
synchronized (plugins) {
return plugins.get(name);
}
}
@Override
public Collection<Plugin> getAll() {
synchronized (plugins) {
return plugins.values();
}
}
}