package net.teamlixo.eggcrack.plugin; import java.io.File; import java.util.HashMap; import java.util.Map; public abstract class FilePluginManager implements PluginManager { private Map<String, PluginLoader> pluginLoaderMap = new HashMap<>(); /** * Registers a plugin loader to a file extension, overwriting previous * file extensions recognized by this plugin manager. * @param extension File extension to register. * @param pluginLoader Plugin loader to register. */ public void registerPluginLoader(String extension, PluginLoader pluginLoader) { this.pluginLoaderMap.put(extension.toLowerCase(), pluginLoader); } /** * Unregisters a plugin loader from this plugin manager. * @param extension Extension to unregister. * @return PluginLoader previously associated with the extension provided. */ public PluginLoader unregisterPluginLoader(String extension) { return this.pluginLoaderMap.remove(extension.toLowerCase()); } @Override public PluginLoader getLoader(File file) { String[] extensions = file.getName().split("[.]"); if (extensions.length <= 1) return null; return pluginLoaderMap.get(extensions[extensions.length - 1].toLowerCase()); } }