View Javadoc

1   package com.atlassian.sal.core.usersettings;
2   
3   import com.atlassian.fugue.Option;
4   import com.atlassian.sal.api.usersettings.UserSettings;
5   import com.atlassian.sal.api.usersettings.UserSettingsBuilder;
6   
7   import java.util.HashMap;
8   import java.util.Map;
9   import java.util.Set;
10  
11  public class DefaultUserSettings implements UserSettings
12  {
13      private final Map<String, Object> settings;
14  
15      private DefaultUserSettings(Map<String, Object> settings)
16      {
17          this.settings = settings;
18      }
19  
20      @Override
21      public Option<String> getString(String key)
22      {
23          if (!settings.containsKey(key))
24          {
25              return Option.none();
26          }
27  
28          final Object value = settings.get(key);
29          return (value instanceof String) ? Option.some((String)value) : Option.<String>none();
30  
31      }
32  
33      @Override
34      public Option<Boolean> getBoolean(String key)
35      {
36          if (!settings.containsKey(key))
37          {
38              return Option.none();
39          }
40  
41          final Object value = settings.get(key);
42          return (value instanceof Boolean) ? Option.some((Boolean)value) : Option.<Boolean>none();
43      }
44  
45      @Override
46      public Option<Long> getLong(String key)
47      {
48          if (!settings.containsKey(key))
49          {
50              return Option.none();
51          }
52  
53          final Object value = settings.get(key);
54          return (value instanceof Long) ? Option.some((Long)value) : Option.<Long>none();
55  
56      }
57  
58      @Override
59      public Set<String> getKeys()
60      {
61          return settings.keySet();
62      }
63  
64      public static class Builder implements UserSettingsBuilder
65      {
66          private final Map<String, Object> settings = new HashMap<String, Object>();
67  
68          private Builder(UserSettings userSettings)
69          {
70              for (String key : userSettings.getKeys())
71              {
72                  for (Boolean value : userSettings.getBoolean(key))
73                  {
74                      settings.put(key, value);
75                  }
76                  for (String value : userSettings.getString(key))
77                  {
78                      settings.put(key, value);
79                  }
80                  for (Long value : userSettings.getLong(key))
81                  {
82                      settings.put(key, value);
83                  }
84              }
85          }
86  
87          private Builder()
88          {
89  
90          }
91  
92          @Override
93          public UserSettingsBuilder put(String key, String value)
94          {
95              settings.put(key, value);
96              return this;
97          }
98  
99          @Override
100         public UserSettingsBuilder put(String key, boolean value)
101         {
102             settings.put(key, value);
103             return this;
104         }
105 
106         @Override
107         public UserSettingsBuilder put(String key, long value)
108         {
109             settings.put(key, value);
110             return this;
111         }
112 
113         @Override
114         public UserSettingsBuilder remove(String key)
115         {
116             settings.remove(key);
117             return this;
118         }
119 
120         @Override
121         public Option<Object> get(String key)
122         {
123             return settings.containsKey(key) ? Option.some(settings.get(key)) : Option.none();
124         }
125 
126         @Override
127         public Set<String> getKeys()
128         {
129             return settings.keySet();
130         }
131 
132         @Override
133         public UserSettings build()
134         {
135             return new DefaultUserSettings(settings);
136         }
137     }
138 
139     public static UserSettingsBuilder builder()
140     {
141         return new Builder();
142     }
143 
144     public static UserSettingsBuilder builder(UserSettings userSettings)
145     {
146         return new Builder(userSettings);
147     }
148 }