Skip to content

Commit ed624a5

Browse files
committed
delete dir of dataset
1 parent 191e67e commit ed624a5

File tree

1 file changed

+31
-10
lines changed

1 file changed

+31
-10
lines changed

src/main/java/edu/harvard/iq/dataverse/engine/command/impl/DestroyDatasetCommand.java

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,17 @@
66
import edu.harvard.iq.dataverse.Dataverse;
77
import edu.harvard.iq.dataverse.GlobalId;
88
import edu.harvard.iq.dataverse.authorization.DataverseRole;
9+
import edu.harvard.iq.dataverse.dataaccess.DataAccess;
10+
import edu.harvard.iq.dataverse.dataaccess.FileAccessIO;
11+
import edu.harvard.iq.dataverse.dataaccess.GlobusOverlayAccessIO;
912
import edu.harvard.iq.dataverse.export.ExportService;
1013
import edu.harvard.iq.dataverse.search.IndexServiceBean;
1114
import edu.harvard.iq.dataverse.RoleAssignment;
1215
import edu.harvard.iq.dataverse.authorization.Permission;
1316
import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser;
1417
import static edu.harvard.iq.dataverse.dataset.DatasetUtil.deleteDatasetLogo;
18+
import static java.text.MessageFormat.format;
19+
1520
import edu.harvard.iq.dataverse.engine.command.AbstractVoidCommand;
1621
import edu.harvard.iq.dataverse.engine.command.CommandContext;
1722
import edu.harvard.iq.dataverse.engine.command.DataverseRequest;
@@ -21,6 +26,8 @@
2126
import edu.harvard.iq.dataverse.pidproviders.PidProvider;
2227
import edu.harvard.iq.dataverse.pidproviders.PidUtil;
2328
import edu.harvard.iq.dataverse.search.IndexResponse;
29+
30+
import java.nio.file.Files;
2431
import java.util.ArrayList;
2532
import java.util.Collections;
2633
import java.util.Iterator;
@@ -30,7 +37,7 @@
3037

3138
import edu.harvard.iq.dataverse.batch.util.LoggingUtil;
3239
import java.io.IOException;
33-
import java.util.concurrent.Future;
40+
3441
import org.apache.solr.client.solrj.SolrServerException;
3542

3643
/**
@@ -100,14 +107,6 @@ protected void executeImpl(CommandContext ctxt) throws CommandException {
100107
ctxt.em().remove(ra);
101108
}
102109

103-
ExportService exportService = ExportService.getInstance();
104-
try {
105-
exportService.clearAllCachedFormats(doomed);
106-
}
107-
catch (IOException e) {
108-
logger.log(Level.WARNING, "Export service could not clear all cached formats:", e.getMessage());
109-
}
110-
111110
if (!managedDoomed.isHarvested()) {
112111
//also, lets delete the uploaded thumbnails!
113112
deleteDatasetLogo(managedDoomed);
@@ -125,7 +124,29 @@ protected void executeImpl(CommandContext ctxt) throws CommandException {
125124
}
126125
}
127126
}
128-
127+
128+
// CACHED EXPORTS
129+
var exportService = ExportService.getInstance();
130+
try {
131+
exportService.clearAllCachedFormats(managedDoomed);
132+
}
133+
catch (IOException e) {
134+
var msg = format("Failed to delete cached exports of {0}: {1} ", managedDoomed.getIdentifier(), e.getClass().getSimpleName());
135+
logger.log(Level.WARNING, msg, e.getMessage());
136+
}
137+
138+
// DIRECTORY
139+
try {
140+
var storageIO = DataAccess.getStorageIO(managedDoomed);
141+
if (storageIO instanceof FileAccessIO<Dataset> || storageIO instanceof GlobusOverlayAccessIO<Dataset>) {
142+
Files.delete(storageIO.getAuxObjectAsPath(".").getParent());
143+
}
144+
}
145+
catch (IOException e) {
146+
var msg = format("Failed to delete dataset directory of {0}: {1} ", managedDoomed.getIdentifier(), e.getClass().getSimpleName());
147+
logger.log(Level.WARNING, msg, e.getMessage());
148+
}
149+
129150
toReIndex.add(managedDoomed.getOwner());
130151
toReIndex.addAll(managedDoomed.getOwner().getOwners());
131152
managedDoomed.getDatasetLinkingDataverses().forEach(dld -> {

0 commit comments

Comments
 (0)