You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2017/10/16 08:40:34 UTC
[1/2] syncope git commit: [SYNCOPE-1224] Properly using pagination
for bulk delete
Repository: syncope
Updated Branches:
refs/heads/2_0_X 4525e3c9b -> e3a209352
refs/heads/master d641ee222 -> a799dbc0b
[SYNCOPE-1224] Properly using pagination for bulk delete
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/e3a20935
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/e3a20935
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/e3a20935
Branch: refs/heads/2_0_X
Commit: e3a20935270457f85da4822e7b02eb837e25a8be
Parents: 4525e3c
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 16 10:38:19 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 16 10:38:19 2017 +0200
----------------------------------------------------------------------
.../commands/user/UserSyncopeOperations.java | 34 +++++++++++++-------
1 file changed, 23 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/e3a20935/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
index cc9101b..4cd5227 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
@@ -31,6 +31,8 @@ import org.apache.syncope.common.rest.api.service.UserService;
public class UserSyncopeOperations {
+ private static final int PAGE_SIZE = 100;
+
private final UserService userService = SyncopeServices.get(UserService.class);
public boolean auth(final String username, final String password) {
@@ -72,23 +74,33 @@ public class UserSyncopeOperations {
public Map<String, BulkActionResult.Status> deleteByAttribute(
final String realm, final String attributeName, final String attributeValue) {
- final List<UserTO> users = userService.search(new AnyQuery.Builder().realm(realm).
- fiql(SyncopeClient.getUserSearchConditionBuilder().is(attributeName).equalTo(attributeValue)
- .query()).build()).getResult();
- return deleteBulk(users);
+
+ return bulkDelete(new AnyQuery.Builder().realm(realm).fiql(
+ SyncopeClient.getUserSearchConditionBuilder().is(attributeName).equalTo(attributeValue).query()).
+ build());
}
public Map<String, BulkActionResult.Status> deleteAll(final String realm) {
- return deleteBulk(userService.search(new AnyQuery.Builder().realm(realm).details(false).build()).getResult());
+ return bulkDelete(new AnyQuery.Builder().realm(realm).details(false).build());
}
- private Map<String, BulkActionResult.Status> deleteBulk(final List<UserTO> users) {
- final BulkAction bulkAction = new BulkAction();
+ private Map<String, BulkActionResult.Status> bulkDelete(final AnyQuery query) {
+ query.setPage(0);
+ query.setSize(0);
+ int count = userService.search(query).getTotalCount();
+
+ BulkAction bulkAction = new BulkAction();
bulkAction.setType(BulkAction.Type.DELETE);
- for (UserTO user : users) {
- bulkAction.getTargets().add(String.valueOf(user.getKey()));
+
+ query.setSize(PAGE_SIZE);
+ for (int page = 1; page <= (count / PAGE_SIZE) + 1; page++) {
+ query.setPage(page);
+
+ for (UserTO user : userService.search(query).getResult()) {
+ bulkAction.getTargets().add(user.getKey());
+ }
}
- final BulkActionResult bulkResult = userService.bulk(bulkAction).readEntity(BulkActionResult.class);
- return bulkResult.getResults();
+
+ return userService.bulk(bulkAction).readEntity(BulkActionResult.class).getResults();
}
}
[2/2] syncope git commit: [SYNCOPE-1224] Properly using pagination
for bulk delete
Posted by il...@apache.org.
[SYNCOPE-1224] Properly using pagination for bulk delete
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/a799dbc0
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/a799dbc0
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/a799dbc0
Branch: refs/heads/master
Commit: a799dbc0bbcce4635ab41cd8e6867431aa434702
Parents: d641ee2
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 16 10:38:19 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 16 10:40:21 2017 +0200
----------------------------------------------------------------------
.../commands/user/UserSyncopeOperations.java | 37 +++++++++++++-------
1 file changed, 25 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/a799dbc0/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
index cbd0eb5..6efa544 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
@@ -20,10 +20,12 @@ package org.apache.syncope.client.cli.commands.user;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import org.apache.syncope.client.cli.SyncopeServices;
import org.apache.syncope.client.lib.SyncopeClient;
import org.apache.syncope.common.lib.to.BulkAction;
import org.apache.syncope.common.lib.to.BulkActionResult;
+import org.apache.syncope.common.lib.to.EntityTO;
import org.apache.syncope.common.lib.to.PagedResult;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.rest.api.beans.AnyQuery;
@@ -31,6 +33,8 @@ import org.apache.syncope.common.rest.api.service.UserService;
public class UserSyncopeOperations {
+ private static final int PAGE_SIZE = 100;
+
private final UserService userService = SyncopeServices.get(UserService.class);
public boolean auth(final String username, final String password) {
@@ -72,23 +76,32 @@ public class UserSyncopeOperations {
public Map<String, BulkActionResult.Status> deleteByAttribute(
final String realm, final String attributeName, final String attributeValue) {
- final List<UserTO> users = userService.search(new AnyQuery.Builder().realm(realm).
- fiql(SyncopeClient.getUserSearchConditionBuilder().is(attributeName).equalTo(attributeValue)
- .query()).build()).getResult();
- return deleteBulk(users);
+
+ return bulkDelete(new AnyQuery.Builder().realm(realm).fiql(
+ SyncopeClient.getUserSearchConditionBuilder().is(attributeName).equalTo(attributeValue).query()).
+ build());
}
public Map<String, BulkActionResult.Status> deleteAll(final String realm) {
- return deleteBulk(userService.search(new AnyQuery.Builder().realm(realm).details(false).build()).getResult());
+ return bulkDelete(new AnyQuery.Builder().realm(realm).details(false).build());
}
- private Map<String, BulkActionResult.Status> deleteBulk(final List<UserTO> users) {
- final BulkAction bulkAction = new BulkAction();
+ private Map<String, BulkActionResult.Status> bulkDelete(final AnyQuery query) {
+ query.setPage(0);
+ query.setSize(0);
+ int count = userService.search(query).getTotalCount();
+
+ BulkAction bulkAction = new BulkAction();
bulkAction.setType(BulkAction.Type.DELETE);
- users.forEach(user -> {
- bulkAction.getTargets().add(user.getKey());
- });
- final BulkActionResult bulkResult = userService.bulk(bulkAction).readEntity(BulkActionResult.class);
- return bulkResult.getResults();
+
+ query.setSize(PAGE_SIZE);
+ for (int page = 1; page <= (count / PAGE_SIZE) + 1; page++) {
+ query.setPage(page);
+
+ bulkAction.getTargets().addAll(userService.search(query).getResult().stream().
+ map(EntityTO::getKey).collect(Collectors.toList()));
+ }
+
+ return userService.bulk(bulkAction).readEntity(BulkActionResult.class).getResults();
}
}