Oracle WebCenter 11g provides out of the box ADF task flows for Oracle UCM 11g content repository management - Oracle Universal Content Management 11g and Oracle ADF/WebCenter 11g Integration. It might be not enough, especially when implementing custom solutions. For those custom cases, we have option to define Data Control connection and retrieve information about stored documents through Bindings layer. One practical use case - select and retrieve ID's for the selected documents, store those ID's into database table. I will describe in this blog, how to retrieve selected documents ID's from Data Control defined on Content Repository connection.
Sample application allows user to select documents from custom list-of-values screen and retrieves ID's of these documents for future processing - UCMNewFolderDC.zip.
Oracle WebCenter 11g ADF task flow for Content Repository provides all required functionality:
However if we want to implement custom screens, for example like this custom list-of-values with documents for selected employee, we need to use Data Control generated for Content Repository connection:
Users will be able to select multiple documents and store their selection into database (custom functionality):
ID's and names for the selected documents are retrieved and can be processed in ADF:
Data Control for Content Management connection is created directly from Content Repository connection:
By default, document ID is not included into Data Control attributes list. You should add one more attribute, name it id (or give any other name you like) and change type to Long:
JCR Path points to Oracle UCM 11g Content Repository metadata structure. You will retrieve document ID, by pointing to jcr:content/idc:metadata/idc:dID. This will bring ID for current document:
Standard ADF Data Control is generated, there is getItems(path, type) method to retrieve list of documents from Content Repository by predefined path and type (all, documents or folders):
Drag and drop Return variable of getItems(path, type) method into ADF Faces fragment/page and create ADF Faces table component (filtering, sorting and selection features are provided by default):
Name column is combined to show document name:
And same time to open content by document URI:
Oracle UCM 11g Data Control method getItems(path, type) provides two parameters - path and type. Sample application retrieves folder path dynamically and brings only documents (no folders):
Custom list-of-values dialog listener is retrieving keys of the selected rows and accessing id/name values for each selected document:
There is one trick, when you want to enable multiple selection and access selected row keys in Java. First, make sure multiple selection property is set:
Then make sure, this line is removed from ADF Faces table tag:
Otherwise, it will return always only one selected key. Based on my blog post from 2007 for ADF 10g, seems like some things never change - Multi-selection feature and ADF Faces af:table component.