Here's a snippet of codes using DKDDO and DKLobICM to retrieve a document using PID string from content manager:
public void retrieveDoc(String pidString) throws Exception {
if(pidString == null || pidString.trim().length() == 0) {
throw new Exception("PID string is null - nothing to retrieve.");
}
DKDatastoreICM dsICM = getDataStore();
DKDDO ddo = dsICM.createDDOFromPID(pidString);
DKRetrieveOptionsICM retrOpts = DKRetrieveOptionsICM.createInstance(dsICM);
retrOpts.baseAttributes(true); // Get Base Attributes
retrOpts.partsList(true); // Get the parts
retrOpts.resourceContent(true); // Get the document content
ddo.retrieve(retrOpts.dkNVPair()); // Retrieve from content manager
// Get the Dynamic Data Objects (DDO) parts
DKParts parts = null;
short dataID = ddo.dataId(DKConstant.DK_CM_NAMESPACE_ATTR, DKConstant.DK_CM_DKPARTS);
if (dataID != 0) { //
parts = (DKParts)ddo.getData(dataID);
} else { // The namespace or data-item name (parts) is not found
throw new Exception("The document parts not found for pid: " + pidString);
}
// Get the base ICM content from the parts.
DKLobICM icmBase = null;
if(parts != null) {
// Iterate through the parts.
// Whoever develops the IBM java libraries isn't a Java guy, probably a C++ guy
// All Java developers know Class names started with a capital letter.
dkIterator iter = (dkIterator) parts.createIterator();
while (iter.more()) {
DKDDO d = (DKDDO)iter.next();
if(d instanceof DKLobICM && ICMBASE_OBJECT_TYPE_STR.equalsIgnoreCase(d.getObjectType())) {
System.out.println("Found ICMBASE object with mimeType: " + ((DKLobICM)d).getMimeType());
icmBase = (DKLobICM) d;
}
}
}
// Did we find the ICMBASE object? If yes, and it has content, write it to an external file.
if(icmBase != null) {
byte content[] = icmBase.getContent();
if (content != null) {
OutputStream os = new FileOutputStream(new File("testdoc2.tiff"));
os.write(content);
}
} else {
System.out.println("Oops... can't find the document with pid: " + pidString);
}
}
Off course the entire code set is more complicated. This is just snippet after all.




