From bf1e8fcdda13208185d487a3bf5dfafc157b280c Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Fri, 18 Jul 2025 14:15:46 -0400 Subject: [PATCH 1/3] make more efficient --- .../DataverseFeaturedItemServiceBean.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/dataverse/featured/DataverseFeaturedItemServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/dataverse/featured/DataverseFeaturedItemServiceBean.java index 2598260aa80..88beea52c6d 100644 --- a/src/main/java/edu/harvard/iq/dataverse/dataverse/featured/DataverseFeaturedItemServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/dataverse/featured/DataverseFeaturedItemServiceBean.java @@ -17,7 +17,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; -import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; @@ -70,17 +69,17 @@ public void deleteAllByDvObjectId(Long id) { public void deleteInvalidatedFeaturedItemsByDataset(Dataset dataset) { // Delete any Featured Items that contain Datafiles that were removed or restricted in the latest published version List featuredItems = findAllByDataverseOrdered(dataset.getOwner()); + DatasetVersion latestVersion = dataset.getLatestVersion(); + for (DataverseFeaturedItem featuredItem : featuredItems) { if (featuredItem.getDvObject() != null && featuredItem.getType().equalsIgnoreCase(DataverseFeaturedItem.TYPES.DATAFILE.name())) { DataFile df = (DataFile) featuredItem.getDvObject(); - List latestVersionFileIds = new ArrayList<>(); - dataset.getLatestVersion().getFileMetadatas().stream() - .map(FileMetadata::getId) - .forEachOrdered(latestVersionFileIds::add); - // If the datafile is restricted or part of this dataset but not in the latest version we need to delete the featured item - if (df.isRestricted() || (dataset.getFiles().contains(df) && !latestVersionFileIds.contains(df.getId()))) { - logger.fine("Deleting invalidated Featured Item for " + (df.isRestricted() ? "Restricted" : "Deleted") + "Datafile ID: " + df.getId()); + + // Check if the file is restricted or deleted + if (df.isRestricted() || df.isInDatasetVersion(latestVersion)) { + logger.fine("Deleting invalidated Featured Item for " + (df.isRestricted() ? "Restricted" : "Deleted") + " Datafile ID: " + df.getId()); deleteAllByDvObjectId(df.getId()); + continue; } } } From 610ff07c2f53c290a5fb9141517b0a0a5e1b4407 Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Fri, 18 Jul 2025 14:25:18 -0400 Subject: [PATCH 2/3] removed unnecessary continue --- .../dataverse/featured/DataverseFeaturedItemServiceBean.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/dataverse/featured/DataverseFeaturedItemServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/dataverse/featured/DataverseFeaturedItemServiceBean.java index 88beea52c6d..e66880bfbd5 100644 --- a/src/main/java/edu/harvard/iq/dataverse/dataverse/featured/DataverseFeaturedItemServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/dataverse/featured/DataverseFeaturedItemServiceBean.java @@ -79,7 +79,6 @@ public void deleteInvalidatedFeaturedItemsByDataset(Dataset dataset) { if (df.isRestricted() || df.isInDatasetVersion(latestVersion)) { logger.fine("Deleting invalidated Featured Item for " + (df.isRestricted() ? "Restricted" : "Deleted") + " Datafile ID: " + df.getId()); deleteAllByDvObjectId(df.getId()); - continue; } } } From 86ae20d1783e79daf120f439fbc1e559d8f70732 Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Tue, 2 Sep 2025 11:50:27 -0400 Subject: [PATCH 3/3] missing ! - also check file in dataset as in existing code --- .../dataverse/featured/DataverseFeaturedItemServiceBean.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/dataverse/featured/DataverseFeaturedItemServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/dataverse/featured/DataverseFeaturedItemServiceBean.java index e66880bfbd5..83348a59687 100644 --- a/src/main/java/edu/harvard/iq/dataverse/dataverse/featured/DataverseFeaturedItemServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/dataverse/featured/DataverseFeaturedItemServiceBean.java @@ -76,7 +76,7 @@ public void deleteInvalidatedFeaturedItemsByDataset(Dataset dataset) { DataFile df = (DataFile) featuredItem.getDvObject(); // Check if the file is restricted or deleted - if (df.isRestricted() || df.isInDatasetVersion(latestVersion)) { + if (df.isRestricted() || (dataset.equals(df.getOwner()) && !df.isInDatasetVersion(latestVersion))) { logger.fine("Deleting invalidated Featured Item for " + (df.isRestricted() ? "Restricted" : "Deleted") + " Datafile ID: " + df.getId()); deleteAllByDvObjectId(df.getId()); }