View Javadoc
1   package com.atlassian.streams.refapp;
2   
3   import com.atlassian.streams.api.ActivityObjectType;
4   import com.atlassian.streams.api.ActivityVerb;
5   import com.atlassian.streams.api.common.Pair;
6   import com.atlassian.streams.spi.ActivityOptions;
7   import com.atlassian.streams.spi.StreamsFilterOption;
8   import com.atlassian.streams.spi.StreamsFilterOptionProvider;
9   import com.atlassian.streams.spi.StreamsI18nResolver;
10  import com.google.common.base.Function;
11  import com.google.common.collect.ImmutableList;
12  
13  import static com.atlassian.streams.api.ActivityObjectTypes.article;
14  import static com.atlassian.streams.api.ActivityObjectTypes.comment;
15  import static com.atlassian.streams.api.ActivityObjectTypes.file;
16  import static com.atlassian.streams.api.ActivityObjectTypes.status;
17  import static com.atlassian.streams.api.ActivityVerbs.like;
18  import static com.atlassian.streams.api.ActivityVerbs.post;
19  import static com.atlassian.streams.api.ActivityVerbs.update;
20  import static com.atlassian.streams.api.common.Pair.pair;
21  import static com.google.common.base.Preconditions.checkNotNull;
22  import static com.google.common.collect.ImmutableSet.of;
23  import static com.google.common.collect.Iterables.transform;
24  
25  public class RefappFilterOptionProvider implements StreamsFilterOptionProvider {
26      private static final Iterable<Pair<ActivityObjectType, ActivityVerb>> SUPPORT_ACTIVITIES = of(
27              pair(article(), post()),
28              pair(article(), update()),
29              pair(article(), like()),
30              pair(comment(), post()),
31              pair(comment(), update()),
32              pair(comment(), like()),
33              pair(file(), post()),
34              pair(file(), update()),
35              pair(status(), update())
36      );
37  
38      private final Function<Pair<ActivityObjectType, ActivityVerb>, ActivityOption> toActivityOption;
39  
40      public RefappFilterOptionProvider(final StreamsI18nResolver i18nResolver) {
41          this.toActivityOption = ActivityOptions.toActivityOption(checkNotNull(i18nResolver, "i18nResolver"), "streams.filter.refapp");
42      }
43  
44      @Override
45      public Iterable<StreamsFilterOption> getFilterOptions() {
46          // Standard filters is provided by the framework, we don't create specific filter options.
47          return ImmutableList.of();
48      }
49  
50      @Override
51      public Iterable<StreamsFilterOptionProvider.ActivityOption> getActivities() {
52          return transform(SUPPORT_ACTIVITIES, toActivityOption);
53      }
54  }