Skip to content

Instantly share code, notes, and snippets.

@ramannanda9
Last active January 1, 2016 12:58
Show Gist options
  • Select an option

  • Save ramannanda9/8147672 to your computer and use it in GitHub Desktop.

Select an option

Save ramannanda9/8147672 to your computer and use it in GitHub Desktop.
Recursive delete organization, Its users or permissions, remove inheritance and itself.
/**
* This method recursively deletes and organization and its permission objects/users
* Its descendants if any are there before deleting the organization
* @param orgUnit The orgUnit name
* @param delAdmMgr A delegated Admin Manager instance
* @param revMgr A Delegated review manager instance
* @param rvMgr A review manager instance
* @param admMgr A admin manager instance
* @return
*/
public Set recursiveDelete(OrgUnit orgUnit,DelAdminMgr delAdmMgr,DelReviewMgr revMgr,ReviewMgr rvMgr,AdminMgr admMgr){
String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
Set deletedOrganizationUnits=new HashSet();
try{
OrgUnit tempOrgUnit=revMgr.read(orgUnit);
Set children=tempOrgUnit.getChildren();
if(children!=null&&!children.isEmpty()){
Iterator it=children.iterator();
while(it.hasNext()){
OrgUnit newOrgUnit=new OrgUnit();
newOrgUnit.setName((String)it.next());
newOrgUnit.setType(orgUnit.getType());
delAdmMgr.deleteInheritance(orgUnit, newOrgUnit);
deletedOrganizationUnits.addAll(recursiveDelete(newOrgUnit,delAdmMgr,revMgr,rvMgr,admMgr));
}
}
//check for users belonging to this organization unit
else{
//check if user organization
if(tempOrgUnit.getType().equals(OrgUnit.Type.USER)){
List<User> users=rvMgr.findUsers(tempOrgUnit);
if(!users.isEmpty()){
Iterator it=users.iterator();
while(it.hasNext()){
User user=(User)it.next();
admMgr.deleteUser(user);
}
}
}
else{
List <PermObj> permObjs=rvMgr.findPermObjs(tempOrgUnit);
if(!permObjs.isEmpty()){
Iterator it=permObjs.iterator();
while(it.hasNext()){
PermObj permObj=(PermObj)it.next();
//check permObj is admin or not
if(permObj.isAdmin()){
delAdmMgr.deletePermObj(permObj);
}else{
admMgr.deletePermObj(permObj);
}
}
}
}
}
delAdmMgr.delete(tempOrgUnit);
deletedOrganizationUnits.add(tempOrgUnit.getName());
}catch (SecurityException e) {
LDAPLogger.severe("[" + methodName + "]" + "Exception Occured" + e.getMessage(), e);
throw new RunTimeException("Exception Occurred", e);
}
return deletedOrganizationUnits;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment