private void askNormalPluginSettings(TransferSettings settings, TransferPluginOption option, Map<String, String> knownPluginSettings,
String nestPrefix)
throws StorageException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException,
NoSuchMethodException, SecurityException {
TransferPluginOptionCallback optionCallback = createOptionCallback(settings, option.getCallback());
TransferPluginOptionConverter optionConverter = createOptionConverter(settings, option.getConverter());
if (!isInteractive && !knownPluginSettings.containsKey(nestPrefix + option.getName())) {
throw new IllegalArgumentException("Missing plugin option (" + nestPrefix + option.getName() + ") in non-interactive mode.");
}
else if (knownPluginSettings.containsKey(nestPrefix + option.getName())) {
settings.setField(option.getField().getName(), knownPluginSettings.get(nestPrefix + option.getName()));
}
else if (!option.isVisible()) {
}
else {
callAndPrintPreQueryCallback(optionCallback);
String optionValue = askPluginOption(settings, option);
if (optionConverter != null) {
optionValue = optionConverter.convert(optionValue);
}
settings.setField(option.getField().getName(), optionValue);
callAndPrintPostQueryCallback(optionCallback, optionValue);
}
}