Sunday 21 August 2016

Scheduler -Assign Admin Role To User in OIM11GR2

=========================Assign Admin Role To User=========================
In this Post fetching User Login and Admin Role from CSV File and assigning Admin Role to User. We cannot assign Admin Role through Client Code so need to Deploy Code as Scheduler the it will work.
--------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------
=========================Java Code Put in lib folder============================
package com.oim.scheduler.AssignAdminRole;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.csvreader.CsvReader;
import Thor.API.tcResultSet;
import Thor.API.Exceptions.tcAPIException;
import Thor.API.Exceptions.tcColumnNotFoundException;
import Thor.API.Operations.tcGroupOperationsIntf;
import Thor.API.Operations.tcLookupOperationsIntf;
import Thor.API.Operations.tcUserOperationsIntf;
import oracle.core.ojdl.logging.ODLLogger;
import oracle.iam.identity.rolemgmt.api.RoleManager;
import oracle.iam.platform.Platform;
import oracle.iam.platform.authopss.api.AdminRoleService;
import oracle.iam.platform.authopss.vo.AdminRole;
import oracle.iam.platform.authopss.vo.AdminRoleMembership;
import oracle.iam.scheduler.vo.TaskSupport;

public class AssignAdminRole extends TaskSupport{
String _className = "com.oim.scheduler.AssignAdminRole.java-";
private static final ODLLogger logger = ODLLogger.getODLLogger("SCH_SUBORGANIZATIONCREATION.LOGGER");
AdminRoleService arsi;
String usrLogin = null;
String roleName = null;
public void execute(HashMap hashMap)
{

String _methodName = "execute()-";
logger.log(java.util.logging.Level.FINE, "****** Start Scheduler ******");
String csvFileLoc = (String) hashMap.get("CSV File Location");
String csvSeparator = ",";
logger.log(java.util.logging.Level.FINE, "Got Scheduler Attributes : [CSV File Location:"+csvFileLoc+"] [CSV Separator:"+csvSeparator+"]");

logger.log(java.util.logging.Level.FINE, ">>>>>>>>>>>>>>>>>>>>>>> Start - Admin Role Assignment <<<<<<<<<<<<<<<<<<<<<<<<<<");
try {
assignAdminRoleToUser(csvFileLoc, csvSeparator);
} catch (IOException e) {
String _errorMessage = "Exception-Exception-Message : " + e.getMessage();
       logger.log(java.util.logging.Level.INFO, _className + _methodName + _errorMessage);    
       java.io.StringWriter sw = new java.io.StringWriter();
       java.io.PrintWriter pw = new java.io.PrintWriter(sw);
       e.printStackTrace(pw);                                                                                        
       logger.log(java.util.logging.Level.SEVERE, _className + _methodName + _errorMessage + "- Complete Error Stack : " + sw.toString());
}
logger.log(java.util.logging.Level.FINE, ">>>>>>>>>>>>>>>>>>>>>>> End - Admin Role Assignment <<<<<<<<<<<<<<<<<<<<<<<<<<");
}
private void assignAdminRoleToUser(String csvFileLoc,String csvSeparator) throws IOException{

logger.log(java.util.logging.Level.FINE,"<<<<<<<<<<<<Read CSV Method>>>>>>>>>>>>>>>>");
String _methodName = "assignAdminRoleToUser()-";
logger.log(java.util.logging.Level.FINE,"CSV File Loc:"+csvFileLoc+"CSV Separator:"+csvSeparator);
tcUserOperationsIntf userintf = Platform.getService(tcUserOperationsIntf.class);
tcGroupOperationsIntf roleintf=Platform.getService(tcGroupOperationsIntf.class);
RoleManager rolemgr=Platform.getService(RoleManager.class);
CsvReader dataValue;
String usrKey=null;
Long orgKey=(long) 4;
char c[]=csvSeparator.toCharArray();
logger.log(java.util.logging.Level.FINE,"value of c[0]----> "+c[0]);
dataValue = new CsvReader(csvFileLoc,c[0]);
dataValue.readHeaders();
String s[] = dataValue.getHeaders();
for(int i=0;i<s.length;i++){
logger.log(java.util.logging.Level.FINE,"Header name: ----> "+s[i]);
}
try {
while (dataValue.readRecord()){
usrLogin = dataValue.get("User Login");
roleName = dataValue.get("Role Name");
logger.log(java.util.logging.Level.FINE,"User Login-->"+usrLogin+"Role Name----->"+roleName);
    HashMap userMap = new HashMap();
    userMap.put("Users.User ID", usrLogin);
            tcResultSet userResultSet = null;
            HashMap roleMap = new HashMap();
roleMap.put("Groups.Group Name", roleName);
            tcResultSet roleResultSet = null;
try {
userResultSet = userintf.findUsers(userMap);
String[] CNameforUser=userResultSet.getColumnNames();
usrKey=userResultSet.getStringValue("Users.Key");
logger.log(java.util.logging.Level.FINE,"User Key is --->"+usrKey);
logger.log(java.util.logging.Level.FINE,"<<<<<<<<<<<<<<<Start Processing Admin Role Assignment>>>>>>>>>>>>>>>>>");
arsi = Platform.getService(AdminRoleService.class);
AdminRole admrole= arsi.getAdminRole(roleName);
       AdminRoleMembership arm = new AdminRoleMembership(usrKey, admrole, orgKey, true);
       arsi.addAdminRoleMembership(arm);
       logger.log(java.util.logging.Level.FINE,"<<<<<<<<<<<<<<<Admin Role Assigned Successfully>>>>>>>>>>>>>>>>>");
     
} catch (tcColumnNotFoundException e) {
String _errorMessage = "Exception-Exception-Message : " + e.getMessage();
       logger.log(java.util.logging.Level.INFO, _className + _methodName + _errorMessage);    
       java.io.StringWriter sw = new java.io.StringWriter();
       java.io.PrintWriter pw = new java.io.PrintWriter(sw);
       e.printStackTrace(pw);                                                                                        
       logger.log(java.util.logging.Level.SEVERE, _className + _methodName + _errorMessage + "- Complete Error Stack : " + sw.toString());
}
catch (tcAPIException e) {
String _errorMessage = "Exception-Exception-Message : " + e.getMessage();
       logger.log(java.util.logging.Level.INFO, _className + _methodName + _errorMessage);    
       java.io.StringWriter sw = new java.io.StringWriter();
       java.io.PrintWriter pw = new java.io.PrintWriter(sw);
       e.printStackTrace(pw);                                                                                        
       logger.log(java.util.logging.Level.SEVERE, _className + _methodName + _errorMessage + "- Complete Error Stack : " + sw.toString());
}
catch (Exception e) {
String _errorMessage = "Exception-Exception-Message : " + e.getMessage();
       logger.log(java.util.logging.Level.INFO, _className + _methodName + _errorMessage);    
       java.io.StringWriter sw = new java.io.StringWriter();
       java.io.PrintWriter pw = new java.io.PrintWriter(sw);
       e.printStackTrace(pw);                                                                                        
       logger.log(java.util.logging.Level.SEVERE, _className + _methodName + _errorMessage + "- Complete Error Stack : " + sw.toString());
}
}
} catch (IOException e) {
String _errorMessage = "Exception-Exception-Message : " + e.getMessage();
       logger.log(java.util.logging.Level.INFO, _className + _methodName + _errorMessage);    
       java.io.StringWriter sw = new java.io.StringWriter();
       java.io.PrintWriter pw = new java.io.PrintWriter(sw);
       e.printStackTrace(pw);                                                                                        
       logger.log(java.util.logging.Level.SEVERE, _className + _methodName + _errorMessage + "- Complete Error Stack : " + sw.toString());

}

}

@Override
public HashMap getAttributes() {
// TODO Auto-generated method stub
return null;
}
@Override
public void setAttributes() {
// TODO Auto-generated method stub

}
}

=========================plugins.xml=================================
<?xml version="1.0" encoding="UTF-8"?>
<oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance/oim/scheduler">
<plugins pluginpoint="oracle.iam.scheduler.vo.TaskSupport">
<plugin pluginclass= "com.oim.scheduler.AssignAdminRole" version="1.0.0" name="AssignAdminRole">
</plugin>
</plugins>
</oimplugins>

===========================AssignAdminMetadata.xml========================
Put below content in  "META-INF" Folder in XML File "metaDataAssignAdminRole.xml"

<?xml version="1.0" encoding="UTF-8"?>
<scheduledTasks xmlns="http://xmlns.oracle.com/oim/scheduler">
<task>
<name>AssignAdminRole</name>
<class>com.oim.scheduler.AssignAdminRole</class>
<description>AssignAdminRole</description>
<retry>5</retry>
<parameters>
<string-param required="true" encrypted="false" helpText="CSV File Location">CSV File Location</string-param>
</parameters>
</task>
</scheduledTasks>



No comments:

Post a Comment