66import edu .harvard .iq .dataverse .Dataverse ;
77import edu .harvard .iq .dataverse .GlobalId ;
88import 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 ;
912import edu .harvard .iq .dataverse .export .ExportService ;
1013import edu .harvard .iq .dataverse .search .IndexServiceBean ;
1114import edu .harvard .iq .dataverse .RoleAssignment ;
1215import edu .harvard .iq .dataverse .authorization .Permission ;
1316import edu .harvard .iq .dataverse .authorization .users .AuthenticatedUser ;
1417import static edu .harvard .iq .dataverse .dataset .DatasetUtil .deleteDatasetLogo ;
18+ import static java .text .MessageFormat .format ;
19+
1520import edu .harvard .iq .dataverse .engine .command .AbstractVoidCommand ;
1621import edu .harvard .iq .dataverse .engine .command .CommandContext ;
1722import edu .harvard .iq .dataverse .engine .command .DataverseRequest ;
2126import edu .harvard .iq .dataverse .pidproviders .PidProvider ;
2227import edu .harvard .iq .dataverse .pidproviders .PidUtil ;
2328import edu .harvard .iq .dataverse .search .IndexResponse ;
29+
30+ import java .nio .file .Files ;
2431import java .util .ArrayList ;
2532import java .util .Collections ;
2633import java .util .Iterator ;
3037
3138import edu .harvard .iq .dataverse .batch .util .LoggingUtil ;
3239import java .io .IOException ;
33- import java . util . concurrent . Future ;
40+
3441import 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