/** * Determines the project keys based on the {@code ActivityRequest}. * * @param request the {@code ActivityRequest} containing the filter information * @return the project keys to be searched */ public static Iterable<String> getProjectKeys(ActivityRequest request) { return getIsValues(request.getStandardFilters().get(PROJECT_KEY)); }
private Iterable<Project> getProjects(ActivityRequest request) { Iterable<String> projectKeys = getIsValues(request.getStandardFilters().get(PROJECT_KEY)); if (!isEmpty(projectKeys)) { return filter(transform(projectKeys, toProject), and(notNull(), hasPermission)); } else { return permissionManager.getProjects(ProjectPermissions.BROWSE_PROJECTS, authenticationContext.getLoggedInUser()); } }
/** * Determines the issue keys based on the {@code ActivityRequest} * @param request the {@code ActivityRequest} containing the filter information * @return the issue keys to be searched */ public static Iterable<String> getIssueKeys(ActivityRequest request) { return getIsValues(request.getStandardFilters().get(ISSUE_KEY.getKey())); }
/** * Determines the authors based on the {@code ActivityRequest}. * * @param request the {@code ActivityRequest} containing the filter information * @return the authors to be searched */ public static Iterable<String> getAuthors(ActivityRequest request) { return getIsValues(request.getStandardFilters().get(USER.getKey())); }
/** * Determines the search terms (i.e. issue keys) based on the {@code ActivityRequest}. * * @param request the {@code ActivityRequest} containing the filter information * @return the search terms to be searched */ public static Iterable<String> getSearchTerms(ActivityRequest request) { return getIsValues(request.getStandardFilters().get(ISSUE_KEY.getKey())); }
private Collection<String> getUsers(ActivityRequest request) { Collection<Pair<Operator, Iterable<String>>> filters = request.getStandardFilters().get(USER.getKey()); if (filters.isEmpty()) { // ChangeHistoryManager is a bit stupid and will add a "reporter in ()" clause if the user list is // not null and empty. So we return null here to signal it shouldn't add any reporter clause. return null; } Collection<String> result = getIsValues(filters); if (result.isEmpty()) { // See above return null; } else { Set<String> keysFromNames = ImmutableSet.copyOf(filter(transform(result, keyToUsername),notNull())); // See above return keysFromNames.isEmpty() ? null : keysFromNames; } }
/** * Creates a {@code Predicate} to determine if any of several usernames match the filters from the request. * If the request does not contain any author filters, the returned {@code Predicate} will return {@code true} * for every username. Only a single match is needed for the {@code Predicate} to return true. * * @param request request to generate the user predicate from * @return {@code Predicate} to determine if a set of usernames match the filters from the request */ public static Predicate<Iterable<String>> anyInUsers(ActivityRequest request) { if (isEmpty(getIsValues(request.getStandardFilters().get(USER.getKey())))) { return alwaysTrue(); } return new AnyInUsers(request); }
public Iterable<RepositoryHandle> getRepositories(ActivityRequest request) { Iterable<String> projectKeys = getIsValues(request.getStandardFilters().get(PROJECT_KEY)); Iterable<RepositoryHandle> repoHandles; if (!isEmpty(projectKeys)) { repoHandles = filter(transform(projectKeys, toRepositoryHandles()), notNull()); } else { repoHandles = repositoryManager.getHandles(); } // Filter out any repository handles that match the NOT project_key filter option return filter(repoHandles, repoName(inProjectKeys(request))); }
/** * Creates a {@code Predicate} to apply the filter by network of "followed users". * * @param request request to generate the predicate from * @param username the user requesting the Activity Stream, as returned by {@link UserManager#getRemoteUsername()} * @return {@code Predicate} to determine if a user matches the filter of the request */ public Predicate<String> getFollowedUsersPredicate(ActivityRequest request, String username) { Collection<Pair<StreamsFilterType.Operator, Iterable<String>>> networkFilters = request.getProviderFilters().get(ConfluenceFilterOptionProvider.NETWORK_FILTER); if (networkFilters.isEmpty()) { return alwaysTrue(); } User user = userAccessor.getUser(username); List<String> followedUsers = followManager.getFollowing(user); if (!getIsValues(networkFilters).isEmpty()) { // Return a predicate on followed users return in(followedUsers); } if (!getNotValues(networkFilters).isEmpty()) { // Return a predicate on followed users return not(in(followedUsers)); } return alwaysTrue(); }
private Iterable<CrucibleActivityItemParameter> activityItemParameters(ActivityRequest request, Option<Set<Review>> reviews) { ImmutableList.Builder<CrucibleActivityItemParameter> builder = new ImmutableList.Builder<CrucibleActivityItemParameter>(); builder.add(builder(PROJECT_KEY, IN).values(getIsValues(request.getStandardFilters().get(StandardStreamsFilterOption.PROJECT_KEY))).build()); builder.add(builder(USERNAME, IN).values(getIsValues(request.getStandardFilters().get(USER.getKey()))).build()); builder.add(builder(REVIEW_ID, IN).values(transform(reviews.getOrElse(ImmutableSet.<Review>of()), toReviewId())).build()); builder.add(builder(LOG_ACTION, IN).values(SUPPORTED_ACTIONS).build()); for (Date date : getMinDate(request)) { builder.add(builder(CREATE_DATE, GT).value(date).build()); } for (Date date : getMaxDate(request)) { builder.add(builder(CREATE_DATE, LT).value(date).build()); } builder.add(builder(PROJECT_KEY, NOT_IN).values(getAllValues(NOT, request.getStandardFilters().get(StandardStreamsFilterOption.PROJECT_KEY))).build()); builder.add(builder(USERNAME, NOT_IN).values(getAllValues(NOT, request.getStandardFilters().get(USER.getKey()))).build()); return builder.build(); }
@Override public CancellableTask<StreamsFeed> getActivityFeed(final ActivityRequest activityRequest) { final BuildIssueFilter filter = new BuildIssueFilter(); filter.setInProjectKeys(getInProjectsByPermission(Filters.getIsValues(activityRequest.getStandardFilters().get (StandardStreamsFilterOption.PROJECT_KEY)))); filter.setNotInProjectKeys(Filters.getNotValues(activityRequest.getStandardFilters().get (StandardStreamsFilterOption.PROJECT_KEY))); filter.setInIssueKeys(Filters.getIsValues(activityRequest.getStandardFilters().get(StandardStreamsFilterOption .ISSUE_KEY.getKey()))); filter.setNotInIssueKeys(Filters.getNotValues(activityRequest.getStandardFilters().get (StandardStreamsFilterOption.ISSUE_KEY.getKey()))); filter.setInUsers(Filters.getIsValues(activityRequest.getStandardFilters().get(StandardStreamsFilterOption.USER .getKey()))); filter.setNotInUsers(Filters.getNotValues(activityRequest.getStandardFilters().get(StandardStreamsFilterOption
Set<String> users = getIsValues(request.getStandardFilters().get(USER.getKey())); if (!isEmpty(users))
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(); }