1 package com.atlassian.sal.core.features;
2
3 import com.atlassian.fugue.Option;
4 import com.atlassian.sal.api.features.DarkFeatureManager;
5 import com.atlassian.sal.api.features.EnabledDarkFeatures;
6 import com.atlassian.sal.api.user.UserManager;
7 import com.google.common.collect.ImmutableSet;
8
9 import java.util.Collections;
10 import java.util.Set;
11
12
13
14
15
16 public class DefaultDarkFeatureManager implements DarkFeatureManager
17 {
18 private final EnabledDarkFeatures enabledDarkFeatures;
19 private final UserManager userManager;
20
21 public DefaultDarkFeatureManager(UserManager userManager)
22 {
23 this.userManager = userManager;
24 this.enabledDarkFeatures = createEnabledDarkFeatures();
25 }
26
27 private static EnabledDarkFeatures createEnabledDarkFeatures()
28 {
29
30 final SystemDarkFeatureInitializer.SystemDarkFeatures systemDarkFeatures = SystemDarkFeatureInitializer.getSystemStartupDarkFeatures();
31
32 final Set<String> systemEnabledFeatures = systemDarkFeatures.isDisableAll() ? Collections.<String>emptySet() : ImmutableSet.copyOf(systemDarkFeatures.getEnabled());
33 return new EnabledDarkFeatures(systemEnabledFeatures, Collections.<String>emptySet(), Collections.<String>emptySet());
34 }
35
36 @Override
37 public boolean isSystemFeatureEnabled(String featureKey)
38 {
39 return enabledDarkFeatures.getAllEnabledFeatures().contains(featureKey);
40 }
41
42 @Override
43 public boolean isFeatureEnabled(String featureKey)
44 {
45 return isSystemFeatureEnabled(featureKey);
46 }
47
48 @Override
49 public Option<Boolean> isFeatureEnabledForUser(String username, String featureKey)
50 {
51 return isUserExisting(username) ? Option.some(isSystemFeatureEnabled(featureKey)) : Option.<Boolean>none();
52 }
53
54 @Override
55 public boolean hasSiteEditPermission()
56 {
57
58 return false;
59 }
60
61 @Override
62 public void enableFeatureSiteWide(String featureKey)
63 {
64
65 }
66
67 @Override
68 public void disableFeatureSideWide(String featureKey)
69 {
70
71 }
72
73 @Override
74 public void enableFeatureForCurrentUser(String featureKey)
75 {
76
77 }
78
79 @Override
80 public void enableFeatureForUser(String username, String featureKey)
81 {
82
83 }
84
85 @Override
86 public void disableFeatureForCurrentUser(String featureKey)
87 {
88
89 }
90
91 @Override
92 public void disableFeatureForUser(String username, String featureKey)
93 {
94
95 }
96
97 @Override
98 public EnabledDarkFeatures getAllEnabledFeaturesForCurrentUser()
99 {
100 return enabledDarkFeatures;
101 }
102
103 @Override
104 public Option<EnabledDarkFeatures> getAllEnabledFeaturesForUser(String username)
105 {
106 return isUserExisting(username) ? Option.some(getAllEnabledFeaturesForCurrentUser()) : Option.<EnabledDarkFeatures>none();
107 }
108
109 private boolean isUserExisting(String username)
110 {
111 return userManager.resolve(username) != null;
112 }
113 }