Pre Process Event Handler For Overriding the values with DB values while creating the user in OIM
While creating a user in OIM directly, Based on the user Login value in OIM, it will override the attributes First Name and Last Name with the values available in database.
CODE:
package eventHandlers;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Hashtable;
import javax.security.auth.login.LoginException;
import oracle.iam.identity.usermgmt.api.UserManagerConstants;
import oracle.iam.platform.OIMClient;
import oracle.iam.platform.context.ContextAware;
import oracle.iam.platform.kernel.spi.PreProcessHandler;
import oracle.iam.platform.kernel.vo.AbstractGenericOrchestration;
import oracle.iam.platform.kernel.vo.BulkEventResult;
import oracle.iam.platform.kernel.vo.BulkOrchestration;
import oracle.iam.platform.kernel.vo.EventResult;
import oracle.iam.platform.kernel.vo.Orchestration;
public class ContractEmployeesPreProcessEH implements PreProcessHandler {
private static String OIMUserName = "xelsysadm";
private static String OIMPassword = "
private static String OIMURL = "t3://<HostName>:<oimPortNo>";
private static String OIMInitialContextFactory = "weblogic.jndi.WLInitialContextFactory";
private static Connection conn = null;
private static Statement stmt = null;
private static ResultSet rset = null;
private static String url = "jdbc:oracle:thin:@localhost:1521:orcl";
private static String uid = "contractEmps";//schema Name where the table is created
private static String password = <password>;//password for the schema
public static OIMClient getOimClient() {
Hashtable evn = new Hashtable();
evn.put(OIMClient.JAVA_NAMING_FACTORY_INITIAL, OIMInitialContextFactory);
evn.put(OIMClient.JAVA_NAMING_PROVIDER_URL, OIMURL);
System.setProperty("OIM.AppServerType", "wls");
System.setProperty("APPSERVER_TYPE", "wls");
System.setProperty("java.security.auth.login.config",
"C:\\Oracle\\Middleware\\Oracle_IDM1\\server\\config\\authwl.conf");
System.out.println("......client is invoked....");
OIMClient client = new OIMClient(evn);
System.out.println("....Initiating Oim Client.....");
try {
client.login(OIMUserName, OIMPassword.toCharArray());
} catch (LoginException e) {
System.out.println("Error: " + e);
client = null;
}
System.out.println(".......got Oim client successfully......");
System.out.println("Client - " + client);
return client;
}
@Override
public void initialize(HashMap<String, String> arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean cancel(long arg0, long arg1,
AbstractGenericOrchestration arg2) {
// TODO Auto-generated method stub
return false;
}
@Override
public void compensate(long arg0, long arg1,
AbstractGenericOrchestration arg2) {
// TODO Auto-generated method stub
}
@Override
public EventResult execute(long arg0, long arg1, Orchestration arg2) {
HashMap<String, Serializable> parameters = arg2.getParameters();
String userKey = arg2.getTarget().getEntityId();
String userLogin = getParamaterValue(parameters,
UserManagerConstants.AttributeName.USER_LOGIN.getId());
System.out.println(userKey);
String query = "select * from employees where userid ='" + userLogin + "'";
try {
this.connect();
stmt = conn.createStatement();
rset = stmt.executeQuery(query);
String dbUserId = null;
String dbFirstName = null;
String dbLastName = null;
while (rset.next()) {
dbUserId = rset.getString(1);
dbFirstName = rset.getString(2);
dbLastName = rset.getString(3);
}
if (dbUserId.equalsIgnoreCase(userLogin)) {
arg2.addParameter(UserManagerConstants.AttributeName.FIRSTNAME.getId(), dbFirstName);
arg2.addParameter(UserManagerConstants.AttributeName.LASTNAME.getId(), dbLastName);
}
this.disconnect();
} catch (Exception ee) {
ee.printStackTrace();
}
return new EventResult();
}
private Connection connect() {
System.out.println("... Inside Connect....");
System.out.println(" ....URL......" + url);
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println(".....Getting Connection......");
if (conn == null)
conn = DriverManager.getConnection(url, uid, password);
System.out.println(" ....Got Connection......" + conn);
} catch (Exception ee) {
ee.printStackTrace();
}
return conn;
}
private void disconnect() {
System.out.println("... Inside DisConnect....");
try {
if (rset != null)
rset.close();
if (stmt != null)
stmt.close();
if (conn != null)
conn.close();
System.out.println("... Done DisConnect....");
} catch (Exception ee) {
ee.printStackTrace();
}
}
@Override
public BulkEventResult execute(long arg0, long arg1, BulkOrchestration arg2) {
// TODO Auto-generated method stub
return null;
}
private String getParamaterValue(HashMap<String, Serializable> parameters,
String key) {
if (parameters.containsKey(key)) {
String value = (parameters.get(key) instanceof ContextAware) ? (String) ((ContextAware) parameters
.get(key)).getObjectValue() : (String) parameters.get(key);
return value;
} else {
return null;
}
}
}
Comments
Post a Comment