Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Stardust/Knowledge Base/Java API/Document Management"
m |
m (Indentation) |
||
Line 158: | Line 158: | ||
| | ||
− | == '''Create a new version''' == | + | == '''Create a new version''' == |
==== Scenario: Sample code to update a document (to create a new version) and then retrieving all the versions of the document ==== | ==== Scenario: Sample code to update a document (to create a new version) and then retrieving all the versions of the document ==== | ||
Line 174: | Line 174: | ||
import ag.carnot.workflow.runtime.DocumentManagementService; | import ag.carnot.workflow.runtime.DocumentManagementService; | ||
import ag.carnot.workflow.runtime.ServiceFactory; | import ag.carnot.workflow.runtime.ServiceFactory; | ||
− | import ag.carnot.workflow.runtime.ServiceFactoryLocator; | + | import ag.carnot.workflow.runtime.ServiceFactoryLocator; |
+ | public class DMSClient{ | ||
public static void main(String[] args) { | public static void main(String[] args) { | ||
// Obtain a reference to the ServiceFactory | // Obtain a reference to the ServiceFactory | ||
Line 185: | Line 186: | ||
dms.versionDocument(doc.getId(), "0"); | dms.versionDocument(doc.getId(), "0"); | ||
System.out.println("======================================================"); | System.out.println("======================================================"); | ||
− | |||
− | |||
− | |||
//update the document | //update the document | ||
Document updatedDoc = updateDoc(dms, doc,"D:/UpdatedContentFile.txt","UPDATED Description"); | Document updatedDoc = updateDoc(dms, doc,"D:/UpdatedContentFile.txt","UPDATED Description"); | ||
System.out.println("Id of UPDATED Document is : "+ (updatedDoc).getId()); | System.out.println("Id of UPDATED Document is : "+ (updatedDoc).getId()); | ||
− | |||
− | |||
− | |||
//fetch the updated document to display the details of the document | //fetch the updated document to display the details of the document | ||
Document fetchedDocument = dms.getDocument(updatedDoc.getId()); | Document fetchedDocument = dms.getDocument(updatedDoc.getId()); | ||
Line 200: | Line 195: | ||
System.out.println("Description from Fetched Document : "+ fetchedDocument.getDescription()); | System.out.println("Description from Fetched Document : "+ fetchedDocument.getDescription()); | ||
System.out.println("#######################################################"); | System.out.println("#######################################################"); | ||
− | |||
− | |||
− | |||
//update the document again -- to create sufficient document revisions | //update the document again -- to create sufficient document revisions | ||
Document updatedDoc2 = updateDoc(dms, doc,"D:/UpdatedContentFile2.txt","Again Updated Description"); | Document updatedDoc2 = updateDoc(dms, doc,"D:/UpdatedContentFile2.txt","Again Updated Description"); | ||
System.out.println("Id of UPDATED Document is : "+ (updatedDoc2).getId()); | System.out.println("Id of UPDATED Document is : "+ (updatedDoc2).getId()); | ||
− | |||
− | |||
Document fetchedDocument2 = dms.getDocument(updatedDoc2.getId()); | Document fetchedDocument2 = dms.getDocument(updatedDoc2.getId()); | ||
System.out.println("Contents of UPDATED/Fetched Document : " + new String ( | System.out.println("Contents of UPDATED/Fetched Document : " + new String ( | ||
dms.retrieveDocumentContent(fetchedDocument2.getRevisionId()))); | dms.retrieveDocumentContent(fetchedDocument2.getRevisionId()))); | ||
− | System.out.println("Description from Fetched Document : "+ fetchedDocument2.getDescription()); | + | System.out.println("Description from Fetched Document : "+ fetchedDocument2.getDescription()); |
− | + | ||
− | + | ||
− | + | ||
List <Document> docVersions= dms.getDocumentVersions(fetchedDocument.getId()); | List <Document> docVersions= dms.getDocumentVersions(fetchedDocument.getId()); | ||
if(docVersions!= null){ | if(docVersions!= null){ | ||
int size = docVersions.size(); | int size = docVersions.size(); | ||
System.out.println("Number of Document Versions :: "+size); | System.out.println("Number of Document Versions :: "+size); | ||
− | |||
− | |||
− | |||
− | |||
for(int i=0;i<size;i++ ){ | for(int i=0;i<size;i++ ){ | ||
System.out.println("------------Below are the Document Versions' Details--------------"); | System.out.println("------------Below are the Document Versions' Details--------------"); | ||
Line 229: | Line 212: | ||
System.out.println("Revision Name :: "+document.getRevisionName()); | System.out.println("Revision Name :: "+document.getRevisionName()); | ||
System.out.println("Description :: "+document.getDescription()); | System.out.println("Description :: "+document.getDescription()); | ||
− | System.out.println("Document Contents :: " +new String(dms.retrieveDocumentContent( | + | System.out.println("Document Contents :: " +new String( |
− | document.getRevisionId()))); | + | dms.retrieveDocumentContent(document.getRevisionId()))); |
− | + | ||
} | } | ||
} | } | ||
} | } | ||
− | |||
− | |||
private static Document createDoc(DocumentManagementService dms, File file) { | private static Document createDoc(DocumentManagementService dms, File file) { | ||
− | |||
DocumentInfo documentInfo = constructDocInfo(file); | DocumentInfo documentInfo = constructDocInfo(file); | ||
try { | try { | ||
Line 250: | Line 229: | ||
} | } | ||
return null; | return null; | ||
+ | } | ||
− | + | private static Document updateDoc(DocumentManagementService dms,Document doc, String fileName, String description) { | |
doc.setDescription(description); | doc.setDescription(description); | ||
System.out.println("Calling updateDocument() with updated Contents and Description for Document '"+fileName +"'"); | System.out.println("Calling updateDocument() with updated Contents and Description for Document '"+fileName +"'"); | ||
return (dms.updateDocument(doc, readFileContent(fileName), "UTF-8", true,"TOBEREVISED", false)); | return (dms.updateDocument(doc, readFileContent(fileName), "UTF-8", true,"TOBEREVISED", false)); | ||
− | } | + | } |
+ | |||
+ | /** | ||
* It will read the contents from given file/document | * It will read the contents from given file/document | ||
* @param fileName | * @param fileName | ||
* @return | * @return | ||
*/ | */ | ||
− | |||
private static byte[] readFileContent(String fileName) { | private static byte[] readFileContent(String fileName) { | ||
− | // same as | + | // same code as in above example |
+ | } | ||
− | + | private static DocumentInfo constructDocInfo(File file) { | |
DocumentInfo documentInfo = DmsUtils.createDocumentInfo(file.getName()); | DocumentInfo documentInfo = DmsUtils.createDocumentInfo(file.getName()); | ||
documentInfo.setContentType("text/plain"); | documentInfo.setContentType("text/plain"); | ||
documentInfo.setDescription("This is a txt document."); | documentInfo.setDescription("This is a txt document."); | ||
return documentInfo; | return documentInfo; | ||
+ | } | ||
− | + | // Return ServiceFactory | |
private static ServiceFactory getServiceFactory(String partition, | private static ServiceFactory getServiceFactory(String partition, | ||
String domain, String realm, String user, String password) { | String domain, String realm, String user, String password) { | ||
− | // same as | + | // same code as in above example |
} | } | ||
− | } | + | } |
+ | |||
+ | **Note - We need to call dms.versionDocument(doc.getId(), "0") and set the versionLabel as “0”. | ||
+ | |||
</pre> | </pre> | ||
− |
Revision as of 04:58, 30 November 2011
Updating a document
Scenario: The document was created using DocumentManagementService’s createDocument() method and then how to update a document if we pass the updated byte[] of the same document.
The sample code would look like:
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("partition", partition); properties.put("domain", domain); properties.put("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 output of the above program is like:
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.
Retrieve Contents of a Document Revision
Scenario: There are 'n' number of versions of a document in the repository. Now how to retrieve the contents of a particular revision of that document.
Solution: The contents of a particular revision can be retrieved by passing the RevisionId in the retrieveDocumentContent() method. A sample code look like below:
package com.sungard.bootcamp.client; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import ag.carnot.workflow.runtime.DmsUtils; import ag.carnot.workflow.runtime.Document; import ag.carnot.workflow.runtime.DocumentInfo; import ag.carnot.workflow.runtime.DocumentManagementService; import ag.carnot.workflow.runtime.ServiceFactory; import ag.carnot.workflow.runtime.ServiceFactoryLocator; import ag.carnot.workflow.runtime.beans.removethis.SecurityProperties;
public class DMSClient {public static void main(String[] args) { // Obtain a reference to the ServiceFactory ServiceFactory sf = getServiceFactory(null, null, null, "motu", "motu"); DocumentManagementService dmsService = sf.getDocumentManagementService(); // pass the documentId to get the document versions of that document List<Document> list = dmsService.getDocumentVersions("{jcrUuid}05044280-8411-4fd8-8927-99b23560e4c3"); for(int i=0;i<list.size();i++){ Document document = (Document)list.get(i); System.out.println("DocumentID :: " + document.getId()); System.out.println("Document RevisionId :: " +document.getRevisionId()); System.out.println("Document RevisionName :: "+ document.getRevisionName()); System.out.println("Document Contents :: " + new String( dmsService.retrieveDocumentContent(document.getRevisionId()))); } }
// Return ServiceFactory private static ServiceFactory getServiceFactory(String partition, String domain, String realm, String user, String password) { Map properties = new HashMap(); properties.put(SecurityProperties.CRED_PARTITION, partition); properties.put(SecurityProperties.CRED_DOMAIN, domain); properties.put(SecurityProperties.CRED_REALM, realm); return ServiceFactoryLocator.get(user, password, properties); } }
The output of the program is something like below (assuming that there are 2 version of that document):
DocumentID :: {jcrUuid}05044280-8411-4fd8-8927-99b23560e4c3
Document RevisionId :: {jcrRev}eb025fef-5609-4f42-911c-abd0ba1125bb
Document RevisionName :: 1.0
Document Contents :: This is a test document..
DocumentID :: {jcrUuid}05044280-8411-4fd8-8927-99b23560e4c3
Document RevisionId :: {jcrRev}1cc5d11a-9dbd-4733-b451-c0732458c36f
Document RevisionName :: 1.1
Document Contents :: This is UPDATED document..
Create a new version
Scenario: Sample code to update a document (to create a new version) and then retrieving all the versions of the document
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.List; import java.util.Map; import ag.carnot.workflow.runtime.DmsUtils; import ag.carnot.workflow.runtime.Document; import ag.carnot.workflow.runtime.DocumentInfo; import ag.carnot.workflow.runtime.DocumentManagementService; import ag.carnot.workflow.runtime.ServiceFactory; import ag.carnot.workflow.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:/MySampleFile.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()))); dms.versionDocument(doc.getId(), "0"); System.out.println("======================================================"); //update the document Document updatedDoc = updateDoc(dms, doc,"D:/UpdatedContentFile.txt","UPDATED Description"); System.out.println("Id of UPDATED Document is : "+ (updatedDoc).getId()); //fetch the updated document to display the details of the document Document fetchedDocument = dms.getDocument(updatedDoc.getId()); System.out.println("Contents of UPDATED/Fetched Document : " + new String ( dms.retrieveDocumentContent(fetchedDocument.getRevisionId()))); System.out.println("Description from Fetched Document : "+ fetchedDocument.getDescription()); System.out.println("#######################################################"); //update the document again -- to create sufficient document revisions Document updatedDoc2 = updateDoc(dms, doc,"D:/UpdatedContentFile2.txt","Again Updated Description"); System.out.println("Id of UPDATED Document is : "+ (updatedDoc2).getId()); Document fetchedDocument2 = dms.getDocument(updatedDoc2.getId()); System.out.println("Contents of UPDATED/Fetched Document : " + new String ( dms.retrieveDocumentContent(fetchedDocument2.getRevisionId()))); System.out.println("Description from Fetched Document : "+ fetchedDocument2.getDescription()); List <Document> docVersions= dms.getDocumentVersions(fetchedDocument.getId()); if(docVersions!= null){ int size = docVersions.size(); System.out.println("Number of Document Versions :: "+size); for(int i=0;i<size;i++ ){ System.out.println("------------Below are the Document Versions' Details--------------"); Document document = (Document)docVersions.get(i); System.out.println("Revision Name :: "+document.getRevisionName()); System.out.println("Description :: "+document.getDescription()); System.out.println("Document Contents :: " +new String( dms.retrieveDocumentContent(document.getRevisionId()))); } } } private static Document createDoc(DocumentManagementService dms, File file) { DocumentInfo documentInfo = constructDocInfo(file); try { byte[] documentContent = FileUploadUtils.getBytesFromFile(file); return (dms.createDocument("/documents/", documentInfo, documentContent, null)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } private static Document updateDoc(DocumentManagementService dms,Document doc, String fileName, String description) { doc.setDescription(description); System.out.println("Calling updateDocument() with updated Contents and Description for Document '"+fileName +"'"); return (dms.updateDocument(doc, readFileContent(fileName), "UTF-8", true,"TOBEREVISED", false)); } /** * It will read the contents from given file/document * @param fileName * @return */ private static byte[] readFileContent(String fileName) { // same code as in above example } 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) { // same code as in above example } } **Note - We need to call dms.versionDocument(doc.getId(), "0") and set the versionLabel as “0”.