Hi,

Just a mini-post concerning an utility class to communicate with DCTM DCTMUtil:

package com.huo.lu.db.extract.dctm;

import java.io.IOException;

import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.log4j.Logger;

import com.documentum.com.DfClientX;
import com.documentum.com.IDfClientX;
import com.documentum.fc.client.DfClient;
import com.documentum.fc.client.DfQuery;
import com.documentum.fc.client.IDfClient;
import com.documentum.fc.client.IDfQuery;
import com.documentum.fc.client.IDfSession;
import com.documentum.fc.client.IDfSessionManager;
import com.documentum.fc.client.IDfType;
import com.documentum.fc.client.IDfTypedObject;
import com.documentum.fc.client.IDfValidator;
import com.documentum.fc.client.IDfValueAssistance;
import com.documentum.fc.common.DfException;
import com.documentum.fc.common.DfLoginInfo;
import com.documentum.fc.common.IDfList;
import com.documentum.fc.common.IDfLoginInfo;

/**
 * Utility class to communicate with DCTM
 */
public class DCTMUtil {
	// logger
	private static Logger LOG = Logger.getLogger(DCTMUtil.class);
	
	public DCTMUtil(){}

	/**
	 * Connect to Documentum docbase
	 * @param userName : User to connect
	 * @param passWd : password
	 * @return
	 * @throws DfException
	 */
	public IDfSessionManager connectToDocumentum(String dfcPrimaryHost, String dfcPrimaryPort, 
			String dfcGlobalRegistryRepository,
			String dfcGlobalRegistryUsername,
			String dfcGlobalRegistryPassword,
			String dfcSessionSecureConnectDefault,
			String userName, String passWd) throws DfException {
		
		IDfClientX cx = new DfClientX();
		LOG.info("Get DfClient : " + dfcPrimaryHost+ ":" + dfcPrimaryPort +"...");
		IDfClient client = cx.getLocalClient();
		LOG.info("Get DfClient : " + dfcPrimaryHost+ ":" + dfcPrimaryPort + " : done");

		// dfc.properties
		LOG.info("Get DfClientConfig : " + dfcPrimaryHost+ ":" + dfcPrimaryPort +"...");
		IDfTypedObject cfg = client.getClientConfig();
		LOG.info("Get DfClientConfig : " + dfcPrimaryHost+ ":" + dfcPrimaryPort + " : done");
		LOG.info("Set DfClientConfig.primary_host=" + dfcPrimaryHost);
		cfg.setString("primary_host", dfcPrimaryHost);
		LOG.info("Set DfClientConfig.primary_port=" + dfcPrimaryPort);
		cfg.setString("primary_port", dfcPrimaryPort);
		LOG.info("Set DfClientConfig.dfc.globalregistry.repository=" + dfcGlobalRegistryRepository);
		cfg.setString("dfc.globalregistry.repository", dfcGlobalRegistryRepository);
		LOG.info("Set DfClientConfig.dfc.globalregistry.username=" + dfcGlobalRegistryUsername);
		cfg.setString("dfc.globalregistry.username", dfcGlobalRegistryUsername);
		LOG.info("Set DfClientConfig.dfc.globalregistry.password=" + dfcGlobalRegistryPassword);
		cfg.setString("dfc.globalregistry.password", dfcGlobalRegistryPassword);
		LOG.info("Set DfClientConfig.dfc.session.secure_connect_default=" + dfcSessionSecureConnectDefault);
		cfg.setString("dfc.session.secure_connect_default", dfcSessionSecureConnectDefault);

		// documentum session manager
		LOG.info("Get SessionManager : " + dfcPrimaryHost+ ":" + dfcPrimaryPort +"...");
		IDfSessionManager sessionMgr = client.newSessionManager();
		LOG.info("Get SessionManager : " + dfcPrimaryHost+ ":" + dfcPrimaryPort + " : done");
		//sessionMgr.setLocale("fr");
		//sessionMgr.setIdentity(docbaseName, login);
		//
		// Setup login details.
		IDfLoginInfo login = new DfLoginInfo();
		login.setUser(userName);
		login.setPassword(passWd);
		//login.setDomain(null);
		//
		LOG.info("Get SessionManager.setIdentity(ALL_DOCBASES) : " + dfcPrimaryHost+ ":" + dfcPrimaryPort +" / " + userName +"...");
		sessionMgr.setIdentity(IDfSessionManager.ALL_DOCBASES, login);
		
		return sessionMgr;
	}

	/**
	 * Disconnect from documentum docbase
	 */
	public void disconnect(IDfSessionManager sessionMgr, IDfSession session) {
		if (session!=null && sessionMgr!=null) {
			LOG.info("[disconnect] Closing session ...");
			sessionMgr.release(session);
			LOG.info("[disconnect] Session closed");
			LOG.info("[disconnect] SessionMgr clearing identities ...");
			sessionMgr.clearIdentities();
			LOG.info("[disconnect] SessionMgr clear identities done");
		}
	}
	
	/**
	 * Execute une requête DQL et retourne son résultat.
	 * 
	 * @throws DfException
	 * @throws IOException
	 */
	public IDfTypedObject runDQLQuery(IDfSession session, String dqlQuery) throws Throwable {
		LOG.info("Starting runDQLQuery : "+ dqlQuery);
		IDfTypedObject objectToReturn = null;
		
		try {
			IDfQuery query = new DfQuery();
			query.setDQL(dqlQuery);
			objectToReturn = query.execute(session, IDfQuery.DF_READ_QUERY);
		} catch (Throwable th) {
			LOG.fatal("ERROR: " + ExceptionUtils.getFullStackTrace(th));
			throw th;
		}
		LOG.info("Exiting runDQLQuery : " + dqlQuery);
		return objectToReturn;
	}
	
	public String getValueMapping(IDfType type, String attrName, String attrValue) throws DfException {
		String display = attrValue;
		IDfValidator validator = type.getTypeValidator(null, "");
		IDfValueAssistance va = validator.getValueAssistance(attrName, null);
		if (va != null) {
			IDfList list = va.getActualValues();
			for (int i = 0; i < list.getCount(); i++) {
				String value = list.getString(i);
				if (value.equals(display)) {
					if (LOG.isDebugEnabled())
						LOG.info("Value: "+value);
					display = va.getDisplayValue(value);
					if (LOG.isDebugEnabled())
						LOG.info("Display: "+display);
					break;
				}
			}
		}
		return display.replace(" - ", "_");
	}

	/**
	 * Affiche les informations de connection
	 */
	public void getSessionInfo(IDfSession session) throws Throwable {
		try {
			LOG.info("");
			LOG.info("DM Session Properties: ");
			LOG.info("DM Server Version: " + session.getServerVersion());
			LOG.info("DM Session ID:     " + session.getSessionId());
			LOG.info("DFC Version:       " + DfClient.getDFCVersion());
			LOG.info("");
		} catch (Throwable th) {
			LOG.error("[getSessionInfo] Unable to retrieve DM server info: " + ExceptionUtils.getFullStackTrace(th));
			throw th;
		}
	}

}

That’s all!!!!

Huseyin OZVEREN