public Set<Issue> find(final ActivityRequest request) { Collection<Project> projects = ImmutableSet.copyOf(getProjects(request)); if (projects.isEmpty()) { // If there are no projects then that means the user doesn't have permission to browse the requested project return ImmutableSet.of(); } return ImmutableSet.copyOf(changeHistoryManager.findUserHistory( authenticationContext.getLoggedInUser(), getUsers(request), projects, request.getMaxResults())); }
/** * Converts an {@code Iterable} of {@code ActivityItem}s to an {@code Iterable} of {@code StreamsEntry}s, * while respecting a set of filters specified by a {@code ActivityRequest}. * * @param request the {@code ActivityRequest} containing the filters * @param activityItems {@code ActivityItem}s to convert * @return the filtered {@code Iterable} of {@code StreamsEntry}s */ private Iterable<StreamsEntry> toStreamsEntries(final ActivityRequest request, Iterable<ActivityItem> activityItems, Supplier<Boolean> cancelled) { // we use Iterables.size immediately after we return from here, so we might as well create a list now return ImmutableList.copyOf(take(request.getMaxResults(), catOptions(transform(activityItems, toStreamsEntry(request.getContextUri(), cancelled))))); }
@Override public StreamsFeed call() throws Exception { Iterable<StreamsEntry> entries = Lists.newArrayList(); if (!filter.getInProjectKeys().isEmpty() && filter.getInUsers().isEmpty()) { Iterable<Build> builds = buildService.getLatestBuildsByFilter(activityRequest.getMaxResults(), filter); if (cancelled.get()) { throw new CancelledException(); } LOGGER.debug("Found build entries for stream: " + builds); entries = transformEntries(builds, cancelled); } return new StreamsFeed(i18nResolver.getText("jenkins.streams.feed.title"), entries, Option.<String>none()); }
while (size(entries) < request.getMaxResults()) offset += request.getMaxResults(); searchables = search(request, offset, cancelled); if (isEmpty(searchables))
public Set<Issue> search(final ActivityRequest request) { final Query searchQuery = createSearchQuery(request); final PagerFilter<Issue> pagerFilter = new PagerFilter<Issue>(Math.max(MIN_PAGING_RESULTS, request.getMaxResults())); try { final SearchResults<Issue> searchResults = searchService.search(authenticationContext.getLoggedInUser(), searchQuery, pagerFilter); return ImmutableSet.copyOf(searchResults.getResults()); } catch (final SearchException se) { throw new StreamsException("Error performing search", se); } }
@Override public StreamsFeed call() throws Exception { Iterable<StreamsEntry> entries = getCrucibleEntries(request); Iterable<StreamsEntry> sortedEntries = byPostedDate().sortedCopy(entries); return new StreamsFeed(i18nResolver.getText("streams.feed.crucible.title"), take(request.getMaxResults(), sortedEntries), none(String.class)); }
@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()))); }
/** * Get the activity feed for the given request * * @param activityRequest The request * @return The ATOM feed */ public SyndFeed getActivityFeed(final ActivityRequest activityRequest) { final SyndFeedImpl feed = new SyndFeedImpl(); feed.setUri("refimpl"); feed.setTitle("Reference Implementation Feed"); feed.setPublishedDate(new Date()); final List<SyndEntry> entries = new ArrayList<SyndEntry>(); entries.add(buildEntry(createEntry("http://example.com/1", "did something", "This is a comment.", "saying", new Date(), "fred").setIcon(applicationProperties.getBaseUrl() + "/download/resources/com.atlassian.streams.refimpl/itemicon"))); entries.add(buildEntry(createEntry("http://example.com/2", "did something else", null, null, new Date(), "barney").setReplyTo( applicationProperties.getBaseUrl() + "/plugins/servlet/streamscomments/2"))); entries.add(buildEntry(createEntry("http://example.com/3", "commented on something", "I can comment on stuff", "saying", new Date(), "fred").setInReplyTo("http://example.com/2").setCategory("comment"))); entries.add(buildEntry(createEntry("http://example.com/4", "commented on something", "I can comment on stuff too", "saying", new Date(), "admin").setInReplyTo("http://example.com/2").setCategory("comment").setReplyTo( applicationProperties.getBaseUrl() + "/plugins/servlet/streamscomments/4"))); feed.setEntries(entries.subList(0, Math.min(entries.size(), activityRequest.getMaxResults()))); return feed; }
@Override public StreamsFeed call() { final Iterable<StreamsEntry> entries = getStreamsEntries(request, Suppliers.forAtomicBoolean(cancelled)); return new StreamsFeed(i18nResolver.getText("portlet.activityfeed.name"), take(request.getMaxResults(), entries), some(i18nResolver.getText("portlet.activityfeed.description"))); }
isEmpty(getNotIssueKeys(request)) ? Predicates.<ChangesetDataFE>alwaysTrue() : commitComment(not(containsAnyIssueKey(getNotIssueKeys(request)))), hasCorrectBranch(request))); return memoize(take(request.getMaxResults(), catOptions(transform(filter(changesets, filters), toStreamsEntry(baseUri, repository)))));
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(); }
transform(take(request.getMaxResults() * 2, filter(transform(activityItems, toReviewActivityPair()), and(ImmutableList.of( notPhantomReview(),
@Override public StreamsFeed call() throws Exception { final Iterable<Issue> issues = issueFinder.find(request); Iterable<JiraActivityItem> activityItems = orderByDate.sortedCopy(extractActivity(issues, request, Suppliers.forAtomicBoolean(cancelled))); Iterable<AggregatedJiraActivityItem> activities = jiraActivityItemAggregator.aggregate(activityItems); final Iterable<StreamsEntry> entries = jiraEntryFactory.getEntries(activities, request); final String title = RenderingUtilities.htmlEncode( jiraApplicationProperties.getDefaultBackedString(APKeys.JIRA_TITLE) + " - " + authenticationContext.getI18nHelper().getText("portlet.activityfeed.name")); return new StreamsFeed(title, take(request.getMaxResults(), entries), none(String.class)); }
return new ChangesSearch(query.build(), sort, searchFilter, startOffset, request.getMaxResults()); return new ContentSearch(query.createdOrLastModifiedBy(authors).build(), sort, searchFilter, startOffset, request.getMaxResults());