public ConfluenceSearchQueryBuilder inSpace(Iterable<String> spaceKeys) { addAll(this.spaceKeys, catOptions(transform(spaceKeys, StringTrimmer.INSTANCE))); return this; }
public Option<RemoteIssueLink> extractRemoteIssueLink(final Iterable<GenericValue> changeItems) { return Options.find(transform(filter(changeItems, isRemoteLinkUpdate()), getRemoteIssueLink())); }
public Option<Html> apply(Iterable<T> xs) { Iterable<Html> rendered = ImmutableList.copyOf(getValues(transform(xs, render))); if (isEmpty(rendered)) { return none(); } int numRendered = size(rendered); if (numRendered == 1) { return some(get(rendered, 0)); } Iterator<List<Html>> partitions = partition(rendered, numRendered - 1).iterator(); Iterable<Html> allButLast = partitions.next(); Iterable<Html> last = partitions.next(); return some(new Html(new StringBuilder() .append(Joiner.on(", ").join(allButLast)) .append(" ") .append(i18nResolver.getText("streams.and")) .append(" ") .append(get(last, 0)) .toString())); }
/** * 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(); }
public ConfluenceSearchQueryBuilder createdBy(Iterable<String> userNames) { addAll(createdByUsers, catOptions(transform(userNames, StringTrimmer.INSTANCE))); return this; }
public ConfluenceSearchQueryBuilder searchFor(Iterable<String> searchTerms) { addAll(this.searchTerms, catOptions(transform(searchTerms, StringTrimmer.INSTANCE))); return this; }
public ConfluenceSearchQueryBuilder lastModifiedBy(Iterable<String> userNames) { addAll(lastModifiedByUsers, catOptions(transform(userNames, StringTrimmer.INSTANCE))); return this; }
public ConfluenceSearchQueryBuilder excludeTerms(Iterable<String> excludedSearchTerms) { addAll(this.excludedSearchTerms, catOptions(transform(excludedSearchTerms, StringTrimmer.INSTANCE))); return this; }
public Iterable<StreamsEntry> getEntries(final Iterable<AggregatedJiraActivityItem> items, final ActivityRequest request) { // we have to filter out null entries returned by toStreamsEntries, which happens when there are // Project Import entries. return catOptions(transform(items, toStreamsEntries(request))); }
private Iterable<Html> getAggregatedComments(AggregatedJiraActivityItem aggregatedItem) { Iterable<JiraActivityItem> items = ImmutableList.<JiraActivityItem>builder() .add(aggregatedItem.getActivityItem()) .addAll(aggregatedItem.getRelatedActivityItems().getOrElse(ImmutableList.<JiraActivityItem>of())) .build(); return catOptions(transform(items, toCommentHtml)); }
public Iterable<Attachment> extractAttachments(final Iterable<GenericValue> changeItems) { return catOptions(transform(filter(changeItems, isAttachment()), getAttachment())); }
public Option<Html> apply(Iterable<T> xs) { Iterable<Html> rendered = ImmutableList.copyOf(catOptions(transform(xs, render))); if (isEmpty(rendered)) { return none(); } int numRendered = size(rendered); if (numRendered == 1) { return some(get(rendered, 0)); } Iterator<List<Html>> partitions = partition(rendered, numRendered - 1).iterator(); Iterable<Html> allButLast = partitions.next(); Iterable<Html> last = partitions.next(); return some(new Html(new StringBuilder() .append(Joiner.on(", ").join(allButLast)) .append(" ") .append(i18nResolver.getText("streams.and")) .append(" ") .append(get(last, 0)) .toString())); }
/** * 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))))); }
public Iterable<StreamsEntry> getCrucibleEntries(final ActivityRequest activityRequest) { Iterable<Pair<StreamsCrucibleActivityItem, ActivityVerb>> activityItem = finder.getNotificationsFor(activityRequest); Iterable<Pair<Pair<StreamsCrucibleActivityItem, ActivityVerb>, ActivityRequest>> logEntries = transform(aggregator.aggregate(activityItem), new PairRequestWithActivityItem(activityRequest)); return memoize(catOptions(transform(logEntries, new Function<Pair<Pair<StreamsCrucibleActivityItem, ActivityVerb>, ActivityRequest>, Option<StreamsEntry>>() { @Override public Option<StreamsEntry> apply(Pair<Pair<StreamsCrucibleActivityItem, ActivityVerb>, ActivityRequest> activityEntry) { // getting entry properties may be expensive, so check for interrupts here CancelledException.throwIfInterrupted(); return crucibleEntryFactory.getEntryFromActivityItem(activityEntry, activityRequest.getContextUri()); } }))); }
public SearchQuery build() { AndBooleanQueryBuilder finalQuery = new AndBooleanQueryBuilder(new ContentTypeQuery(getContentTypes(activityObjects))); if (!createdByUsers.isEmpty() || !lastModifiedByUsers.isEmpty()) { finalQuery.and(composeOrQuery(ImmutableSet.copyOf(concat( catOptions(transform(createdByUsers, ToCreatorQuery.INSTANCE)), catOptions(transform(lastModifiedByUsers, ToLastModifierQuery.INSTANCE)))))); } if (!isEmpty(spaceKeys)) { finalQuery.and(new InSpaceQuery(new HashSet<>(spaceKeys))); } if (!isEmpty(searchTerms)) { finalQuery.and(buildMultiTextFieldQuery(searchTerms)); } if (!isEmpty(excludedSearchTerms)) { finalQuery.not(buildMultiTextFieldQuery(excludedSearchTerms)); } if (minDate.isDefined() || maxDate.isDefined()) { finalQuery.and(new DateRangeQuery(minDate.getOrElse((Date) null), maxDate.getOrElse((Date) null), true, true, MODIFIED)); } return finalQuery.build(); }
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)))));
return catOptions( transform(take(request.getMaxResults() * 2, filter(transform(activityItems, toReviewActivityPair()), and(ImmutableList.of(