diff --git a/src/main/java/org/olat/core/commons/services/vfs/ui/version/VFSTrashController.java b/src/main/java/org/olat/core/commons/services/vfs/ui/version/VFSTrashController.java index a3ac2436ee1c2b754853eebbce926e28dc8f35d9..f752864358ef27b8b471596455a63306d2d1b0b2 100644 --- a/src/main/java/org/olat/core/commons/services/vfs/ui/version/VFSTrashController.java +++ b/src/main/java/org/olat/core/commons/services/vfs/ui/version/VFSTrashController.java @@ -66,6 +66,7 @@ import org.olat.core.id.Identity; import org.olat.core.util.Formatter; import org.olat.core.util.Util; import org.olat.core.util.async.ProgressDelegate; +import org.olat.core.util.vfs.VFSItem; import org.springframework.beans.factory.annotation.Autowired; /** @@ -209,6 +210,23 @@ public class VFSTrashController extends FormBasicController implements ProgressD for(VersionsDeletedFileRow row:rowsToDelete) { VFSRevision revision = vfsRepositoryService.getRevision(new VFSRevisionRefImpl(row.getRevisionKey())); vfsRepositoryService.deleteRevisions(getIdentity(), Collections.singletonList(revision)); + doDelete(revision); + } + } + + private void doDelete(VFSRevision revision) { + VFSMetadata metadata = revision.getMetadata(); + vfsRepositoryService.deleteRevisions(getIdentity(), Collections.singletonList(revision)); + dbInstance.commit(); + + if(metadata.isDeleted()) { + List<VFSRevision> revisions = vfsRepositoryService.getRevisions(metadata); + if(revisions.isEmpty()) { + VFSItem item = vfsRepositoryService.getItemFor(metadata); + if(item == null || !item.exists()) { + vfsRepositoryService.deleteMetadata(metadata); + } + } } }