public Iterable<Pair<ActivityObjectType, ActivityVerb>> apply(ActivityRequest activityRequest) { return filter(supported, inActivities(activityRequest)); } };
/** * Determines the requested activity object types based on the {@code ActivityRequest}. * * @param request the {@code ActivityRequest} containing the filter information * @param activities the set of possible activities * @return the {@link ActivityObjectType}s to be searched */ public static Iterable<ActivityObjectType> getRequestedActivityObjectTypes(ActivityRequest request, Iterable<Pair<ActivityObjectType, ActivityVerb>> activities) { return firsts(filter(activities, inActivities(request))); }
@Override public StreamsFeed call() throws Exception { // COMMIT (aka "push") is the only FishEye verb currently supported if (!inActivities(request).apply(pair(changeset(), push()))) { return buildFeed(ImmutableList.<StreamsEntry>of()); } return buildFeed(take(request.getMaxResults(), mergeSorted(getChangesets(request, Suppliers.forAtomicBoolean(cancelled)), byPostedDate()))); }
GetActivityItems(ActivityRequest request, Iterable<ActivityItem> baseItems) { this.activityItems = new BoundedActivityItemTreeSet(evictor, request.getMaxResults(), activityItemSorter); addAll(activityItems, baseItems); // calculate a few request filter properties that we'll refer to frequently shouldIncludeAttachments = any(ImmutableList.of(pair(file(), post()), pair(file(), update())), inActivities(request)); hasSpaceFilter = !isEmpty(getIsValues(request.getStandardFilters().get(PROJECT_KEY))); requestMinDate = Filters.getMinDate(request); // Calculate the predicates beforehand inActivities = inActivities(request); inProjectKeys = inProjectKeys(request); anyUsers = anyInUsers(request); notInUsers = notInUsers(request); followedUsers = getFollowedUsersPredicate(request, userManager.getRemoteUsername()); inDateRange = inDateRange(request); baseUri = request.getContextUri(); }
/** * Extracts activity from the given list of issues */ private List<JiraActivityItem> extractActivity(final Iterable<Issue> issues, final ActivityRequest request, Supplier<Boolean> cancelled) { final ApplicationUser user = authenticationContext.getUser(); Predicate<String> inUsers = inUsers(request); Predicate<Date> containsDate = inDateRange(request); Predicate<Option<Pair<ActivityObjectType, ActivityVerb>>> hasActivity = isDefined(); Predicate<Pair<ActivityObjectType, ActivityVerb>> inJiraActivities = inActivities(request); ImmutableList.Builder<JiraActivityItem> builder = ImmutableList.builder(); // map the change histories by issue so we can look them up from inside the loop ChangeHistoryQuery changeHistories = new ChangeHistoryQuery(issueHistoryReader, issues, user); IssueActivityExtractor issueActivityExtractor = new IssueActivityExtractor(user, commentManager, helper, builder, changeHistories, inUsers, containsDate, inJiraActivities); for (final Issue issue : issues) { // Check for cancellation each time through this loop, since we may be pulling // quite a bit of change history for each issue if (cancelled.get()) { throw new CancelledException(); } issueActivityExtractor.extract(issue); } return builder.build(); }