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 {
14 private final ImmutableMap.Builder<FeatureKeyScope,ImmutableSet<String>> builder = ImmutableMap.builder();
15
16
17
18
19
20
21 public EnabledDarkFeaturesBuilder unmodifiableFeaturesEnabledForAllUsers(@Nullable final Set<String> enabledFeatureKeys)
22 {
23 return setEnabledFeatures(FeatureKeyScope.ALL_USERS_READ_ONLY, enabledFeatureKeys);
24 }
25
26
27
28
29
30
31 public EnabledDarkFeaturesBuilder featuresEnabledForAllUsers(@Nullable final Set<String> enabledFeatureKeys)
32 {
33 return setEnabledFeatures(FeatureKeyScope.ALL_USERS, enabledFeatureKeys);
34 }
35
36
37
38
39
40
41 public EnabledDarkFeaturesBuilder featuresEnabledForCurrentUser(@Nullable final Set<String> enabledFeatureKeys)
42 {
43 return setEnabledFeatures(FeatureKeyScope.CURRENT_USER_ONLY, enabledFeatureKeys);
44 }
45
46 public EnabledDarkFeatures build()
47 {
48 return new EnabledDarkFeatures(builder.build());
49 }
50
51 private EnabledDarkFeaturesBuilder setEnabledFeatures(final FeatureKeyScope featureKeyScope, @Nullable final Set<String> enabledFeatureKeys)
52 {
53 final ImmutableSet<String> nonNullCopy = enabledFeatureKeys != null ? ImmutableSet.copyOf(enabledFeatureKeys) : ImmutableSet.<String>of();
54 builder.put(featureKeyScope, nonNullCopy);
55 return this;
56 }
57 }