From c8176c57ad18536837230b32f9ba975a93a7206d Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Wed, 3 May 2017 20:12:34 -0400 Subject: [PATCH 1/2] Refactor to remove vague framework package --- Core/nbproject/project.xml | 4 +++- .../{framework => appservices}/AutopsyService.java | 3 ++- Core/src/org/sleuthkit/autopsy/casemodule/Case.java | 10 +++++----- .../sleuthkit/autopsy/casemodule/ImageDSProcessor.java | 2 +- .../autopsy/casemodule/LocalDiskDSProcessor.java | 2 +- .../autopsy/casemodule/LocalFilesDSProcessor.java | 2 +- .../AutoIngestDataSourceProcessor.java | 2 +- .../autopsy/imagewriter/ImageWriterService.java | 2 +- .../autopsy/{framework => progress}/Bundle.properties | 0 .../LoggingProgressIndicator.java | 2 +- .../ModalDialogProgressIndicator.java | 2 +- .../{framework => progress}/ProgressIndicator.java | 2 +- .../autopsy/{framework => progress}/ProgressPanel.form | 2 +- .../autopsy/{framework => progress}/ProgressPanel.java | 2 +- .../SilentProgressIndicator.java | 4 ++-- .../org/sleuthkit/autopsy/test/TestAutopsyService.java | 4 ++-- .../experimental/autoingest/AutoIngestManager.java | 4 ++-- .../autoingest/AutopsyManifestFileParser.java | 2 +- .../sleuthkit/autopsy/keywordsearch/IndexFinder.java | 2 +- .../autopsy/keywordsearch/SolrSearchService.java | 4 ++-- 20 files changed, 30 insertions(+), 27 deletions(-) rename Core/src/org/sleuthkit/autopsy/{framework => appservices}/AutopsyService.java (98%) rename Core/src/org/sleuthkit/autopsy/{framework => datasourceprocessors}/AutoIngestDataSourceProcessor.java (98%) rename Core/src/org/sleuthkit/autopsy/{framework => progress}/Bundle.properties (100%) rename Core/src/org/sleuthkit/autopsy/{framework => progress}/LoggingProgressIndicator.java (98%) rename Core/src/org/sleuthkit/autopsy/{framework => progress}/ModalDialogProgressIndicator.java (99%) rename Core/src/org/sleuthkit/autopsy/{framework => progress}/ProgressIndicator.java (98%) rename Core/src/org/sleuthkit/autopsy/{framework => progress}/ProgressPanel.form (91%) rename Core/src/org/sleuthkit/autopsy/{framework => progress}/ProgressPanel.java (98%) rename Core/src/org/sleuthkit/autopsy/{framework => progress}/SilentProgressIndicator.java (93%) diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index 2d905e7e49..d2328273c1 100644 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -243,6 +243,7 @@ net.sf.sevenzipjbinding.simple net.sf.sevenzipjbinding.simple.impl org.sleuthkit.autopsy.actions + org.sleuthkit.autopsy.appservices org.sleuthkit.autopsy.casemodule org.sleuthkit.autopsy.casemodule.events org.sleuthkit.autopsy.casemodule.services @@ -254,17 +255,18 @@ org.sleuthkit.autopsy.corecomponents org.sleuthkit.autopsy.coreutils org.sleuthkit.autopsy.datamodel + org.sleuthkit.autopsy.datasourceprocessors org.sleuthkit.autopsy.directorytree org.sleuthkit.autopsy.events org.sleuthkit.autopsy.externalresults org.sleuthkit.autopsy.filesearch - org.sleuthkit.autopsy.framework org.sleuthkit.autopsy.ingest org.sleuthkit.autopsy.keywordsearchservice org.sleuthkit.autopsy.menuactions org.sleuthkit.autopsy.modules.filetypeid org.sleuthkit.autopsy.modules.hashdatabase org.sleuthkit.autopsy.modules.vmextractor + org.sleuthkit.autopsy.progress org.sleuthkit.autopsy.report org.sleuthkit.datamodel diff --git a/Core/src/org/sleuthkit/autopsy/framework/AutopsyService.java b/Core/src/org/sleuthkit/autopsy/appservices/AutopsyService.java similarity index 98% rename from Core/src/org/sleuthkit/autopsy/framework/AutopsyService.java rename to Core/src/org/sleuthkit/autopsy/appservices/AutopsyService.java index 2869b550f3..6e07fbe5fe 100644 --- a/Core/src/org/sleuthkit/autopsy/framework/AutopsyService.java +++ b/Core/src/org/sleuthkit/autopsy/appservices/AutopsyService.java @@ -16,9 +16,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.sleuthkit.autopsy.framework; +package org.sleuthkit.autopsy.appservices; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.progress.ProgressIndicator; /** * An interface for services that report status and may manage case and diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index b76e4aca9e..eedf524d78 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -92,11 +92,11 @@ 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.framework.AutopsyService; -import org.sleuthkit.autopsy.framework.AutopsyService.CaseContext; -import org.sleuthkit.autopsy.framework.LoggingProgressIndicator; -import org.sleuthkit.autopsy.framework.ModalDialogProgressIndicator; -import org.sleuthkit.autopsy.framework.ProgressIndicator; +import org.sleuthkit.autopsy.appservices.AutopsyService; +import org.sleuthkit.autopsy.appservices.AutopsyService.CaseContext; +import org.sleuthkit.autopsy.progress.LoggingProgressIndicator; +import org.sleuthkit.autopsy.progress.ModalDialogProgressIndicator; +import org.sleuthkit.autopsy.progress.ProgressIndicator; import org.sleuthkit.autopsy.ingest.IngestJob; import org.sleuthkit.autopsy.ingest.IngestManager; import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchService; diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index 36abbd307a..6a48384416 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -33,7 +33,7 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgress import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; import org.sleuthkit.autopsy.coreutils.DataSourceUtils; -import org.sleuthkit.autopsy.framework.AutoIngestDataSourceProcessor; +import org.sleuthkit.autopsy.datasourceprocessors.AutoIngestDataSourceProcessor; /** * A image file data source processor that implements the DataSourceProcessor diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java index f19ad01af1..26185cb9ba 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java @@ -31,7 +31,7 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgress import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; import org.sleuthkit.autopsy.coreutils.DriveUtils; import org.sleuthkit.autopsy.imagewriter.ImageWriterSettings; -import org.sleuthkit.autopsy.framework.AutoIngestDataSourceProcessor; +import org.sleuthkit.autopsy.datasourceprocessors.AutoIngestDataSourceProcessor; /** * A local drive data source processor that implements the DataSourceProcessor diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java index e207734714..974244bd30 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java @@ -29,7 +29,7 @@ import org.openide.util.lookup.ServiceProviders; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; -import org.sleuthkit.autopsy.framework.AutoIngestDataSourceProcessor; +import org.sleuthkit.autopsy.datasourceprocessors.AutoIngestDataSourceProcessor; /** * A local/logical files and/or directories data source processor that diff --git a/Core/src/org/sleuthkit/autopsy/framework/AutoIngestDataSourceProcessor.java b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/AutoIngestDataSourceProcessor.java similarity index 98% rename from Core/src/org/sleuthkit/autopsy/framework/AutoIngestDataSourceProcessor.java rename to Core/src/org/sleuthkit/autopsy/datasourceprocessors/AutoIngestDataSourceProcessor.java index e4acab8234..11c0559795 100644 --- a/Core/src/org/sleuthkit/autopsy/framework/AutoIngestDataSourceProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/AutoIngestDataSourceProcessor.java @@ -16,7 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.sleuthkit.autopsy.framework; +package org.sleuthkit.autopsy.datasourceprocessors; import java.nio.file.Path; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; diff --git a/Core/src/org/sleuthkit/autopsy/imagewriter/ImageWriterService.java b/Core/src/org/sleuthkit/autopsy/imagewriter/ImageWriterService.java index cf6f042292..a3853f0b31 100644 --- a/Core/src/org/sleuthkit/autopsy/imagewriter/ImageWriterService.java +++ b/Core/src/org/sleuthkit/autopsy/imagewriter/ImageWriterService.java @@ -25,7 +25,7 @@ import org.openide.DialogDisplayer; import org.openide.NotifyDescriptor; import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; -import org.sleuthkit.autopsy.framework.AutopsyService; +import org.sleuthkit.autopsy.appservices.AutopsyService; /** * Creates and handles closing of ImageWriter objects. Currently, ImageWriter is diff --git a/Core/src/org/sleuthkit/autopsy/framework/Bundle.properties b/Core/src/org/sleuthkit/autopsy/progress/Bundle.properties similarity index 100% rename from Core/src/org/sleuthkit/autopsy/framework/Bundle.properties rename to Core/src/org/sleuthkit/autopsy/progress/Bundle.properties diff --git a/Core/src/org/sleuthkit/autopsy/framework/LoggingProgressIndicator.java b/Core/src/org/sleuthkit/autopsy/progress/LoggingProgressIndicator.java similarity index 98% rename from Core/src/org/sleuthkit/autopsy/framework/LoggingProgressIndicator.java rename to Core/src/org/sleuthkit/autopsy/progress/LoggingProgressIndicator.java index 83e7db95e0..6ae7ebdb2d 100644 --- a/Core/src/org/sleuthkit/autopsy/framework/LoggingProgressIndicator.java +++ b/Core/src/org/sleuthkit/autopsy/progress/LoggingProgressIndicator.java @@ -16,7 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.sleuthkit.autopsy.framework; +package org.sleuthkit.autopsy.progress; import java.util.logging.Level; import org.sleuthkit.autopsy.coreutils.Logger; diff --git a/Core/src/org/sleuthkit/autopsy/framework/ModalDialogProgressIndicator.java b/Core/src/org/sleuthkit/autopsy/progress/ModalDialogProgressIndicator.java similarity index 99% rename from Core/src/org/sleuthkit/autopsy/framework/ModalDialogProgressIndicator.java rename to Core/src/org/sleuthkit/autopsy/progress/ModalDialogProgressIndicator.java index a7dcfa5503..d49574bf24 100644 --- a/Core/src/org/sleuthkit/autopsy/framework/ModalDialogProgressIndicator.java +++ b/Core/src/org/sleuthkit/autopsy/progress/ModalDialogProgressIndicator.java @@ -16,7 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.sleuthkit.autopsy.framework; +package org.sleuthkit.autopsy.progress; import java.awt.Dialog; import java.awt.Frame; diff --git a/Core/src/org/sleuthkit/autopsy/framework/ProgressIndicator.java b/Core/src/org/sleuthkit/autopsy/progress/ProgressIndicator.java similarity index 98% rename from Core/src/org/sleuthkit/autopsy/framework/ProgressIndicator.java rename to Core/src/org/sleuthkit/autopsy/progress/ProgressIndicator.java index 6f91dd3231..8e5b881182 100644 --- a/Core/src/org/sleuthkit/autopsy/framework/ProgressIndicator.java +++ b/Core/src/org/sleuthkit/autopsy/progress/ProgressIndicator.java @@ -16,7 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.sleuthkit.autopsy.framework; +package org.sleuthkit.autopsy.progress; /** * An interface for progress indicators. A progress indicator can run in diff --git a/Core/src/org/sleuthkit/autopsy/framework/ProgressPanel.form b/Core/src/org/sleuthkit/autopsy/progress/ProgressPanel.form similarity index 91% rename from Core/src/org/sleuthkit/autopsy/framework/ProgressPanel.form rename to Core/src/org/sleuthkit/autopsy/progress/ProgressPanel.form index 59678117af..75597eef34 100644 --- a/Core/src/org/sleuthkit/autopsy/framework/ProgressPanel.form +++ b/Core/src/org/sleuthkit/autopsy/progress/ProgressPanel.form @@ -42,7 +42,7 @@ - + diff --git a/Core/src/org/sleuthkit/autopsy/framework/ProgressPanel.java b/Core/src/org/sleuthkit/autopsy/progress/ProgressPanel.java similarity index 98% rename from Core/src/org/sleuthkit/autopsy/framework/ProgressPanel.java rename to Core/src/org/sleuthkit/autopsy/progress/ProgressPanel.java index 4130eb4852..b918d1f9f0 100644 --- a/Core/src/org/sleuthkit/autopsy/framework/ProgressPanel.java +++ b/Core/src/org/sleuthkit/autopsy/progress/ProgressPanel.java @@ -16,7 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.sleuthkit.autopsy.framework; +package org.sleuthkit.autopsy.progress; /** * A progress panel consisting of a message label and a progress bar. diff --git a/Core/src/org/sleuthkit/autopsy/framework/SilentProgressIndicator.java b/Core/src/org/sleuthkit/autopsy/progress/SilentProgressIndicator.java similarity index 93% rename from Core/src/org/sleuthkit/autopsy/framework/SilentProgressIndicator.java rename to Core/src/org/sleuthkit/autopsy/progress/SilentProgressIndicator.java index b7b03b8c44..c7ed9c671c 100644 --- a/Core/src/org/sleuthkit/autopsy/framework/SilentProgressIndicator.java +++ b/Core/src/org/sleuthkit/autopsy/progress/SilentProgressIndicator.java @@ -16,9 +16,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.sleuthkit.autopsy.framework; +package org.sleuthkit.autopsy.progress; -import org.sleuthkit.autopsy.framework.ProgressIndicator; +import org.sleuthkit.autopsy.progress.ProgressIndicator; /** * A "silent" or "null" progress indicator. diff --git a/Core/src/org/sleuthkit/autopsy/test/TestAutopsyService.java b/Core/src/org/sleuthkit/autopsy/test/TestAutopsyService.java index f3e30a6b63..4fb2997691 100644 --- a/Core/src/org/sleuthkit/autopsy/test/TestAutopsyService.java +++ b/Core/src/org/sleuthkit/autopsy/test/TestAutopsyService.java @@ -21,8 +21,8 @@ package org.sleuthkit.autopsy.test; import java.util.logging.Level; import org.openide.util.lookup.ServiceProvider; import org.sleuthkit.autopsy.coreutils.Logger; -import org.sleuthkit.autopsy.framework.AutopsyService; -import org.sleuthkit.autopsy.framework.ProgressIndicator; +import org.sleuthkit.autopsy.appservices.AutopsyService; +import org.sleuthkit.autopsy.progress.ProgressIndicator; /** * An implementation of the Autopsy service interface used for test purposes. diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestManager.java b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestManager.java index 900a5a603b..d92e8d2dbe 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestManager.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestManager.java @@ -92,8 +92,8 @@ import static org.sleuthkit.autopsy.experimental.autoingest.ManifestNodeData.Pro import org.sleuthkit.autopsy.experimental.configuration.AutoIngestUserPreferences; import org.sleuthkit.autopsy.experimental.configuration.SharedConfiguration; import org.sleuthkit.autopsy.experimental.configuration.SharedConfiguration.SharedConfigurationException; -import org.sleuthkit.autopsy.framework.AutoIngestDataSourceProcessor; -import org.sleuthkit.autopsy.framework.AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException; +import org.sleuthkit.autopsy.datasourceprocessors.AutoIngestDataSourceProcessor; +import org.sleuthkit.autopsy.datasourceprocessors.AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException; import org.sleuthkit.autopsy.ingest.IngestJob; import org.sleuthkit.autopsy.ingest.IngestJob.CancellationReason; import org.sleuthkit.autopsy.ingest.IngestJobSettings; diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java index 5b7fc5e3c9..f25182b018 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java @@ -42,7 +42,7 @@ public final class AutopsyManifestFileParser implements ManifestFileParser { private static final String ROOT_ELEM_TAG_NAME = "AutopsyManifest"; private static final String CASE_NAME_XPATH = "/AutopsyManifest/CaseName/text()"; private static final String DEVICE_ID_XPATH = "/AutopsyManifest/DeviceId/text()"; - private static final String DATA_SOURCE_NAME_XPATH = "/AutopsyManifest/DataSourcePath/text()"; + private static final String DATA_SOURCE_NAME_XPATH = "/AutopsyManifest/DataSource/text()"; @Override public boolean fileIsManifest(Path filePath) { diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/IndexFinder.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/IndexFinder.java index 6ecf83bdce..b4a09e226e 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/IndexFinder.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/IndexFinder.java @@ -27,7 +27,7 @@ import java.util.List; import org.apache.commons.lang.math.NumberUtils; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.coreutils.Logger; -import org.sleuthkit.autopsy.framework.AutopsyService; +import org.sleuthkit.autopsy.appservices.AutopsyService; /** * This class handles the task of finding and identifying KWS index folders. diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java index d54ff86062..eee3ac4dad 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java @@ -40,8 +40,8 @@ import org.sleuthkit.autopsy.casemodule.CaseMetadata; import org.sleuthkit.autopsy.core.RuntimeProperties; import org.sleuthkit.autopsy.coreutils.FileUtil; import org.sleuthkit.autopsy.coreutils.Logger; -import org.sleuthkit.autopsy.framework.AutopsyService; -import org.sleuthkit.autopsy.framework.ProgressIndicator; +import org.sleuthkit.autopsy.appservices.AutopsyService; +import org.sleuthkit.autopsy.progress.ProgressIndicator; import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchService; import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchServiceException; import org.sleuthkit.datamodel.BlackboardArtifact; From 7c22a6ade971d714ab568edde814f19448e74334 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Thu, 4 May 2017 13:59:21 -0400 Subject: [PATCH 2/2] Assorted case operatino UI fixes --- .../sleuthkit/autopsy/casemodule/Case.java | 6 ++++- .../CaseActionCancelledException.java | 2 +- .../autopsy/casemodule/CaseOpenAction.java | 17 ++++--------- .../casemodule/OpenRecentCasePanel.java | 18 +++++++------- .../autopsy/casemodule/RecentItems.java | 6 ++--- .../autoingest/AutoIngestCasePanel.java | 24 +++++++++---------- 6 files changed, 34 insertions(+), 39 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index eedf524d78..e64a1e6341 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -463,7 +463,8 @@ public class Case { * exception. */ @Messages({ - "Case.exceptionMessage.failedToReadMetadata=Failed to read case metadata." + "Case.exceptionMessage.failedToReadMetadata=Failed to read case metadata.", + "Case.exceptionMessage.cannotOpenMultiUserCaseNoSettings=Multi-user settings are missing (see Tools, Options, Multi-user tab), cannot open a multi-user case." }) public static void openAsCurrentCase(String caseMetadataFilePath) throws CaseActionException { CaseMetadata metadata; @@ -472,6 +473,9 @@ public class Case { } catch (CaseMetadataException ex) { throw new CaseActionException(Bundle.Case_exceptionMessage_failedToReadMetadata(), ex); } + if (CaseType.MULTI_USER_CASE == metadata.getCaseType() && !UserPreferences.getIsMultiUserModeEnabled()) { + throw new CaseActionException(Bundle.Case_exceptionMessage_cannotOpenMultiUserCaseNoSettings()); + } openAsCurrentCase(new Case(metadata), false); } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseActionCancelledException.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseActionCancelledException.java index 042bfe912e..87635f40b9 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseActionCancelledException.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseActionCancelledException.java @@ -22,7 +22,7 @@ package org.sleuthkit.autopsy.casemodule; * Exception thrown when a case action (e.g., create, open, close, delete) is * cancelled before it is completed. */ -class CaseActionCancelledException extends CaseActionException { +public final class CaseActionCancelledException extends CaseActionException { private static final long serialVersionUID = 1L; diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseOpenAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseOpenAction.java index 983cbd9149..533cab58c5 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseOpenAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseOpenAction.java @@ -115,19 +115,9 @@ public final class CaseOpenAction extends CallableSystemAction implements Action protected void done() { try { get(); - } catch (InterruptedException ex) { - logger.log(Level.SEVERE, String.format("Error opening case with metadata file path %s", path), ex); //NON-NLS - WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - JOptionPane.showMessageDialog( - WindowManager.getDefault().getMainWindow(), - ex.getMessage(), - NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), //NON-NLS - JOptionPane.ERROR_MESSAGE); - StartupWindowProvider.getInstance().open(); - } catch (ExecutionException ex) { - if (null != ex.getCause() && !(ex.getCause() instanceof CaseActionCancelledException)) { + } catch (InterruptedException | ExecutionException ex) { + if (ex instanceof InterruptedException || (null != ex.getCause() && !(ex.getCause() instanceof CaseActionCancelledException))) { logger.log(Level.SEVERE, String.format("Error opening case with metadata file path %s", path), ex); //NON-NLS - WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); JOptionPane.showMessageDialog( WindowManager.getDefault().getMainWindow(), ex.getCause().getMessage(), //get the message of the wrapped exception @@ -135,8 +125,9 @@ public final class CaseOpenAction extends CallableSystemAction implements Action JOptionPane.ERROR_MESSAGE); } StartupWindowProvider.getInstance().open(); + } finally { + WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } - WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } }.execute(); } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/OpenRecentCasePanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/OpenRecentCasePanel.java index 562579258f..ba1d1d31cf 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/OpenRecentCasePanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/OpenRecentCasePanel.java @@ -100,9 +100,9 @@ class OpenRecentCasePanel extends javax.swing.JPanel { if (casePaths.length < 1) { return; } - final String casePath = casePaths[imagesTable.getSelectedRow()]; + final String caseMetadataFilePath = casePaths[imagesTable.getSelectedRow()]; final String caseName = caseNames[imagesTable.getSelectedRow()]; - if (!casePath.isEmpty()) { + if (!caseMetadataFilePath.isEmpty()) { try { StartupWindowProvider.getInstance().close(); CueBannerPanel.closeOpenRecentCasesWindow(); @@ -113,25 +113,25 @@ class OpenRecentCasePanel extends javax.swing.JPanel { /* * Open the case. */ - if (caseName.isEmpty() || casePath.isEmpty() || (!new File(casePath).exists())) { + if (caseName.isEmpty() || caseMetadataFilePath.isEmpty() || (!new File(caseMetadataFilePath).exists())) { JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(), NbBundle.getMessage(this.getClass(), "RecentItems.openRecentCase.msgDlg.text", caseName), NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), JOptionPane.ERROR_MESSAGE); - RecentCases.getInstance().removeRecentCase(caseName, casePath); // remove the recent case if it doesn't exist anymore + RecentCases.getInstance().removeRecentCase(caseName, caseMetadataFilePath); // remove the recent case if it doesn't exist anymore StartupWindowProvider.getInstance().open(); } else { new Thread(() -> { try { - Case.openAsCurrentCase(casePath); + Case.openAsCurrentCase(caseMetadataFilePath); } catch (CaseActionException ex) { SwingUtilities.invokeLater(() -> { - if (null != ex.getCause() && !(ex.getCause() instanceof CaseActionCancelledException)) { - logger.log(Level.SEVERE, String.format("Error opening case with metadata file path %s", casePath), ex); //NON-NLS + if (!(ex instanceof CaseActionCancelledException)) { + logger.log(Level.SEVERE, String.format("Error opening case with metadata file path %s", caseMetadataFilePath), ex); //NON-NLS JOptionPane.showMessageDialog( WindowManager.getDefault().getMainWindow(), - ex.getMessage(), // Should be user-friendly - NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), //NON-NLS + ex.getMessage(), + NbBundle.getMessage(OpenRecentCasePanel.this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), //NON-NLS JOptionPane.ERROR_MESSAGE); } StartupWindowProvider.getInstance().open(); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/RecentItems.java b/Core/src/org/sleuthkit/autopsy/casemodule/RecentItems.java index b60cb3e800..5237c90487 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/RecentItems.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/RecentItems.java @@ -64,9 +64,10 @@ class RecentItems implements ActionListener { new Thread(() -> { try { Case.openAsCurrentCase(caseMetaDataFilePath); + StartupWindowProvider.getInstance().close(); } catch (CaseActionException ex) { SwingUtilities.invokeLater(() -> { - if (null != ex.getCause() && !(ex.getCause() instanceof CaseActionCancelledException)) { + if (!(ex instanceof CaseActionCancelledException)) { logger.log(Level.SEVERE, String.format("Error opening case with metadata file path %s", caseMetaDataFilePath), ex); //NON-NLS JOptionPane.showMessageDialog( WindowManager.getDefault().getMainWindow(), @@ -77,8 +78,7 @@ class RecentItems implements ActionListener { StartupWindowProvider.getInstance().open(); }); } - }). - start(); + }).start(); } } } diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestCasePanel.java b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestCasePanel.java index 20d2a989cb..9c44f701cd 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestCasePanel.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestCasePanel.java @@ -39,7 +39,9 @@ import javax.swing.SwingWorker; import javax.swing.event.ListSelectionEvent; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; +import org.openide.util.NbBundle; import org.openide.windows.WindowManager; +import org.sleuthkit.autopsy.casemodule.CaseActionCancelledException; import org.sleuthkit.autopsy.casemodule.CaseMetadata; import org.sleuthkit.autopsy.casemodule.StartupWindowProvider; import org.sleuthkit.autopsy.coreutils.Logger; @@ -295,18 +297,16 @@ public final class AutoIngestCasePanel extends JPanel { protected void done() { try { get(); - } catch (InterruptedException ex) { - logger.log(Level.SEVERE, String.format("Error while opening case with case metadata file path %s", caseMetadataFilePath), ex); - JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(), - ex.getMessage(), - org.openide.util.NbBundle.getMessage(AutoIngestCasePanel.class, "ReviewModeCasePanel.cannotOpenCase"), - JOptionPane.ERROR_MESSAGE); - } catch (ExecutionException ex) { - logger.log(Level.SEVERE, String.format("Error while opening case with case metadata file path %s", caseMetadataFilePath), ex); - JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(), - ex.getCause().getMessage(), - org.openide.util.NbBundle.getMessage(AutoIngestCasePanel.class, "ReviewModeCasePanel.cannotOpenCase"), - JOptionPane.ERROR_MESSAGE); + } catch (InterruptedException | ExecutionException ex) { + if (null != ex.getCause() && !(ex.getCause() instanceof CaseActionCancelledException)) { + logger.log(Level.SEVERE, String.format("Error opening case with metadata file path %s", caseMetadataFilePath), ex); //NON-NLS + JOptionPane.showMessageDialog( + WindowManager.getDefault().getMainWindow(), + ex.getCause().getMessage(), //get the message of the wrapped exception + NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), //NON-NLS + JOptionPane.ERROR_MESSAGE); + } + StartupWindowProvider.getInstance().open(); } finally { setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); }