Pre Process Event Handler For Overriding the values with DB values while creating the user in OIM


PreProcess Event Handler for overriding the data with database values while creating a 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

Popular posts from this blog

Grant Entitlements To User Using API

CREATING USER BY USING DYNAMIC VALUES

list of accounts of a specific login id