Code - nsbassi/eln-docs GitHub Wiki

package insight;

import insight.common.P6Helper;
import insight.common.UpdateUDFValue;
import insight.common.logging.JLogger;

import java.sql.ResultSet;
import java.util.Date;
import java.util.logging.Logger;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import com.primavera.ServerException;
import com.primavera.common.value.ObjectId;
import com.primavera.integration.client.EnterpriseLoadManager;
import com.primavera.integration.client.Session;
import com.primavera.integration.client.bo.BOIterator;
import com.primavera.integration.client.bo.BusinessObjectException;
import com.primavera.integration.client.bo.enm.ResourceType;
import com.primavera.integration.client.bo.object.Resource;
import com.primavera.integration.client.bo.object.User;
import com.primavera.integration.network.NetworkException;

public class SchedulerJob implements Job{
	static Session session = null;
	public static Logger logger = JLogger.getLogger(SchedulerJob.class.getName());

	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		int i = 1;
		try {
			ResultSet rs = null;
			logger.info("Start time : " + new Date());
			P6Helper helper = new P6Helper();
			logger.info("Connecting with database..");
			session = helper.getSession(logger);
			logger.info("Connected with the db : " + session.getDatabaseName());

			rs = helper.getEmployeeData("emp_master.[dbo].[EPMResourcePool]");
			while (rs.next()) {
				logger.info("Iterating result set for row no ===========> "+i);
				System.out.println("Iterating result set for row no ===========> "+i);
				//iterateResultSet(rs);
				logger.info("");
				i++;
			}
		} catch (Exception e) {
			logger.info("Exception : " + e);
			e.printStackTrace();
		} finally {
			logger.info("Resource creation/updation process completed for ["+i+"] resources.");
			session.logout();
			logger.info("Session closed..!!");
		}
	}

	private static void iterateResultSet(ResultSet rs) throws Exception {
		// String empType = rs.getString(1);
		String function = rs.getString(2);
		String pdgCode = rs.getString(3);
		String pdg = rs.getString(4);
		String departmentCode = rs.getString(5);
		String department = rs.getString(6);
		String designationCode = rs.getString(7);
		String designation = rs.getString(8);
		String employeeCode = rs.getString(9);
		String resourceName = rs.getString(10);
		String resourceId = rs.getString(11);
		String email = rs.getString(12);
		String category = rs.getString(13);
		// String winAuth = rs.getString(14);
		boolean isActive = rs.getBoolean(15);
		String skills = rs.getString(16);
		String parentObject = rs.getString(17);
		String resType = rs.getString(18);
		// String FT_2 = rs.getString(19);
		// String FT_3 = rs.getString(20);
		// String availFrom = rs.getString(21);
		// String availTo = rs.getString(22);
		// String maxUnits = rs.getString(23);
		// String stdRate = rs.getString(24);
		String locCode = rs.getString(25);
		String locationName = rs.getString(26);

		if (resourceId != null && resourceId.length() > 0) {
			ObjectId parentObjId = null;
			EnterpriseLoadManager elm = session.getEnterpriseLoadManager();
			logger.info("Reporting hierarchy for the resource "+resourceName+"["+employeeCode+"] is ["+parentObject+"]");
			logger.info("Searcing parent object id ..");
			parentObjId = getParentObjId(elm, resType, parentObject);
			logger.info("Parent object id is : " + parentObjId);
			logger.info("Searching resource [" + resourceId + "] in p6..");
			Resource res = loadResource(elm, resourceId);
			if (res != null) {
				logger.info("Resource already exist, updating resource..");
				updateResource(elm, res, employeeCode, resourceName, email, isActive, resType, parentObjId, resourceId);
				logger.info("Resource updated...");
			} else {
				logger.info("Resource not found, creating new resource..");
				createResource(elm, employeeCode, resourceName, email, resType, parentObjId, resourceId);
				res = loadResource(elm, resourceId);
				logger.info("New resource created...");
			}
			logger.info("Now updating the related UDF's for the resource : "+ res.getName());
			updateResourceUDF(res, function, pdgCode, pdg, departmentCode,
					department, designationCode, designation, category, skills,locCode, locationName);
			logger.info("All udf's updated..!!");
		}
	}

	private static Resource loadResource(EnterpriseLoadManager elm,
			String resourceId) throws BusinessObjectException, ServerException,
			NetworkException {
		BOIterator<Resource> boI = elm.loadResources(Resource.getAllFields(), "Id = '" + resourceId + "'", null);
		if (boI.hasNext())
			return boI.next();
		else
			return null;
	}

	private static ObjectId getParentObjId(EnterpriseLoadManager elm,
			String resType, String parentObject)
			throws BusinessObjectException, ServerException, NetworkException {
		
		Resource parentRes = null;
		if (resType.equals("Machine")) {
			parentObject = "Machines";
		}else if(resType.equals("Material")){
			parentObject = "Material";
		} else if (parentObject != null && parentObject.contains(".")) {
			String[] parentObjectList = parentObject.replace(".", ";").split(";");
			if (parentObjectList.length > 1) {
				parentObject = parentObjectList[parentObjectList.length - 2];
			}
		}
		if (parentObject != null) {
			parentRes = loadResource(elm, parentObject);
			if (parentRes != null) {
				return parentRes.getObjectId();
			} else {
				parentRes = loadResource(elm, "Torrent Pharma");
				return parentRes.getObjectId();
			}
		} else {
			parentRes = loadResource(elm, "Torrent Pharma");
			return parentRes.getObjectId();
		}
	}

	private static ObjectId updateResource(EnterpriseLoadManager elm,
			Resource res, String employeeCode, String resourceName,
			String email, Boolean isActive, String resType,
			ObjectId parentObjId, String resourceId)
			throws BusinessObjectException, ServerException, NetworkException {

		res.setName(resourceName);
		res.setIsActive(true);
		
		if (parentObjId != null)
			res.setParentObjectId(parentObjId);

		BOIterator<User> boUserIttr = elm.loadUsers( new String[] { "ObjectId" }, "Name = '" + resourceId + "'", null);
		if (boUserIttr.hasNext()) {
			User user = boUserIttr.next();
			res.setUserObjectId(user.getObjectId());
		}

		if (resType.equals("Human"))
			res.setResourceType(ResourceType.LABOR);
		else if (resType.equals("Machine"))
			res.setResourceType(ResourceType.NONLABOR);
		else
			res.setResourceType(ResourceType.MATERIAL);

		res.update();
		return res.getObjectId();
	}

	private static ObjectId createResource(EnterpriseLoadManager elm,
			String employeeCode, String resourceName, String email,
			String resType, ObjectId parentObjectID, String resourceId)
			throws BusinessObjectException, ServerException, NetworkException {
		Resource res = new Resource(session);
		res.setId(resourceId);
		res.setName(resourceName);
		res.setIsActive(true);
		res.setEmailAddress(email);
		res.setEmployeeId(employeeCode);

		if (parentObjectID != null)
			res.setParentObjectId(parentObjectID);

		if (resType.equals("Human"))
			res.setResourceType(ResourceType.LABOR);
		else if (resType.equals("Machine"))
			res.setResourceType(ResourceType.NONLABOR);
		else
			res.setResourceType(ResourceType.MATERIAL);

		BOIterator<User> boUserIttr = elm.loadUsers(
				new String[] { "ObjectId" }, "Name = '" + resourceId + "'",
				null);
		if (boUserIttr.hasNext()) {
			User user = boUserIttr.next();
			res.setUserObjectId(user.getObjectId());
		}
		ObjectId objIdNew = res.create();
		return objIdNew;
	}

	private static void updateResourceUDF(Resource res, String function,
			String pdgCode, String pdg, String departmentCode,
			String department, String designationCode, String designation,
			String category, String skills, String locCode, String locationName)
			throws Exception {

		UpdateUDFValue update = new UpdateUDFValue();
		String[] udfArray = { "Function", "PDGCode", "PDG", "DepartmentCode",
				"Department", "DesignationCode", "Designation", "Category",
				"Skills", "LocationCode", "LocationName" };
		String[] valArray = { function, pdgCode, pdg, departmentCode,
				department, designationCode, designation, category, skills,
				locCode, locationName };

		for (int i = 0; i < valArray.length; i++) {
			if (valArray[i] != null && valArray[i].length() > 0)
				update.setUDFValue(session, res, udfArray[i], valArray[i],
						logger);
		}

	}

}

⚠️ **GitHub.com Fallback** ⚠️