giovedì 12 luglio 2012

Oracle UCM: Create Folders and Subfolders in UCM using RIDC

In this post I provide code to add another functionality to our class: create Folders and Subfolders in Content Server using RIDC.

Please note that Perform Documents Check-In using Remote IntraDoC (RIDC)  contains the prerequisite code since in this post I don't provide the full java code but just additions.

This method lets you create folders and subfolders under "Contribution Folders".
As you probably know Contribution Folders can be enabled activating "Folders_G" component in UCM Administration.

Add this code to

    //Creates a Folder in Content Server
    public void createFolder(String folderOwner, String folderName, String Has_Parent, String ParentCollectionID,

String securityGroup) {
        ServiceResponse severiceResponse = null;
        try {
            System.out.println("Creating Folder: " + folderName);
            IdcClient client = getIdcClient();
            DataBinder dataBinderReq = client.createBinder();
            dataBinderReq.putLocal("IdcService", "COLLECTION_ADD");
            dataBinderReq.putLocal("dCollectionName", folderName);
            dataBinderReq.putLocal("hasParentCollectionID", Has_Parent);
            dataBinderReq.putLocal("dParentCollectionID", ParentCollectionID);
            dataBinderReq.putLocal("dCollectionOwner", folderOwner);
            dataBinderReq.putLocal("dSecurityGroup", securityGroup);

            severiceResponse = client.sendRequest(new IdcContext(folderOwner), dataBinderReq);
            DataBinder dataBinderResp = severiceResponse.getResponseAsBinder();           
            System.out.println("Folder " +folderName +" successfully created");
        } catch(Exception ex) {
            System.out.println("Error creating Folder: " + ex.getMessage());
        } finally {
            if (severiceResponse != null) {
    } //
    //Returns Folder ID
    public String getFolderIdFromPath(String username, String path){
        String folderId=null;
        try {
            IdcClient client = getIdcClient();
            DataBinder dataBinder = client.createBinder();
            dataBinder.putLocal("IdcService", "COLLECTION_INFO");
            dataBinder.putLocal("hasCollectionPath", "true");
            dataBinder.putLocal("dCollectionPath", path);

            ServiceResponse response = client.sendRequest(new IdcContext(username), dataBinder);
            DataBinder serverBinder = response.getResponseAsBinder();
            DataResultSet resultSet = serverBinder.getResultSet("PATH");
            DataObject dataObject = resultSet.getRows().get(resultSet.getRows().size() - 1);
            folderId = dataObject.get("dCollectionID");  
        } catch(Exception ex) {
            System.out.println("Error: " + ex.getMessage());               
        return folderId;
    } //

Then create a new and paste this code:

public class Test {
    public static void main(String[] args) {
        String username = "weblogic";
        String securityGroup = "Public";
        String mainFolderName = "MAIN FOLDER NAME";
        String subFolderName = "SUB FOLDER NAME";
        String subSubFolderName = "SUB SUB FOLDER NAME";
    try {

        //Istanciate objects
        UCMAdapter ucm = new UCMAdapter();
        Document d = new Document();

        //Create Main Folder under "Contribution Folder"
        ucm.createFolder(username, mainFolderName, "true", ucm.getFolderIdFromPath("weblogic", "/Contribution Folders"), securityGroup);
        //Create Sub Folder under Main Folder
        ucm.createFolder(username, subFolderName, "true", ucm.getFolderIdFromPath("weblogic", "/Contribution Folders"+ "/" + mainFolderName), securityGroup);
        //Create Sub Sub Folder under Sub Folder
        ucm.createFolder(username, subSubFolderName, "true", ucm.getFolderIdFromPath("weblogic", "/Contribution Folders" + "/" + mainFolderName + "/" + subFolderName), securityGroup);
        //...and so on
    } catch (Exception ex) {
}//end class

In the code above you have a pattern that allow you to create a folder tree with sub-folders, sub-sub-folders and so on...

Obviously you need to edit some variables according to your preferences.

That's all!!

1 commento:

  1. Hello hc just a question, is there a way to do the same under 'Framework Folders'?