1 package com.atlassian.sal.api.page;
2
3 import com.google.common.base.Function;
4 import com.google.common.base.Joiner;
5 import com.google.common.base.Predicates;
6 import com.google.common.collect.Collections2;
7 import com.google.common.collect.Lists;
8
9 import java.util.Arrays;
10 import java.util.Collection;
11 import java.util.EnumSet;
12 import javax.annotation.Nonnull;
13 import javax.annotation.Nullable;
14
15
16
17
18 public abstract class PageCapabilities
19 {
20
21 public static final String SEPARATOR = ",";
22
23
24
25
26 public static EnumSet<PageCapability> empty()
27 {
28 return EnumSet.noneOf(PageCapability.class);
29 }
30
31
32
33
34
35
36 public static EnumSet<PageCapability> valueOf(@Nullable String values)
37 {
38 if(values == null || values.length() == 0)
39 {
40 return empty();
41 }
42
43 final Collection<PageCapability> capabilities = Collections2.filter(Lists.transform(Arrays.asList(values.split(SEPARATOR)), new Function<String, PageCapability>()
44 {
45 @Override
46 public PageCapability apply(final String value)
47 {
48 try
49 {
50 return PageCapability.valueOf(value);
51 }
52 catch (IllegalArgumentException e)
53 {
54 return null;
55 }
56 }
57 }), Predicates.notNull());
58
59 if(capabilities.isEmpty())
60 {
61 return empty();
62 }
63
64 return EnumSet.<PageCapability>copyOf(capabilities);
65 }
66
67
68
69
70
71 public static String toString(@Nonnull EnumSet<PageCapability> pageCaps)
72 {
73 return Joiner.on(SEPARATOR).join(pageCaps.iterator());
74 }
75 }