From 11e2513194d99ff4079c254602ca1b25ef46a9ab Mon Sep 17 00:00:00 2001 From: aboeckle <alexander.boeckle@frentix.com> Date: Wed, 15 Jan 2020 09:47:30 +0100 Subject: [PATCH] OO-4375 Fixed revision delete - remove metadata --- .../vfs/ui/version/VFSTrashController.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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 a3ac2436ee1..f752864358e 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); + } + } } } -- GitLab