Skip to content

Commit 9dd6f07

Browse files
authored
Merge pull request #11658 from GlobalDataverseCommunityConsortium/FeaturedItem_efficiency
Improved Featured item efficiency during publication
2 parents f223fb2 + 86ae20d commit 9dd6f07

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

src/main/java/edu/harvard/iq/dataverse/dataverse/featured/DataverseFeaturedItemServiceBean.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import java.nio.file.Files;
1818
import java.nio.file.Path;
1919
import java.nio.file.StandardCopyOption;
20-
import java.util.ArrayList;
2120
import java.util.List;
2221
import java.util.logging.Logger;
2322

@@ -70,16 +69,15 @@ public void deleteAllByDvObjectId(Long id) {
7069
public void deleteInvalidatedFeaturedItemsByDataset(Dataset dataset) {
7170
// Delete any Featured Items that contain Datafiles that were removed or restricted in the latest published version
7271
List<DataverseFeaturedItem> featuredItems = findAllByDataverseOrdered(dataset.getOwner());
72+
DatasetVersion latestVersion = dataset.getLatestVersion();
73+
7374
for (DataverseFeaturedItem featuredItem : featuredItems) {
7475
if (featuredItem.getDvObject() != null && featuredItem.getType().equalsIgnoreCase(DataverseFeaturedItem.TYPES.DATAFILE.name())) {
7576
DataFile df = (DataFile) featuredItem.getDvObject();
76-
List<Long> latestVersionFileIds = new ArrayList<>();
77-
dataset.getLatestVersion().getFileMetadatas().stream()
78-
.map(FileMetadata::getId)
79-
.forEachOrdered(latestVersionFileIds::add);
80-
// If the datafile is restricted or part of this dataset but not in the latest version we need to delete the featured item
81-
if (df.isRestricted() || (dataset.getFiles().contains(df) && !latestVersionFileIds.contains(df.getId()))) {
82-
logger.fine("Deleting invalidated Featured Item for " + (df.isRestricted() ? "Restricted" : "Deleted") + "Datafile ID: " + df.getId());
77+
78+
// Check if the file is restricted or deleted
79+
if (df.isRestricted() || (dataset.equals(df.getOwner()) && !df.isInDatasetVersion(latestVersion))) {
80+
logger.fine("Deleting invalidated Featured Item for " + (df.isRestricted() ? "Restricted" : "Deleted") + " Datafile ID: " + df.getId());
8381
deleteAllByDvObjectId(df.getId());
8482
}
8583
}

0 commit comments

Comments
 (0)