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 javax.annotation.Nonnull;
10 import javax.annotation.Nullable;
11 import java.util.Arrays;
12 import java.util.Collection;
13 import java.util.EnumSet;
14
15
16
17
18 public abstract class PageCapabilities {
19
20 public static final String SEPARATOR = ",";
21
22
23
24
25 public static EnumSet<PageCapability> empty() {
26 return EnumSet.noneOf(PageCapability.class);
27 }
28
29
30
31
32
33
34 public static EnumSet<PageCapability> valueOf(@Nullable String values) {
35 if (values == null || values.length() == 0) {
36 return empty();
37 }
38
39 final Collection<PageCapability> capabilities = Collections2.filter(Lists.transform(Arrays.asList(values.split(SEPARATOR)), new Function<String, PageCapability>() {
40 @Override
41 public PageCapability apply(final String value) {
42 try {
43 return PageCapability.valueOf(value);
44 } catch (IllegalArgumentException e) {
45 return null;
46 }
47 }
48 }), Predicates.notNull());
49
50 if (capabilities.isEmpty()) {
51 return empty();
52 }
53
54 return EnumSet.<PageCapability>copyOf(capabilities);
55 }
56
57
58
59
60
61 public static String toString(@Nonnull EnumSet<PageCapability> pageCaps) {
62 return Joiner.on(SEPARATOR).join(pageCaps.iterator());
63 }
64 }