1 package com.atlassian.sal.api.features;
2
3 import com.google.common.collect.ImmutableMap;
4 import com.google.common.collect.ImmutableSet;
5
6 import javax.annotation.Nullable;
7 import java.util.Set;
8
9
10
11
12 public class EnabledDarkFeaturesBuilder {
13 private final ImmutableMap.Builder<FeatureKeyScope, ImmutableSet<String>> builder = ImmutableMap.builder();
14
15
16
17
18
19
20
21 public EnabledDarkFeaturesBuilder unmodifiableFeaturesEnabledForAllUsers(@Nullable final Set<String> enabledFeatureKeys) {
22 return setEnabledFeatures(FeatureKeyScope.ALL_USERS_READ_ONLY, enabledFeatureKeys);
23 }
24
25
26
27
28
29
30
31 public EnabledDarkFeaturesBuilder featuresEnabledForAllUsers(@Nullable final Set<String> enabledFeatureKeys) {
32 return setEnabledFeatures(FeatureKeyScope.ALL_USERS, enabledFeatureKeys);
33 }
34
35
36
37
38
39
40
41 public EnabledDarkFeaturesBuilder featuresEnabledForCurrentUser(@Nullable final Set<String> enabledFeatureKeys) {
42 return setEnabledFeatures(FeatureKeyScope.CURRENT_USER_ONLY, enabledFeatureKeys);
43 }
44
45 public EnabledDarkFeatures build() {
46 return new EnabledDarkFeatures(builder.build());
47 }
48
49 private EnabledDarkFeaturesBuilder setEnabledFeatures(final FeatureKeyScope featureKeyScope, @Nullable final Set<String> enabledFeatureKeys) {
50 final ImmutableSet<String> nonNullCopy = enabledFeatureKeys != null ? ImmutableSet.copyOf(enabledFeatureKeys) : ImmutableSet.of();
51 builder.put(featureKeyScope, nonNullCopy);
52 return this;
53 }
54 }