Search This Blog

Wednesday, December 17, 2014

How retrieve portal users using IBM PUMA Built-in service ?

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.naming.NamingException;

import com.ibm.portal.um.Group;
import com.ibm.portal.um.PagingIterator;
import com.ibm.portal.um.PumaController;
import com.ibm.portal.um.PumaHome;
import com.ibm.portal.um.PumaLocator;
import com.ibm.portal.um.PumaProfile;
import com.ibm.portal.um.User;
import com.ibm.portal.um.exceptions.PumaAttributeException;
import com.ibm.portal.um.exceptions.PumaException;
import com.ibm.portal.um.exceptions.PumaMissingAccessRightsException;
import com.ibm.portal.um.exceptions.PumaModelException;
import com.ibm.portal.um.exceptions.PumaSystemException;

public class IBMPumaUtility {
 
 private static IBMPumaUtility pumaUtility;
 private PumaHome pumaHome;
 
 private IBMPumaUtility() throws NamingException {
  javax.naming.Context ctx = new javax.naming.InitialContext();
  pumaHome = (PumaHome) ctx.lookup(PumaHome.JNDI_NAME);
 }

 public static IBMPumaUtility getInstance() throws NamingException {
  if(pumaUtility == null) {
   pumaUtility = new IBMPumaUtility();
  } 
  return pumaUtility;
 }

 public User getCurrentUser() throws PumaException {
  //To retrieve current User
  PumaProfile profile = pumaHome.getProfile();
  return profile.getCurrentUser();
 }
 
 public List<User> getUsersByAttribute(String attributeName, String attributeValue)
  throws PumaSystemException, PumaAttributeException, PumaMissingAccessRightsException {
  //To find Users by attribute
  //(eg. attrName = "cn" and attrValue="Manish")
  PumaLocator locator = pumaHome.getLocator();
  return locator.findUsersByAttribute(attributeName, attributeValue);
 }
 
 public List<User> findUsersByQuery(String query) 
  throws PumaSystemException, PumaAttributeException, PumaMissingAccessRightsException {
  //If you need to search by mutilple attributes, search users by query
  PumaLocator locator = pumaHome.getLocator();
  //String query = "((cn != 'Manish') and (givenName != 'wpsadmin'))";
  return locator.findUsersByQuery(query);
 }
 
 public Map<String, Object> getUserAttributes(User user)
  throws PumaAttributeException, PumaSystemException, PumaModelException, PumaMissingAccessRightsException {
  List<String> returnAttributes = new ArrayList<String>();
  returnAttributes.add("cn");
  returnAttributes.add("mail");
  PumaProfile profile = pumaHome.getProfile();
  Map<String, Object> values = profile.getAttributes(user, returnAttributes);
  return values;
 }
 
 public List<Group> findGroupsByAttribute(String attributeName, String attributeValue) 
  throws PumaSystemException, PumaAttributeException, PumaMissingAccessRightsException {
  //Just like findUsers you can find Groups by attribute
  PumaLocator locator = pumaHome.getLocator();  
  List<Group> groups = locator.findGroupsByAttribute(attributeName, attributeValue);
  return groups;
 }

 public PagingIterator<User> paginationFindUsersByQuery(String query, int resultsPerPage)
  throws PumaSystemException, PumaAttributeException, PumaMissingAccessRightsException {
  //PumaLocator provides method to either return a List of PagingIterator
  //int resultsPerPage = 10;  
  PumaLocator locator = pumaHome.getLocator();
  Map<String, Integer> pProperties = new HashMap<String, Integer>();
  pProperties.put(PumaLocator.RESULTS_PER_PAGE, resultsPerPage);
  PagingIterator<User> pIterator = locator.findUsersByQuery(query, pProperties);
  return pIterator;
 }
 
 public void updateUserAttribute(User user, String attribute, String value)
  throws PumaAttributeException, PumaSystemException, PumaModelException, PumaMissingAccessRightsException {
  PumaController pController = pumaHome.getController();  
  //Use PumaController to set or remove User attribute
  Map<String, Object> attributes = new HashMap<String, Object>();
  attributes.put(attribute, value);
  pController.setAttributes(user, attributes);   
 }
 
 public void updateUserAttributes(User user, Map<String, Object> attributes)
 throws PumaAttributeException, PumaSystemException, PumaModelException, PumaMissingAccessRightsException {
  PumaController pController = pumaHome.getController();  
  //Use PumaController to set or remove User attribute
  pController.setAttributes(user, attributes);   
 }
 
 public void removeUserAttribute(User user, String attribute)
  throws PumaAttributeException, PumaSystemException, PumaModelException, PumaMissingAccessRightsException {
  List<String> keys = new ArrayList<String>();
  //keys.add("mail");
  keys.add(attribute);
  
  PumaController pController = pumaHome.getController();
  pController.removeAttributes(user, keys);   
 }

 public void removeUserAttributes(User user, List<String> attributes)
  throws PumaAttributeException, PumaSystemException, PumaModelException, PumaMissingAccessRightsException {
  PumaController pController = pumaHome.getController();
  pController.removeAttributes(user, attributes);   
 }

}