diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 2d1d0c0a03..0b9f8ee58e 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -31,8 +31,8 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.Date; import java.util.Collection; +import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.HashSet; @@ -54,26 +54,26 @@ import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.CaseMetadata.CaseMetadataException; import org.sleuthkit.autopsy.casemodule.events.AddingDataSourceEvent; import org.sleuthkit.autopsy.casemodule.events.AddingDataSourceFailedEvent; -import org.sleuthkit.autopsy.casemodule.events.DataSourceAddedEvent; -import org.sleuthkit.autopsy.casemodule.events.ReportAddedEvent; -import org.sleuthkit.autopsy.casemodule.services.Services; -import org.sleuthkit.autopsy.core.UserPreferences; -import org.sleuthkit.autopsy.corecomponentinterfaces.CoreComponentControl; -import org.sleuthkit.autopsy.coreutils.FileUtil; -import org.sleuthkit.autopsy.coreutils.Logger; -import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; -import org.sleuthkit.autopsy.coreutils.PlatformUtil; -import org.sleuthkit.autopsy.coreutils.Version; -import org.sleuthkit.autopsy.coreutils.NetworkUtils; -import org.sleuthkit.autopsy.events.AutopsyEvent; -import org.sleuthkit.autopsy.events.AutopsyEventException; -import org.sleuthkit.autopsy.events.AutopsyEventPublisher; import org.sleuthkit.autopsy.casemodule.events.BlackBoardArtifactTagAddedEvent; import org.sleuthkit.autopsy.casemodule.events.BlackBoardArtifactTagDeletedEvent; import org.sleuthkit.autopsy.casemodule.events.ContentTagAddedEvent; import org.sleuthkit.autopsy.casemodule.events.ContentTagDeletedEvent; +import org.sleuthkit.autopsy.casemodule.events.DataSourceAddedEvent; +import org.sleuthkit.autopsy.casemodule.events.ReportAddedEvent; +import org.sleuthkit.autopsy.casemodule.services.Services; import org.sleuthkit.autopsy.core.RuntimeProperties; +import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.core.UserPreferencesException; +import org.sleuthkit.autopsy.corecomponentinterfaces.CoreComponentControl; +import org.sleuthkit.autopsy.coreutils.FileUtil; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; +import org.sleuthkit.autopsy.coreutils.NetworkUtils; +import org.sleuthkit.autopsy.coreutils.PlatformUtil; +import org.sleuthkit.autopsy.coreutils.Version; +import org.sleuthkit.autopsy.events.AutopsyEvent; +import org.sleuthkit.autopsy.events.AutopsyEventException; +import org.sleuthkit.autopsy.events.AutopsyEventPublisher; import org.sleuthkit.autopsy.ingest.IngestJob; import org.sleuthkit.autopsy.ingest.IngestManager; import org.sleuthkit.datamodel.BlackboardArtifactTag; @@ -437,7 +437,7 @@ public class Case implements SleuthkitCase.ErrorObserver { * CaseActionException.getCause will return a Throwable * (null otherwise). * - * @throws CaseActionException if there is a problem creating the case. + * @throws CaseActionException if there is a problem creating the case. */ @Messages({"Case.creationException=Could not create case: failed to make metadata file."}) public static void create(String caseDir, String caseName, String caseNumber, String examiner, CaseType caseType) throws CaseActionException { @@ -1629,29 +1629,32 @@ public class Case implements SleuthkitCase.ErrorObserver { * @throws TskCoreException */ public void deleteReports(Collection reports, boolean deleteFromDisk) throws TskCoreException { - - String pathToReportsFolder = Paths.get(this.db.getDbDirPath(), "Reports").normalize().toString(); // NON-NLS for (Report report : reports) { // delete from the database. this.db.deleteReport(report); if (deleteFromDisk) { - // traverse to the root directory of Report report. String reportPath = report.getPath(); - while (!Paths.get(reportPath, "..").normalize().toString().equals(pathToReportsFolder)) { // NON-NLS - reportPath = Paths.get(reportPath, "..").normalize().toString(); // NON-NLS - } // delete from the disk. - try { - FileUtils.deleteDirectory(new File(reportPath)); - } catch (IOException | SecurityException ex) { - logger.log(Level.WARNING, NbBundle.getMessage(Case.class, "Case.deleteReports.deleteFromDiskException.log.msg"), ex); - JOptionPane.showMessageDialog(null, NbBundle.getMessage(Case.class, "Case.deleteReports.deleteFromDiskException.msg", report.getReportName(), reportPath)); + File toDelete = new File(reportPath); + if (toDelete.isDirectory()) { + try { + FileUtils.deleteDirectory(toDelete); + } catch (IOException | SecurityException ex) { + logger.log(Level.WARNING, "Unable to delete the report from the disk.", ex); + JOptionPane.showMessageDialog(null, NbBundle.getMessage(Case.class, "Case.deleteReports.deleteFromDiskException.msg", report.getReportName(), reportPath)); + } + } else { + boolean deleted = toDelete.delete(); + if (!deleted) { + logger.log(Level.WARNING, "Unable to delete the report from the disk."); + JOptionPane.showMessageDialog(null, NbBundle.getMessage(Case.class, "Case.deleteReports.deleteFromDiskException.msg", report.getReportName(), reportPath)); + } } - } + } eventPublisher.publish(new AutopsyEvent(Events.REPORT_DELETED.toString(), null, null)); } } @@ -1676,11 +1679,12 @@ public class Case implements SleuthkitCase.ErrorObserver { * Gets the full path to the case metadata file for this case. * * @return configFilePath The case metadata file path. + * * @deprecated Use getCaseMetadata and CaseMetadata.getFilePath instead. */ @Deprecated String getConfigFilePath() { return getCaseMetadata().getFilePath().toString(); - } - + } + }