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 ;
12+ import edu .harvard .iq .dataverse .export .ExportService ;
913import edu .harvard .iq .dataverse .search .IndexServiceBean ;
1014import edu .harvard .iq .dataverse .RoleAssignment ;
1115import edu .harvard .iq .dataverse .authorization .Permission ;
1216import edu .harvard .iq .dataverse .authorization .users .AuthenticatedUser ;
1317import static edu .harvard .iq .dataverse .dataset .DatasetUtil .deleteDatasetLogo ;
18+ import static java .text .MessageFormat .format ;
19+
1420import edu .harvard .iq .dataverse .engine .command .AbstractVoidCommand ;
1521import edu .harvard .iq .dataverse .engine .command .CommandContext ;
1622import edu .harvard .iq .dataverse .engine .command .DataverseRequest ;
2026import edu .harvard .iq .dataverse .pidproviders .PidProvider ;
2127import edu .harvard .iq .dataverse .pidproviders .PidUtil ;
2228import edu .harvard .iq .dataverse .search .IndexResponse ;
29+
30+ import java .nio .file .Files ;
2331import java .util .ArrayList ;
2432import java .util .Collections ;
2533import java .util .Iterator ;
2937
3038import edu .harvard .iq .dataverse .batch .util .LoggingUtil ;
3139import java .io .IOException ;
32- import java . util . concurrent . Future ;
40+
3341import org .apache .solr .client .solrj .SolrServerException ;
3442
3543/**
@@ -97,8 +105,8 @@ protected void executeImpl(CommandContext ctxt) throws CommandException {
97105 // ROLES
98106 for (DataverseRole ra : ctxt .roles ().findByOwnerId (managedDoomed .getId ())) {
99107 ctxt .em ().remove (ra );
100- }
101-
108+ }
109+
102110 if (!managedDoomed .isHarvested ()) {
103111 //also, lets delete the uploaded thumbnails!
104112 deleteDatasetLogo (managedDoomed );
@@ -116,7 +124,29 @@ protected void executeImpl(CommandContext ctxt) throws CommandException {
116124 }
117125 }
118126 }
119-
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+
120150 toReIndex .add (managedDoomed .getOwner ());
121151 toReIndex .addAll (managedDoomed .getOwner ().getOwners ());
122152 managedDoomed .getDatasetLinkingDataverses ().forEach (dld -> {
0 commit comments