private static Map<String, AdminFormValues> getNotificationsMap(PluginSettings pluginSettings) {
   final Map<String, AdminFormValues> allNotificationsMap = newTreeMap();
   for (final AdminFormValues a : getSettingsAsFormValues(pluginSettings)) {
     if (tryFind(a, predicate(FORM_IDENTIFIER.name())).isPresent()) {
       allNotificationsMap.put(find(a, predicate(FORM_IDENTIFIER.name())).get(VALUE), a);
     }
   }
   return allNotificationsMap;
 }
 public static void injectFormIdentifierIfNotSet(final AdminFormValues config) {
   final Optional<Map<String, String>> formIdOpt =
       tryFind(config, predicate(FORM_IDENTIFIER.name()));
   if (!formIdOpt.isPresent() || formIdOpt.get().get(VALUE).trim().isEmpty()) {
     final String generatedIdentifier = formIdentifierGnerator();
     removeIf(config, predicate(FORM_IDENTIFIER.name()));
     config.add(
         new ImmutableMap.Builder<String, String>()
             .put(NAME, FORM_IDENTIFIER.name())
             .put(VALUE, generatedIdentifier)
             .build());
   }
 }
 private static void storeNotificationsMap(
     PluginSettings pluginSettings, Map<String, AdminFormValues> allNotificationsMap)
     throws ValidationException {
   final List<String> toStore = newArrayList();
   for (final AdminFormValues adminFormValues : allNotificationsMap.values()) {
     final Optional<Map<String, String>> formIdOpt =
         tryFind(adminFormValues, predicate(FORM_IDENTIFIER.name()));
     if (!formIdOpt.isPresent() || formIdOpt.get().get(VALUE).trim().isEmpty()) {
       throw new ValidationException(FORM_IDENTIFIER.name(), "Not set!");
     }
     toStore.add(new Gson().toJson(adminFormValues));
   }
   pluginSettings.put(STORAGE_KEY, toStore);
 }
 public static void storeSettings(PluginSettings pluginSettings, final AdminFormValues config)
     throws ValidationException {
   injectFormIdentifierIfNotSet(config);
   final Map<String, AdminFormValues> allNotificationsMap = getNotificationsMap(pluginSettings);
   allNotificationsMap.put(find(config, predicate(FORM_IDENTIFIER.name())).get(VALUE), config);
   storeNotificationsMap(pluginSettings, allNotificationsMap);
 }
  public static PrnfbButton getPrnfbButton(AdminFormValues adminFormValues)
      throws ValidationException {
    final Optional<Map<String, String>> titleOpt =
        tryFind(adminFormValues, predicate(button_title.name()));
    String title = "Trigger Notification";
    if (titleOpt.isPresent()) {
      title = titleOpt.get().get(VALUE);
    }

    final Optional<Map<String, String>> visibilityOpt =
        tryFind(adminFormValues, predicate(button_visibility.name()));
    BUTTON_VISIBILITY visibility = NONE;
    if (visibilityOpt.isPresent()) {
      visibility = BUTTON_VISIBILITY.valueOf(visibilityOpt.get().get(VALUE));
    }
    return new PrnfbButton(
        title, visibility, find(adminFormValues, predicate(FORM_IDENTIFIER.name())).get(VALUE));
  }