Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.arisant.oim.ad.groups;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import javax.security.auth.login.LoginException;
- import Thor.API.tcResultSet;
- import Thor.API.Exceptions.tcAPIException;
- import Thor.API.Exceptions.tcColumnNotFoundException;
- import Thor.API.Exceptions.tcFormNotFoundException;
- import Thor.API.Exceptions.tcInvalidValueException;
- import Thor.API.Exceptions.tcNotAtomicProcessException;
- import Thor.API.Exceptions.tcProcessNotFoundException;
- import Thor.API.Exceptions.tcRequiredDataMissingException;
- import Thor.API.Exceptions.tcVersionNotDefinedException;
- import Thor.API.Operations.tcFormInstanceOperationsIntf;
- import com.arisant.identity.oim.APIManager;
- import com.arisant.identity.oim.LocalOIMClientManager;
- import com.arisant.identity.oim.LocalOIMClientManager.Environments;
- import com.thortech.xl.dataaccess.tcDataProvider;
- import com.thortech.xl.dataaccess.tcDataSet;
- import com.thortech.xl.dataaccess.tcDataSetException;
- public class GroupMembershipProcessor {
- public String determineAndAddGroups(String siteCode, String empType,
- Long processInstanceKey) {
- List<String> groups;
- try {
- groups = getGroups(siteCode, empType);
- } catch (tcDataSetException e) {
- // TODO Log error instead of print stack trace
- e.printStackTrace();
- return "GET_GROUPS_ERROR";
- }
- try {
- addGroups(groups, processInstanceKey);
- } catch (tcProcessNotFoundException e) {
- return "PROCESS_NOT_FOUND";
- } catch (Exception e) {
- // TODO Log error instead of print stack trace
- e.printStackTrace();
- return "ADD_GROUPS_ERROR";
- }
- return "SUCCESS";
- }
- private void addGroups(List<String> groups, Long processInstanceKey)
- throws tcAPIException, tcProcessNotFoundException,
- tcFormNotFoundException, tcVersionNotDefinedException,
- tcColumnNotFoundException, tcRequiredDataMissingException,
- tcInvalidValueException, tcNotAtomicProcessException {
- // Local load for OIMClient
- tcFormInstanceOperationsIntf formInstanceIntf = APIManager.getService(tcFormInstanceOperationsIntf.class);
- // Remote load for OIMClient
- // tcFormInstanceOperationsIntf formInstanceIntf =
- // oimClient.getService(tcFormInstanceOperationsIntf.class);
- // Retrieve process form definition key
- long processDefKey = 0;
- processDefKey = formInstanceIntf.getProcessFormDefinitionKey(processInstanceKey);
- // Retrieving the process form active version
- int formActiveVersion = 0;
- formActiveVersion = formInstanceIntf.getActiveVersion(processDefKey);
- // Retrieving the Process Form Child Definition Key
- String childFormName = "UD_ADUSRC";
- tcResultSet childTrsDef = null;
- childTrsDef = formInstanceIntf.getChildFormDefinition(processDefKey, formActiveVersion);
- int childCount = 0;
- try {
- childCount = childTrsDef.getRowCount();
- } catch (tcAPIException e) {
- e.printStackTrace();
- }
- long childDefKey = -1;
- for (int i = 0; i < childCount; i++) {
- // Retreiving the Child Table Name and Child Table Definition Key
- try {
- childTrsDef.goToRow(i);
- } catch (tcAPIException e) {
- e.printStackTrace();
- }
- String tableName = null;
- tableName = childTrsDef.getStringValue("Structure Utility.Table Name");
- childDefKey = childTrsDef.getLongValue("Structure Utility.Child Tables.Child Key");
- if (tableName.equalsIgnoreCase(childFormName)) {
- break;
- }
- }
- String childColumnName = "UD_ADUSRC_GROUPNAME";
- Map<String, String> childData = new HashMap<String, String>();
- for (String group : groups) {
- try {
- System.out.println("Adding group to child data: " + group);
- childData.put(childColumnName, group);
- formInstanceIntf.addProcessFormChildData(childDefKey, processInstanceKey, childData);
- } catch (tcAPIException e) {
- if (e.getMessage().contains("The entered form data already exists.")) {
- // group already exists. Great! Do nothing!
- } else {
- throw e;
- }
- }
- }
- }
- public List<String> getGroups(String siteCode, String empType)
- throws tcDataSetException {
- tcDataProvider dbProvider = null; // OIM Schema Database Client
- List<String> groups = new ArrayList<String>();
- dbProvider = APIManager.getDb();
- String effectiveSite = siteCode;
- SiteProcessor sp = new SiteProcessor();
- SiteOverride override = sp.lookupSiteCodeOverride(siteCode, empType);
- if (override != null) {
- effectiveSite = override.getOverrideSiteCode();// override.getSite
- // in your code
- if (override.getUserGroup() != null) {
- String overrideGroup = getOverrideGroup(dbProvider, effectiveSite, override.getUserGroup());// override
- // group
- // in
- // your
- // code
- if (overrideGroup != null && overrideGroup.length() > 0) {
- groups.add(overrideGroup);
- }
- }
- }
- String siteGroup = getDefaultGroup(dbProvider, effectiveSite, empType);
- if (siteGroup != null && siteGroup.length() > 0) {
- groups.add(siteGroup);
- }
- return groups;
- }
- private String getDefaultGroup(tcDataProvider dbProvider, String siteCode,
- String empType) throws tcDataSetException {
- String decodedEmpType = decodeEmpType(empType);
- String defaultGroup = null;
- String standardQuery = "select * from lku l "
- + "join lkv v on v.lku_key = l.lku_key "
- + "where l.LKU_TYPE_STRING_KEY ='Lookup.ActiveDirectory.Groups'"
- + "and upper(v.LKV_DECODED) like upper('%" + siteCode + "-"
- + decodedEmpType + "%') "
- + "and upper(v.LKV_DECODED) like upper('%OU=" + siteCode
- + "%') " + "and upper(v.LKV_ENCODED) like upper('183~CN=GG-%')";
- tcDataSet usersDataSetTwo = new tcDataSet(); // store result set of
- // query
- usersDataSetTwo.setQuery(dbProvider, standardQuery);
- usersDataSetTwo.executeQuery();
- defaultGroup = usersDataSetTwo.getString("LKV_ENCODED");
- System.out.println("Default group determined as: " + defaultGroup);
- return defaultGroup;
- }
- private String decodeEmpType(String empType) {
- String decodedEmpType = "Staff";
- if (empType.compareTo("C") == 0) {
- decodedEmpType = "Teacher";
- }
- return decodedEmpType;
- }
- private String getOverrideGroup(tcDataProvider dbProvider,
- String siteOverride, String group) throws tcDataSetException {
- String overrideGroup;
- String overrideQuery = "select * from lku l "
- + "join lkv v on v.lku_key = l.lku_key "
- + "where l.LKU_TYPE_STRING_KEY ='Lookup.ActiveDirectory.Groups'"
- + "and upper(v.LKV_DECODED) like upper('%" + group + "%') "
- + "and upper(v.LKV_DECODED) like upper('%OU=" + siteOverride
- + "%') " + "and upper(v.LKV_ENCODED) like upper('183~CN=GG-%')";
- tcDataSet usersDataSet = new tcDataSet(); // store result set of query
- usersDataSet.setQuery(dbProvider, overrideQuery);
- usersDataSet.executeQuery();
- overrideGroup = usersDataSet.getString("LKV_ENCODED");
- System.out.println("Override group determined as: " + overrideGroup);
- return overrideGroup;
- }
- /*public static void main(String[] args) {
- try {
- LocalOIMClientManager mgr = new LocalOIMClientManager(Environments.CCSD_OIM_Dev);
- APIManager.setClient(mgr.getNewOIMClientInstance());
- GroupMembershipProcessor gmp = new GroupMembershipProcessor();
- // List<String> groups = gmp.getGroups("0001", "F");
- // System.out.println("Returned " + groups.size() + " group(s).");
- //
- // for (String string : groups) {
- // System.out.println("Group: " + string);
- // }
- String result = gmp.determineAndAddGroups("0001", "F", 184072L);
- System.out.println("Return Value = " + result);
- } catch (LoginException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement