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 09:15:51 UTC
[1/2] syncope git commit: [SYNCOPE-1224] Properly using pagination
for search
Repository: syncope
Updated Branches:
refs/heads/2_0_X e3a209352 -> c9354a517
refs/heads/master a799dbc0b -> fdc991aa6
[SYNCOPE-1224] Properly using pagination for search
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/c9354a51
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/c9354a51
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/c9354a51
Branch: refs/heads/2_0_X
Commit: c9354a5172586b3aebade0d365437c8fd74457de
Parents: e3a2093
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 16 11:12:02 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 16 11:12:02 2017 +0200
----------------------------------------------------------------------
.../client/cli/commands/user/UserDetails.java | 6 ++--
.../client/cli/commands/user/UserList.java | 5 +--
.../commands/user/UserSyncopeOperations.java | 35 +++++++++++++++-----
3 files changed, 30 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/c9354a51/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDetails.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDetails.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDetails.java
index d9110eb..5a1dfc4 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDetails.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDetails.java
@@ -43,12 +43,12 @@ public class UserDetails extends AbstractUserCommand {
if (input.parameterNumber() == 0) {
try {
final Map<String, String> details = new LinkedMap<>();
- final List<UserTO> usersTOs = userSyncopeOperations.list().getResult();
+ final List<UserTO> users = userSyncopeOperations.list();
int withoutResource = 0;
int withoutRole = 0;
int activeStatus = 0;
int suspendedStatus = 0;
- for (final UserTO userTO : usersTOs) {
+ for (final UserTO userTO : users) {
if (userTO.getResources().isEmpty()) {
withoutResource++;
}
@@ -61,7 +61,7 @@ public class UserDetails extends AbstractUserCommand {
suspendedStatus++;
}
}
- details.put("Total number", String.valueOf(usersTOs.size()));
+ details.put("Total number", String.valueOf(users.size()));
details.put("Active", String.valueOf(activeStatus));
details.put("Suspended", String.valueOf(suspendedStatus));
details.put("Without resources", String.valueOf(withoutResource));
http://git-wip-us.apache.org/repos/asf/syncope/blob/c9354a51/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java
index 48be66c..d83b734 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java
@@ -21,8 +21,6 @@ package org.apache.syncope.client.cli.commands.user;
import java.util.Scanner;
import org.apache.syncope.client.cli.Input;
import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.PagedResult;
-import org.apache.syncope.common.lib.to.UserTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,8 +44,7 @@ public class UserList extends AbstractUserCommand {
"\nThis operation might produce very large output. Do you want to continue? [yes/no]");
final String answer = scanIn.nextLine();
if ("yes".equalsIgnoreCase(answer)) {
- final PagedResult<UserTO> uResult = userSyncopeOperations.list();
- userResultManager.printUsers(uResult.getResult());
+ userResultManager.printUsers(userSyncopeOperations.list());
} else if ("no".equalsIgnoreCase(answer)) {
userResultManager.genericError("List operation skipped");
} else {
http://git-wip-us.apache.org/repos/asf/syncope/blob/c9354a51/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 4cd5227..f63d934 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
@@ -18,13 +18,13 @@
*/
package org.apache.syncope.client.cli.commands.user;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
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.PagedResult;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.rest.api.beans.AnyQuery;
import org.apache.syncope.common.rest.api.service.UserService;
@@ -45,23 +45,40 @@ public class UserSyncopeOperations {
}
public List<UserTO> searchByRole(final String realm, final String role) {
- return userService.search(new AnyQuery.Builder().realm(realm).
- fiql(SyncopeClient.getUserSearchConditionBuilder().inRoles(role).query()).build()).getResult();
+ return search(new AnyQuery.Builder().realm(realm).
+ fiql(SyncopeClient.getUserSearchConditionBuilder().inRoles(role).query()).build());
}
public List<UserTO> searchByResource(final String realm, final String resource) {
- return userService.search(new AnyQuery.Builder().realm(realm).
- fiql(SyncopeClient.getUserSearchConditionBuilder().hasResources(resource).query()).build()).getResult();
+ return search(new AnyQuery.Builder().realm(realm).
+ fiql(SyncopeClient.getUserSearchConditionBuilder().hasResources(resource).query()).build());
}
public List<UserTO> searchByAttribute(final String realm, final String attributeName, final String attributeValue) {
- return userService.search(new AnyQuery.Builder().realm(realm).
+ return search(new AnyQuery.Builder().realm(realm).
fiql(SyncopeClient.getUserSearchConditionBuilder().is(attributeName).equalTo(attributeValue).query()).
- build()).getResult();
+ build());
+ }
+
+ public List<UserTO> list() {
+ return search(new AnyQuery());
}
- public PagedResult<UserTO> list() {
- return userService.search(new AnyQuery());
+ private List<UserTO> search(final AnyQuery query) {
+ query.setPage(0);
+ query.setSize(0);
+ int count = userService.search(query).getTotalCount();
+
+ List<UserTO> result = new ArrayList<>();
+
+ query.setSize(PAGE_SIZE);
+ for (int page = 1; page <= (count / PAGE_SIZE) + 1; page++) {
+ query.setPage(page);
+
+ result.addAll(userService.search(query).getResult());
+ }
+
+ return result;
}
public UserTO read(final String userKey) {
[2/2] syncope git commit: [SYNCOPE-1224] Properly using pagination
for search
Posted by il...@apache.org.
[SYNCOPE-1224] Properly using pagination for search
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/fdc991aa
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/fdc991aa
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/fdc991aa
Branch: refs/heads/master
Commit: fdc991aa67cb9d3093948d7bb87f6b70317aa825
Parents: a799dbc
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 16 11:12:02 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 16 11:14:32 2017 +0200
----------------------------------------------------------------------
.../client/cli/commands/user/UserDetails.java | 6 ++--
.../client/cli/commands/user/UserList.java | 5 +--
.../commands/user/UserSyncopeOperations.java | 35 +++++++++++++++-----
3 files changed, 30 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/fdc991aa/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDetails.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDetails.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDetails.java
index 59bbf3a..ade6cb3 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDetails.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserDetails.java
@@ -43,12 +43,12 @@ public class UserDetails extends AbstractUserCommand {
if (input.parameterNumber() == 0) {
try {
final Map<String, String> details = new LinkedHashMap<>();
- final List<UserTO> usersTOs = userSyncopeOperations.list().getResult();
+ final List<UserTO> users = userSyncopeOperations.list();
int withoutResource = 0;
int withoutRole = 0;
int activeStatus = 0;
int suspendedStatus = 0;
- for (final UserTO userTO : usersTOs) {
+ for (final UserTO userTO : users) {
if (userTO.getResources().isEmpty()) {
withoutResource++;
}
@@ -61,7 +61,7 @@ public class UserDetails extends AbstractUserCommand {
suspendedStatus++;
}
}
- details.put("Total number", String.valueOf(usersTOs.size()));
+ details.put("Total number", String.valueOf(users.size()));
details.put("Active", String.valueOf(activeStatus));
details.put("Suspended", String.valueOf(suspendedStatus));
details.put("Without resources", String.valueOf(withoutResource));
http://git-wip-us.apache.org/repos/asf/syncope/blob/fdc991aa/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java
index 48be66c..d83b734 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserList.java
@@ -21,8 +21,6 @@ package org.apache.syncope.client.cli.commands.user;
import java.util.Scanner;
import org.apache.syncope.client.cli.Input;
import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.PagedResult;
-import org.apache.syncope.common.lib.to.UserTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,8 +44,7 @@ public class UserList extends AbstractUserCommand {
"\nThis operation might produce very large output. Do you want to continue? [yes/no]");
final String answer = scanIn.nextLine();
if ("yes".equalsIgnoreCase(answer)) {
- final PagedResult<UserTO> uResult = userSyncopeOperations.list();
- userResultManager.printUsers(uResult.getResult());
+ userResultManager.printUsers(userSyncopeOperations.list());
} else if ("no".equalsIgnoreCase(answer)) {
userResultManager.genericError("List operation skipped");
} else {
http://git-wip-us.apache.org/repos/asf/syncope/blob/fdc991aa/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 6efa544..42fb5a3 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
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.client.cli.commands.user;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -26,7 +27,6 @@ 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;
import org.apache.syncope.common.rest.api.service.UserService;
@@ -47,23 +47,40 @@ public class UserSyncopeOperations {
}
public List<UserTO> searchByRole(final String realm, final String role) {
- return userService.search(new AnyQuery.Builder().realm(realm).
- fiql(SyncopeClient.getUserSearchConditionBuilder().inRoles(role).query()).build()).getResult();
+ return search(new AnyQuery.Builder().realm(realm).
+ fiql(SyncopeClient.getUserSearchConditionBuilder().inRoles(role).query()).build());
}
public List<UserTO> searchByResource(final String realm, final String resource) {
- return userService.search(new AnyQuery.Builder().realm(realm).
- fiql(SyncopeClient.getUserSearchConditionBuilder().hasResources(resource).query()).build()).getResult();
+ return search(new AnyQuery.Builder().realm(realm).
+ fiql(SyncopeClient.getUserSearchConditionBuilder().hasResources(resource).query()).build());
}
public List<UserTO> searchByAttribute(final String realm, final String attributeName, final String attributeValue) {
- return userService.search(new AnyQuery.Builder().realm(realm).
+ return search(new AnyQuery.Builder().realm(realm).
fiql(SyncopeClient.getUserSearchConditionBuilder().is(attributeName).equalTo(attributeValue).query()).
- build()).getResult();
+ build());
+ }
+
+ public List<UserTO> list() {
+ return search(new AnyQuery());
}
- public PagedResult<UserTO> list() {
- return userService.search(new AnyQuery());
+ private List<UserTO> search(final AnyQuery query) {
+ query.setPage(0);
+ query.setSize(0);
+ int count = userService.search(query).getTotalCount();
+
+ List<UserTO> result = new ArrayList<>();
+
+ query.setSize(PAGE_SIZE);
+ for (int page = 1; page <= (count / PAGE_SIZE) + 1; page++) {
+ query.setPage(page);
+
+ result.addAll(userService.search(query).getResult());
+ }
+
+ return result;
}
public UserTO read(final String userKey) {