protected TransferPlugin askPlugin() {
return askPlugin(null);
}
protected TransferPlugin askPlugin(final Class<? extends TransferPlugin> ignoreTransferPluginClass) {
TransferPlugin plugin = null;
final List<TransferPlugin> plugins = Plugins.list(TransferPlugin.class);
Iterables.removeIf(plugins, new Predicate<TransferPlugin>() {
@Override
public boolean apply(TransferPlugin transferPlugin) {
return ignoreTransferPluginClass == transferPlugin.getClass();
}
});
String pluginsList = StringUtil.join(plugins, ", ", new StringJoinListener<TransferPlugin>() {
@Override
public String getString(TransferPlugin plugin) {
return plugin.getId();
}
});
while (plugin == null) {
out.println("Choose a storage plugin. Available plugins are: " + pluginsList);
out.print("Plugin: ");
String pluginStr = console.readLine();
plugin = Plugins.get(pluginStr, TransferPlugin.class);
if (plugin == null || ignoreTransferPluginClass == plugin.getClass()) {
out.println("ERROR: Plugin does not exist or cannot be used.");
out.println();
plugin = null;
}