Updating a Document created by the DocumentManagementService

The following example scenario shows how to update a document that was created using the createDocument() method of the DocumentManagementService. In this example we pass the updated byte[] of the same document.

The sample code looks like the following:

package com.sungard.bootcamp.client;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.stardust.engine.api.runtime.DmsUtils;
import org.eclipse.stardust.engine.api.runtime.Document;
import org.eclipse.stardust.engine.api.runtime.DocumentInfo;
import org.eclipse.stardust.engine.api.runtime.DocumentManagementService;
import org.eclipse.stardust.engine.api.runtime.ServiceFactory;
import org.eclipse.stardust.engine.api.runtime.ServiceFactoryLocator;
public class DMSClient {
public static void main(String[] args) {
 
   // Obtain a reference to the ServiceFactory
   ServiceFactory sf = getServiceFactory(null, null, null, "motu", "motu");
   DocumentManagementService dms = sf.getDocumentManagementService();
   Document doc = createDoc(dms, new File("D:/SampleFile1.txt"));
    
   System.out.println("Id of CREATED Document is : " + (doc).getId());
   System.out.println("Description from CREATED Document : " + doc.getDescription()); 
   System.out.println("Content of CREATED Document : " + new String (dms.retrieveDocumentContent(doc.getId())));
   System.out.println("======================================================");
    
   Document updatedDoc = updateDoc(dms, doc);
   System.out.println("Id of UPDATED Document is : "+ (updatedDoc).getId()); 
   System.out.println("======================================================");
    
   Document fetchedDocument = dms.getDocument(updatedDoc.getId());
   System.out.println("Id of Fetched Document is : " + fetchedDocument.getId());
   System.out.println("Description from Fetched Document : "+ fetchedDocument.getDescription()); 
   System.out.println("Contents of UPDATED/Fetched Document : " + 
      new String (dms.retrieveDocumentContent(fetchedDocument.getId())));
}
 
private static Document createDoc(DocumentManagementService dms, File file) {
   DocumentInfo documentInfo = constructDocInfo(file);
   try {
      byte[] documentContent = FileUploadUtils.getBytesFromFile(file); 
      return (dms.createDocument("/", documentInfo, documentContent, null));
   } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }
   return null;
}
 
private static Document updateDoc(DocumentManagementService dms, Document doc) {
   doc.setDescription("This is the UPDATED Description of the document");
   return (dms.updateDocument(doc, readFileContent(), "UTF-8", true,"TOBEREVISED", false));
}
 
private static DocumentInfo constructDocInfo(File file) {
   DocumentInfo documentInfo = DmsUtils.createDocumentInfo(file.getName());
   documentInfo.setContentType("text/plain");
   documentInfo.setDescription("This is a txt document.");
   return documentInfo;
}
 
 
// Return ServiceFactory
private static ServiceFactory getServiceFactory(String partition,String domain, String realm, String user, String password) {
   Map properties = new HashMap();
   properties.put(SecurityProperties.PARTITION, partition);
   properties.put(SecurityProperties.DOMAIN, domain);
   properties.put(SecurityProperties.REALM, realm);
   return ServiceFactoryLocator.get(user, password, properties);
}
 
private static byte[] readFileContent() {
   byte[] bytes = null;
   try {
      File file = new File("D:/SampleFile1.txt");
      // File length
      int size = (int) file.length();
      if (size > Integer.MAX_VALUE) {
         System.out.println("File is to larger");
      }
      bytes = new byte[size];
      DataInputStream dis = new DataInputStream(new FileInputStream(file));
      int read = 0;
      int numRead = 0;
      while (read < bytes.length&& (numRead = dis.read(bytes, read, bytes.length - read)) >= 0) {
         read = read + numRead;
      } 
      // Ensure all the bytes have been read in
      if (read < bytes.length) {
         System.out.println("Could not completely read: "+ file.getName());
      }
   } catch (Exception e) {
      e.getMessage();
   }
   return bytes;
}

The following API is used in this example:

Example Output

The output of the above program would look like the following:

Id of CREATED Document is : {jcrUuid}cbe663c6-c6fb-432b-a260-b6c4d18e597a
Description from CREATED Document : This is a txt document.
Content of CREATED Document : These are the contents of Sample File1.
======================================================
Id of UPDATED Document is : {jcrUuid}cbe663c6-c6fb-432b-a260-b6c4d18e597a
======================================================
Id of Fetched Document is : {jcrUuid}cbe663c6-c6fb-432b-a260-b6c4d18e597a
Description from Fetched Document : This is the UPDATED Description of the document
Contents of UPDATED/Fetched Document : These are the contents of Sample File1.