How do I delete folders recursively using DQL?

1.7k Views Asked by At

I work on an application using Documentum. Let's say I have the following structure :

MyCabinetName
    |->Folder 1
        |->Folder 2
    |-> Folder 3

I am trying to delete all the folders inside a cabinet.

I am running the following DQL query :

delete dm_folder objects where folder ('MyCabinetName', DESCEND);

But when I run the query, I get a DQL ERROR :

[DM_FOLDER_E_CANT_DESTROY]error : "Cannot destroy folder with path name /MyCabinetName/Folder1 as it is not empty

I thought my query would delete recursively all folders inside MyCabinetName, but it does not seem to be the case, for if I run :

delete dm_folder objects where folder ('MyCabinetName/Folder1/Folder2', DESCEND);

and then

delete dm_folder objects where folder ('MyCabinetName/Folder1', DESCEND);

delete dm_folder objects where folder ('MyCabinetName/Folder3', DESCEND);

then

delete dm_folder objects where folder ('MyCabinetName', DESCEND);

will work.

Problem is that in real life, I don't know what my folder tree looks like. I just know the name of the cabinet whose content I want to delete.

Is there any way to delete a cabinet and its content recursively without having to delete each folder one by one?

1

There are 1 best solutions below

0
On BEST ANSWER

It is not possible to delete folder with deep folder structure by DQL.

But you can do it by Delete Operation, it means you can write a tool in Java, Groovy, ...

Here is an example how to do that:

IDfDeleteOperation operation = new DfClientX().getDeleteOperation();
operation.setVersionDeletionPolicy(IDfDeleteOperation.ALL_VERSIONS);
operation.setDeepFolders(true);
operation.add("/MyCabinetName");
if (!operation.execute()) {
    IDfList errors = operation.getErrors();
    // process errors
}

This line operation.setDeepFolders(true) instructs the operation to delete the folder with all sub-folders and other objects contained in the structure.