Thursday, August 23, 2012

DFC Code : To export query result into CSV

DFC Code to export query result into CSV

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import com.documentum.com.DfClientX;
import com.documentum.com.IDfClientX;
import com.documentum.fc.client.IDfClient;
import com.documentum.fc.client.IDfCollection;
import com.documentum.fc.client.IDfQuery;
import com.documentum.fc.client.IDfSession;
import com.documentum.fc.client.IDfSessionManager;
import com.documentum.fc.common.DfException;
import com.documentum.fc.common.IDfAttr;
import com.documentum.fc.common.IDfLoginInfo;
public class PrintQueryResult {
 public static void main(String[] args) {
  // ********************CHECK THE DFC PROPERTY*********************//
  IDfSession session = null;
  // ***********************CHANGE THE LOGING INFO**********************//
  session = getSessionByIdentity("dmadmin", "password","repositoryName", "server", "port");
  // ***********************CHANGE THE QUERY**********************//
  String sQuery = "select * from dm_document";
  // **CHANGE THE LOCATION OF QUERY RESULTS*****************//
  String fileLocation = "C:\\Log\\Test\\";
  String fileName =  "dm_document";
  performQuery(sQuery, fileLocation+ fileName, session);
 }
 private static void performQuery(String sQuery, String fileName,
   IDfSession session) {
  IDfCollection recordCollection;
  try {
   System.out.println("Started");
   IDfClientX myClientx = new DfClientX();
   IDfQuery q = myClientx.getQuery(); // Create query object
   q.setDQL(sQuery); // Give it the query
   recordCollection = q.execute(session, IDfQuery.DF_READ_QUERY); // execute
                   // the
                   // query
   displayResultsInCsv(recordCollection, fileName + ".csv");
   recordCollection.close();
   System.out.println("Finished");
  } catch (Throwable e) {
   if (e instanceof DfException) {
    System.out.println("DFC Exception:");
    String s = ((DfException) e).getStackTraceAsString();
    System.out.println(s);
   } else {
    System.out.println("Non-DFC Exception ");
    e.printStackTrace();
   }
  } // end: catch()
  finally {
   if (session != null)
    session.getSessionManager().release(session);
  }
 }
 // Step through a collection and display results
 public static void displayResultsInCsv(IDfCollection col, String fileName)
   throws DfException, IOException {
  FileWriter fileWriter = new FileWriter(fileName);
  PrintWriter printWriter = new PrintWriter(fileWriter);
  boolean isHeaderPrinted = false;
  while (col.next()) {
   StringBuffer resultLine = new StringBuffer();
   StringBuffer headerCsv = new StringBuffer();// row num
   for (int i = 0; i < col.getAttrCount(); i++) { // For attribute
    IDfAttr attrib = col.getAttr(i); // factory method for
    // Once Header is Printed, No need to append as header is
    // printed once
    if (!isHeaderPrinted) {
     headerCsv.append(attrib.getName());
     headerCsv.append(",");
    }
    // System.out.print( "\t" + attr.getName() + ": " ); // Display
    if (attrib.getDataType() == IDfAttr.DM_BOOLEAN) { // Display
                 // value
     resultLine.append(col.getBoolean(attrib.getName()));
     resultLine.append(",");
    } else if (attrib.getDataType() == IDfAttr.DM_DOUBLE) {
     resultLine.append(col.getDouble(attrib.getName()));
     resultLine.append(",");
    } else if (attrib.getDataType() == IDfAttr.DM_ID) {
     resultLine.append(col.getId(attrib.getName()));
     resultLine.append(",");
    } else if (attrib.getDataType() == IDfAttr.DM_INTEGER) {
     resultLine.append(col.getInt(attrib.getName()));
     resultLine.append(",");
    } else if (attrib.getDataType() == IDfAttr.DM_STRING) {
     String str = col.getString(attrib.getName());
     resultLine.append(str.replaceAll(",", " "));
     resultLine.append(",");
    } else if (attrib.getDataType() == IDfAttr.DM_TIME) {
     resultLine.append(col.getTime(attrib.getName()));
     resultLine.append(",");
    } else { // Unknown type
     System.out.println("Unknown type:" + attrib.getDataType());
    }
   }
   // Print the header only for the first Time
   if (!isHeaderPrinted) {
    printWriter.println(headerCsv);
    isHeaderPrinted = true;
   }
   printWriter.println(resultLine);
  }
  // Flush the output to the file
  printWriter.flush();
  // Close the Print Writer
  printWriter.close();
  // Close the File Writer
  fileWriter.close();
 }
 public static IDfSession getSessionByIdentity(String username,
   String password, String repoName, String primary_host,
   String primary_port) {
  IDfSession sess = null;

  try {
   IDfClientX clientX = new DfClientX();
   IDfClient localClient = clientX.getLocalClient();
   IDfSessionManager sessMgr = localClient.newSessionManager();
   localClient.getClientConfig().setString("primary_host", primary_host);
   localClient.getClientConfig().setString("primary_port", primary_port);
   IDfLoginInfo li = clientX.getLoginInfo();
   li.setUser(username);
   li.setPassword(password);
   if (sessMgr.hasIdentity(repoName)) {
    sessMgr.clearIdentity(repoName);
   }
   sessMgr.setIdentity(repoName, li);
   sess = sessMgr.getSession(repoName);
  } catch (Exception ex) {
   ex.printStackTrace();
  }
  return sess;
 }
}

2 comments:

  1. This article offers a great understanding of the subject. The content is informative and well researched. Appreciate your dedication to providing value.microsoft devops course

    ReplyDelete
  2. iOS app development training helps learners master the concepts required to create feature-rich applications for Apple devices. This ios app development training covers app design, coding practices, testing, and deployment techniques. Students work on real-time projects to strengthen their technical skills. The training prepares learners for professional iOS careers.

    ReplyDelete

Total Pageviews