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()) { // Do nothing. Invisible option! } else { callAndPrintPreQueryCallback(optionCallback); String optionValue = askPluginOption(settings, option); if (optionConverter != null) { optionValue = optionConverter.convert(optionValue); } settings.setField(option.getField().getName(), optionValue); callAndPrintPostQueryCallback(optionCallback, optionValue); } }
private boolean validateInputMandatory(String value) { return !isRequired() || (value != null && !value.equals("")); }
private static TransferPluginOption createNormalOption(Field field, Class<? extends TransferSettings> transferSettingsClass, String name, String description, FileType fileType, boolean encrypted, boolean sensitive, boolean singular, boolean visible, boolean required, Class<? extends TransferPluginOptionCallback> callback, Class<? extends TransferPluginOptionConverter> converter) { return new TransferPluginOption(field, name, description, field.getType(), fileType, encrypted, sensitive, singular, visible, required, callback, converter); }
private String getDescription(TransferSettings settings, TransferPluginOption option) { Class<?> clazzForType = ReflectionUtil.getClassFromType(option.getType()); if (clazzForType != null && Enum.class.isAssignableFrom(clazzForType)) { Object[] enumValues = clazzForType.getEnumConstants(); if (enumValues == null) { throw new RuntimeException("Invalid TransferSettings class found: Enum at " + settings + " has no values"); } logger.log(Level.FINE, "Found enum option, values are: " + StringUtil.join(enumValues, ", ")); return String.format("%s, choose from %s", option.getDescription(), StringUtil.join(enumValues, ", ")); } else { return option.getDescription(); } }
NoSuchMethodException, SecurityException { TransferPluginOptionCallback optionCallback = createOptionCallback(settings, option.getCallback()); out.println(option.getDescription() + ":"); childPlugin = initPlugin(knownPluginSettings.get(nestPrefix + option.getName() + GENERIC_PLUGIN_TYPE_IDENTIFIER)); throw new IllegalArgumentException("Missing nested plugin type (" + nestPrefix + option.getName() + GENERIC_PLUGIN_TYPE_IDENTIFIER + ") in non-interactive mode."); settings.setField(option.getField().getName(), childSettings); nestPrefix = nestPrefix + option.getName() + NESTED_OPTIONS_SEPARATOR;
private String askPluginOptionSensitive(TransferSettings settings, TransferPluginOption option) throws StorageException { String knownOptionValue = settings.getField(option.getField().getName()); String value = knownOptionValue; String optionalIndicator = option.isRequired() ? "" : ", optional"; if (option.isSingular() || knownOptionValue == null || "".equals(knownOptionValue)) { out.printf("- %s (not displayed%s): ", getDescription(settings, option), optionalIndicator); value = String.copyValueOf(console.readPassword()); } else { out.printf("- %s (***, not displayed%s): ", getDescription(settings, option), optionalIndicator); value = String.copyValueOf(console.readPassword()); if ("".equals(value)) { value = knownOptionValue; } } return value; }
if (option.isSensitive()) { else if (!option.isRequired()) { ValidationResult validationResult = option.isValid(value);
@Test public void testGetOrderedOptionsWithDummyPlugin() { List<TransferPluginOption> orderedOptions = TransferPluginOptions.getOrderedOptions(DummyTransferSettings.class); assertEquals(6, orderedOptions.size()); assertEquals("foo", orderedOptions.get(0).getName()); assertEquals("number", orderedOptions.get(1).getName()); assertEquals("baz", orderedOptions.get(2).getName()); assertEquals("nest", orderedOptions.get(3).getName()); assertEquals("nest2", orderedOptions.get(4).getName()); assertEquals("enumField", orderedOptions.get(5).getName()); }
private String askPluginOptionNormal(TransferSettings settings, TransferPluginOption option) throws StorageException { String knownOptionValue = settings.getField(option.getField().getName()); String value = knownOptionValue; if (option.isSingular() || knownOptionValue == null || "".equals(knownOptionValue)) { out.printf("- %s: ", getDescription(settings, option)); value = console.readLine(); } else { out.printf("- %s (%s): ", getDescription(settings, option), knownOptionValue); value = console.readLine(); if ("".equals(value)) { value = knownOptionValue; } } return value; }
private String askPluginOptionOptional(TransferSettings settings, TransferPluginOption option) throws StorageException { String knownOptionValue = settings.getField(option.getField().getName()); String value = knownOptionValue; if (knownOptionValue == null || "".equals(knownOptionValue)) { String defaultValueDescription = settings.getField(option.getField().getName()); if (defaultValueDescription == null) { defaultValueDescription = "none"; } out.printf("- %s (optional, default is %s): ", getDescription(settings, option), defaultValueDescription); value = console.readLine(); } else { out.printf("- %s (%s): ", getDescription(settings, option), knownOptionValue); value = console.readLine(); if ("".equals(value)) { value = knownOptionValue; } } return value; }
private void askPluginSettings(TransferSettings settings, TransferPluginOption option, Map<String, String> knownPluginSettings, String nestPrefix) throws IllegalAccessException, InstantiationException, StorageException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { if (option instanceof NestedTransferPluginOption) { Class<?> childPluginTransferSettingsClass = ReflectionUtil.getClassFromType(option.getType()); boolean isGenericChildPlugin = TransferSettings.class.equals(childPluginTransferSettingsClass); if (isGenericChildPlugin) { askGenericChildPluginSettings(settings, option, knownPluginSettings, nestPrefix); } else { askConreteChildPluginSettings(settings, (NestedTransferPluginOption) option, knownPluginSettings, nestPrefix); } } else { askNormalPluginSettings(settings, option, knownPluginSettings, nestPrefix); } }
@Test public void testGetOrderedOptionsWithAnotherDummyPlugin() { List<TransferPluginOption> orderedOptions = TransferPluginOptions.getOrderedOptions(AnotherDummyTransferSettings.class); assertEquals(4, orderedOptions.size()); assertEquals("noSetupAnnotation", orderedOptions.get(0).getName()); assertEquals("singularNonVisible", orderedOptions.get(1).getName()); assertEquals("someCallback", orderedOptions.get(2).getName()); assertEquals("someInvalidCallback", orderedOptions.get(3).getName()); }
if (isRequired()) { if (value != null) { return true;