/** * 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(); }
commitDate(inDateRange(request)), isEmpty(getIssueKeys(request)) ? Predicates.<ChangesetDataFE>alwaysTrue() : commitComment(containsAnyIssueKey(getIssueKeys(request))), isEmpty(getNotIssueKeys(request)) ? Predicates.<ChangesetDataFE>alwaysTrue() : commitComment(not(containsAnyIssueKey(getNotIssueKeys(request)))),
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(); }