mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 16:35:45 +01:00
Introduce filter parameter in Manager
This commit is contained in:
@@ -12,6 +12,7 @@ import javax.ws.rs.core.Response;
|
||||
import java.net.URI;
|
||||
import java.util.Comparator;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
|
||||
@@ -42,12 +43,12 @@ class CollectionResourceManagerAdapter<MODEL_OBJECT extends ModelObject,
|
||||
* Reads all model objects in a paged way, maps them using the given function and returns a corresponding http response.
|
||||
* This handles all corner cases, eg. missing privileges.
|
||||
*/
|
||||
public Response getAll(int page, int pageSize, String sortBy, boolean desc, Function<PageResult<MODEL_OBJECT>, CollectionDto> mapToDto) {
|
||||
PageResult<MODEL_OBJECT> pageResult = fetchPage(sortBy, desc, page, pageSize);
|
||||
public Response getAll(int page, int pageSize, Predicate<MODEL_OBJECT> filter, String sortBy, boolean desc, Function<PageResult<MODEL_OBJECT>, CollectionDto> mapToDto) {
|
||||
PageResult<MODEL_OBJECT> pageResult = fetchPage(filter, sortBy, desc, page, pageSize);
|
||||
return Response.ok(mapToDto.apply(pageResult)).build();
|
||||
}
|
||||
|
||||
private PageResult<MODEL_OBJECT> fetchPage(String sortBy, boolean desc, int pageNumber,
|
||||
private PageResult<MODEL_OBJECT> fetchPage(Predicate<MODEL_OBJECT> filter, String sortBy, boolean desc, int pageNumber,
|
||||
int pageSize) {
|
||||
AssertUtil.assertPositive(pageNumber);
|
||||
AssertUtil.assertPositive(pageSize);
|
||||
@@ -57,7 +58,7 @@ class CollectionResourceManagerAdapter<MODEL_OBJECT extends ModelObject,
|
||||
sortBy = "id";
|
||||
}
|
||||
|
||||
return manager.getPage(createComparator(sortBy, desc), pageNumber, pageSize);
|
||||
return manager.getPage(filter, createComparator(sortBy, desc), pageNumber, pageSize);
|
||||
}
|
||||
|
||||
private Comparator<MODEL_OBJECT> createComparator(String sortBy, boolean desc) {
|
||||
|
||||
@@ -45,8 +45,8 @@ class IdResourceManagerAdapter<MODEL_OBJECT extends ModelObject,
|
||||
);
|
||||
}
|
||||
|
||||
public Response getAll(int page, int pageSize, String sortBy, boolean desc, Function<PageResult<MODEL_OBJECT>, CollectionDto> mapToDto) {
|
||||
return collectionAdapter.getAll(page, pageSize, sortBy, desc, mapToDto);
|
||||
public Response getAll(int page, int pageSize, Predicate<MODEL_OBJECT> filter, String sortBy, boolean desc, Function<PageResult<MODEL_OBJECT>, CollectionDto> mapToDto) {
|
||||
return collectionAdapter.getAll(page, pageSize, filter, sortBy, desc, mapToDto);
|
||||
}
|
||||
|
||||
public Response create(DTO dto, Supplier<MODEL_OBJECT> modelObjectSupplier, Function<MODEL_OBJECT, String> uriCreator) {
|
||||
|
||||
@@ -59,6 +59,7 @@ import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
@@ -250,7 +251,7 @@ public class DefaultGroupManager extends AbstractGroupManager
|
||||
@Override
|
||||
public Collection<Group> getAll()
|
||||
{
|
||||
return getAll(null);
|
||||
return getAll(group -> true, null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -262,14 +263,14 @@ public class DefaultGroupManager extends AbstractGroupManager
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Collection<Group> getAll(Comparator<Group> comparator)
|
||||
public Collection<Group> getAll(Predicate<Group> filter, Comparator<Group> comparator)
|
||||
{
|
||||
List<Group> groups = new ArrayList<>();
|
||||
|
||||
PermissionActionCheck<Group> check = GroupPermissions.read();
|
||||
for (Group group : groupDAO.getAll())
|
||||
{
|
||||
if (check.isPermitted(group)) {
|
||||
if (filter.test(group) && check.isPermitted(group)) {
|
||||
groups.add(group.clone());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,7 @@ import java.util.Set;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import static sonia.scm.AlreadyExistsException.alreadyExists;
|
||||
import static sonia.scm.ContextEntry.ContextBuilder.entity;
|
||||
@@ -253,13 +254,14 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Repository> getAll(Comparator<Repository> comparator) {
|
||||
public Collection<Repository> getAll(Predicate<Repository> filter, Comparator<Repository> comparator) {
|
||||
List<Repository> repositories = Lists.newArrayList();
|
||||
|
||||
PermissionActionCheck<Repository> check = RepositoryPermissions.read();
|
||||
|
||||
for (Repository repository : repositoryDAO.getAll()) {
|
||||
if (handlerMap.containsKey(repository.getType())
|
||||
&& filter.test(repository)
|
||||
&& check.isPermitted(repository)) {
|
||||
Repository r = repository.clone();
|
||||
|
||||
@@ -276,7 +278,7 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager {
|
||||
|
||||
@Override
|
||||
public Collection<Repository> getAll() {
|
||||
return getAll(null);
|
||||
return getAll(repository -> true, null);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@ import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -280,7 +281,7 @@ public class DefaultUserManager extends AbstractUserManager
|
||||
@Override
|
||||
public Collection<User> getAll()
|
||||
{
|
||||
return getAll(null);
|
||||
return getAll(user -> true, null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -292,13 +293,13 @@ public class DefaultUserManager extends AbstractUserManager
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Collection<User> getAll(Comparator<User> comparator)
|
||||
public Collection<User> getAll(Predicate<User> filter, Comparator<User> comparator)
|
||||
{
|
||||
List<User> users = new ArrayList<>();
|
||||
|
||||
PermissionActionCheck<User> check = UserPermissions.read();
|
||||
for (User user : userDAO.getAll()) {
|
||||
if (check.isPermitted(user)) {
|
||||
if (filter.test(user) && check.isPermitted(user)) {
|
||||
users.add(user.clone());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user