|
17 | 17 | import java.nio.file.Files; |
18 | 18 | import java.nio.file.Path; |
19 | 19 | import java.nio.file.StandardCopyOption; |
20 | | -import java.util.ArrayList; |
21 | 20 | import java.util.List; |
22 | 21 | import java.util.logging.Logger; |
23 | 22 |
|
@@ -70,16 +69,15 @@ public void deleteAllByDvObjectId(Long id) { |
70 | 69 | public void deleteInvalidatedFeaturedItemsByDataset(Dataset dataset) { |
71 | 70 | // Delete any Featured Items that contain Datafiles that were removed or restricted in the latest published version |
72 | 71 | List<DataverseFeaturedItem> featuredItems = findAllByDataverseOrdered(dataset.getOwner()); |
| 72 | + DatasetVersion latestVersion = dataset.getLatestVersion(); |
| 73 | + |
73 | 74 | for (DataverseFeaturedItem featuredItem : featuredItems) { |
74 | 75 | if (featuredItem.getDvObject() != null && featuredItem.getType().equalsIgnoreCase(DataverseFeaturedItem.TYPES.DATAFILE.name())) { |
75 | 76 | 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()); |
83 | 81 | deleteAllByDvObjectId(df.getId()); |
84 | 82 | } |
85 | 83 | } |
|
0 commit comments