public static boolean hasUserPrefs(Map<String, UserPref> userPrefs) throws Exception {

    if (userPrefs == null) {
      return false;
    }

    for (UserPref userPref : userPrefs.values()) {
      if (userPref.getDataType() != UserPref.DataType.HIDDEN) {
        return true;
      }
    }

    return false;
  }
    public UserPrefSpec apply(UserPref userPref) {
      // Using a LinkedHashMap to preserve the order the values were defined in when iterating.
      Map<String, String> enumValues = new LinkedHashMap<String, String>();
      for (UserPref.EnumValuePair enumValue : userPref.getOrderedEnumValues()) {
        enumValues.put(enumValue.getValue(), enumValue.getDisplayValue());
      }

      return UserPrefSpec.userPrefSpec(userPref.getName())
          .displayName(
              (userPref.getDisplayName() != null) ? userPref.getDisplayName() : userPref.getName())
          .required(userPref.getRequired())
          .dataType(DataType.parse(userPref.getDataType().toString()))
          .enumValues(Collections.unmodifiableMap(enumValues))
          .defaultValue(userPref.getDefaultValue())
          .build();
    }