Crowd : Getting all users removing duplicates in an application using Crowd REST java client

  1. //your crowd server settings
  2. String url = "http://auth.staging.company.com/crowd/";//crowd base url
  3. String applicationName = "appincrowd";
  4. String applicationPass = "apppassword";
  5. String groupName = "usergroup";//a user group under the app
  6. CrowdClient client = new RestCrowdClientFactory().newInstance(url, applicationName, applicationPass);
  7. //initialze crowd client

  1. //a single user can be more than one group,so let's remove duplicate users by using Set
  2.         Set<CrowdUser> allCrowdUsers = new HashSet<>();
  3.         List<String> newGroupList = client.searchGroupNames(NullRestrictionImpl.INSTANCE, 0, maxGroupSearchResult);
  4.         //get all users in a single list
  5.         for (String currGroupName : newGroupList) {
  6.             List<User> currGroupUsers = client.getUsersOfGroup(currGroupName, 0, maxUserSearchResult);
  7.             for (User grpUser : currGroupUsers) {
  8.                 allCrowdUsers.add(new CrowdUser(grpUser));
  9.             }
  10.         }
  11.         //traverse the all users list
  12.         for (User usr : allCrowdUsers) {
  13.             System.out.println(usr.getName() + " " + usr.getFirstName() + " " + usr.getLastName() + " (" + usr.getEmailAddress() + ")");
  14.         }
Output:
  1. //john cooper (cooper@company.com)
  2. //sam peters (sam@company.com)
  3. //...............................
  4. //Istiak Ahmad (iask@company.com)
Extended crowd user class:
CrowdUser.java:
  1. import com.atlassian.crowd.model.user.User;
  2. import com.atlassian.crowd.model.user.UserTemplate;
  3. /**
  4. *Extend user with overridden equals() and hashCode() method according to user email address so that we can build a collection(Set<>) with no different users with same email address
  5. *
  6. */
  7. public class CrowdUser extends UserTemplate {
  8.     public CrowdUser(User user) {
  9.         super(user);
  10.     }
  11.     /**
  12.      compare only user email address
  13.      */
  14.     @Override
  15.     public boolean equals(Object object) {
  16.         boolean result = false;
  17.         if (object == null || object.getClass() != getClass()) {
  18.             result = false;
  19.         } else {
  20.             CrowdUser muser = (CrowdUser) object;
  21.             if (this.getEmailAddress().compareTo(muser.getEmailAddress()) == 0) {
  22.                 result = true;
  23.             }
  24.         }
  25.         return result;
  26.     }
  27.     // only email address
  28.     @Override
  29.     public int hashCode() {
  30.         return this.getEmailAddress().hashCode();
  31.     }
  32.     
  33. }

No comments:

Post a Comment