I had a similar use case where the return of my query was > 100.
final GroupCollectionPage userGroups = _appClient.users({id})
.memberOfAsGroup()
.buildRequest(requestOptions)
.select("displayName,id,mail")
.filter("startswith(displayName, 'c')")
.orderBy("displayName")
.get();
So I could easily iterate over the result set
// Output each Group details
for (Group usergroup : userGroups.getCurrentPage()) {
System.out.println(" User Group Name: " + usergroup.displayName);
System.out.println(" ID: " + usergroup.id);
System.out.println(" Email: " + usergroup.mail);
}
Here's how to get the next page of the user groups
public static void getGroups() {
LinkedList<Option> requestOptions = new LinkedList<Option>();
requestOptions.add(new HeaderOption("ConsistencyLevel", "eventual"));
requestOptions.add(new QueryOption("$count", "true"));
GroupCollectionPage userGroups = _appClient.users({id})
.memberOfAsGroup()
.buildRequest(requestOptions)
.select("displayName,id,mail")
.filter("startswith(displayName, 'c')")
.orderBy("displayName")
.get();
List<Group> allGroupsList = new ArrayList<>();
do {
List<Group> currentPageGroup = userGroups.getCurrentPage();
allGroupsList.addAll(currentPageGroup);
GroupCollectionRequestBuilder nextPage = userGroups.getNextPage();
userGroups = nextPage == null ? null : nextPage.buildRequest().get();
} while (userGroups != null);
System.out.println("Total Group count is :" + allGroupsList.size());
for (Group usergroup : allGroupsList) {
System.out.println(" User Group Name: " + usergroup.displayName);
System.out.println(" ID: " + usergroup.id);
System.out.println(" Email: " + usergroup.mail);
}
}