From 3bfab646bcac941dfbbf34cf3667165872334687 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Tue, 30 May 2017 16:02:28 -0400 Subject: [PATCH 1/8] 2603 Delete Case enabled for multi user mode --- .../org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java index b6b11349ab..f34120443c 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java @@ -66,7 +66,7 @@ class CasePropertiesPanel extends javax.swing.JPanel { } Case.CaseType caseType = theCase.getCaseType(); caseTypeField.setText(caseType.getLocalizedDisplayName()); - deleteCaseButton.setEnabled(Case.CaseType.SINGLE_USER_CASE == caseType); + deleteCaseButton.setEnabled(true); } /** From 65f19036369191043bd6240810722b86e8c9257d Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Tue, 30 May 2017 16:03:34 -0400 Subject: [PATCH 2/8] 2603 Bug that prevents deletion progress dialog from closing fixed --- Core/src/org/sleuthkit/autopsy/casemodule/Case.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index df80cf017f..822f1a853f 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -624,7 +624,7 @@ public class Case { * First, acquire an exclusive case directory lock. The case * cannot be deleted if another node has it open. */ - progressIndicator.start(Bundle.Case_progressMessage_checkingForOtherUser()); + progressIndicator.progress(Bundle.Case_progressMessage_checkingForOtherUser()); try (CoordinationService.Lock dirLock = CoordinationService.getInstance().tryGetExclusiveLock(CategoryNode.CASES, metadata.getCaseDirectory())) { assert (null != dirLock); deleteCase(metadata, progressIndicator); From 105a00800660218430579570f66dffdf1b77f076 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Tue, 30 May 2017 17:38:27 -0400 Subject: [PATCH 3/8] 2603 Delete Case moved to Case menu from Case Properties --- .../autopsy/casemodule/Bundle.properties | 2 +- .../autopsy/casemodule/Bundle_ja.properties | 2 +- .../autopsy/casemodule/CaseDeleteAction.java | 5 ++- .../casemodule/CasePropertiesPanel.form | 27 ++---------- .../casemodule/CasePropertiesPanel.java | 27 ++---------- Core/src/org/sleuthkit/autopsy/core/layer.xml | 41 +++++++++++-------- 6 files changed, 37 insertions(+), 67 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties index b1c85a56b0..cdf46e4d8c 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties @@ -3,6 +3,7 @@ CTL_AddImageButton=Add Data Source CTL_CaseCloseAct=Close Case CTL_CaseNewAction=New Case... CTL_CasePropertiesAction=Case Properties... +CTL_CaseDeleteAction=Delete Case CTL_OpenAction=Open Case... Menu/Case/OpenRecentCase=Open Recent Case CTL_CaseDeleteAction=Delete Case @@ -235,5 +236,4 @@ CasePropertiesPanel.lbDbName.text=Database Name: CasePropertiesPanel.lbDbType.text=Case Type: CasePropertiesPanel.examinerLabel.text=Examiner: CasePropertiesPanel.caseNumberLabel.text=Case Number: -CasePropertiesPanel.deleteCaseButton.text=Delete Case LocalDiskPanel.changeDatabasePathCheckbox.text=Update case to use VHD file upon completion diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties index 60787ada8c..939c901e57 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties @@ -2,6 +2,7 @@ CTL_AddImageButton=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u8ffd\u52a0 CTL_CaseCloseAct=\u30b1\u30fc\u30b9\u3092\u9589\u3058\u308b CTL_CaseNewAction=\u65b0\u898f\u30b1\u30fc\u30b9... CTL_CasePropertiesAction=\u30b1\u30fc\u30b9\u30d7\u30ed\u30d1\u30c6\u30a3... +CTL_CaseDeleteAction=\u30b1\u30fc\u30b9\u3092\u524a\u9664 CTL_OpenAction=\u30b1\u30fc\u30b9\u3092\u958b\u304f... Menu/Case/OpenRecentCase=\u6700\u8fd1\u958b\u3044\u305f\u30b1\u30fc\u30b9\u3092\u958b\u304f CTL_CaseDeleteAction=\u30b1\u30fc\u30b9\u3092\u524a\u9664 @@ -195,4 +196,3 @@ CasePropertiesPanel.lbDbName.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\uff CasePropertiesPanel.lbDbType.text=\u30b1\u30fc\u30b9\u30bf\u30a4\u30d7\uff1a CasePropertiesPanel.examinerLabel.text=\u8abf\u67fb\u62c5\u5f53\u8005\uff1a CasePropertiesPanel.caseNumberLabel.text=\u30b1\u30fc\u30b9\u756a\u53f7\uff1a -CasePropertiesPanel.deleteCaseButton.text=\u30b1\u30fc\u30b9\u3092\u524a\u9664 diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java index 6ce1b421d5..8afe27ff85 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java @@ -19,6 +19,7 @@ package org.sleuthkit.autopsy.casemodule; import java.awt.event.ActionEvent; +import java.beans.PropertyChangeEvent; import java.util.concurrent.ExecutionException; import java.util.logging.Level; import javax.swing.Action; @@ -47,6 +48,9 @@ final class CaseDeleteAction extends CallableSystemAction { CaseDeleteAction() { putValue(Action.NAME, NbBundle.getMessage(CaseDeleteAction.class, "CTL_CaseDeleteAction")); this.setEnabled(false); + Case.addEventSubscriber(Case.Events.CURRENT_CASE.toString(), (PropertyChangeEvent evt) -> { + setEnabled(null != evt.getNewValue()); + }); } @Override @@ -98,7 +102,6 @@ final class CaseDeleteAction extends CallableSystemAction { * Close the Case Properties dialog that is the parent * of the Delete button that invokes this action. */ - CasePropertiesAction.closeCasePropertiesWindow(); StartupWindowProvider.getInstance().open(); } }.execute(); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.form index 1d46bebfbb..d373e58a6e 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.form +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.form @@ -33,12 +33,12 @@ - + - + @@ -82,10 +82,6 @@ - - - - @@ -138,9 +134,7 @@ - - - + @@ -216,21 +210,6 @@ - - - - - - - - - - - - - - - diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java index f34120443c..7a513d7261 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java @@ -21,7 +21,6 @@ package org.sleuthkit.autopsy.casemodule; import java.nio.file.Paths; import java.util.logging.Level; import org.openide.util.NbBundle; -import org.openide.util.actions.CallableSystemAction; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; @@ -66,7 +65,6 @@ class CasePropertiesPanel extends javax.swing.JPanel { } Case.CaseType caseType = theCase.getCaseType(); caseTypeField.setText(caseType.getLocalizedDisplayName()); - deleteCaseButton.setEnabled(true); } /** @@ -95,7 +93,6 @@ class CasePropertiesPanel extends javax.swing.JPanel { caseDirLabel = new javax.swing.JLabel(); caseNameTextField = new javax.swing.JTextField(); updateCaseNameButton = new javax.swing.JButton(); - deleteCaseButton = new javax.swing.JButton(); caseNumberLabel = new javax.swing.JLabel(); examinerLabel = new javax.swing.JLabel(); lbDbType = new javax.swing.JLabel(); @@ -131,14 +128,6 @@ class CasePropertiesPanel extends javax.swing.JPanel { } }); - deleteCaseButton.setFont(deleteCaseButton.getFont().deriveFont(deleteCaseButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11)); - deleteCaseButton.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.deleteCaseButton.text")); // NOI18N - deleteCaseButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - deleteCaseButtonActionPerformed(evt); - } - }); - caseNumberLabel.setFont(caseNumberLabel.getFont().deriveFont(caseNumberLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11)); caseNumberLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseNumberLabel.text")); // NOI18N @@ -187,10 +176,7 @@ class CasePropertiesPanel extends javax.swing.JPanel { .addComponent(caseNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(updateCaseNameButton, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(crDateField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(deleteCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(crDateField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) .addContainerGap()) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() @@ -230,9 +216,7 @@ class CasePropertiesPanel extends javax.swing.JPanel { .addComponent(lbDbName) .addComponent(dbNameField, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(caseNumberLabel)) - .addGap(10, 10, 10) - .addComponent(deleteCaseButton) - .addContainerGap()) + .addGap(44, 44, 44)) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() @@ -248,7 +232,7 @@ class CasePropertiesPanel extends javax.swing.JPanel { ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE) ); }// //GEN-END:initComponents @@ -285,10 +269,6 @@ class CasePropertiesPanel extends javax.swing.JPanel { } }//GEN-LAST:event_updateCaseNameButtonActionPerformed - private void deleteCaseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteCaseButtonActionPerformed - CallableSystemAction.get(CaseDeleteAction.class).actionPerformed(evt); - }//GEN-LAST:event_deleteCaseButtonActionPerformed - // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel caseDirField; @@ -301,7 +281,6 @@ class CasePropertiesPanel extends javax.swing.JPanel { private javax.swing.JLabel crDateField; private javax.swing.JLabel crDateLabel; private javax.swing.JLabel dbNameField; - private javax.swing.JButton deleteCaseButton; private javax.swing.JLabel examinerField; private javax.swing.JLabel examinerLabel; private javax.swing.JPanel jPanel1; diff --git a/Core/src/org/sleuthkit/autopsy/core/layer.xml b/Core/src/org/sleuthkit/autopsy/core/layer.xml index 36c3e09c1e..2ea0edba9d 100644 --- a/Core/src/org/sleuthkit/autopsy/core/layer.xml +++ b/Core/src/org/sleuthkit/autopsy/core/layer.xml @@ -3,8 +3,8 @@ + General + ====================================================== --> @@ -36,8 +36,8 @@ + Actions + ====================================================== --> @@ -48,6 +48,7 @@ + @@ -132,15 +133,15 @@ - + + Menu + ====================================================== --> @@ -186,6 +187,14 @@ + + + + + + + + @@ -279,8 +288,8 @@ + Services + ====================================================== --> @@ -298,7 +307,7 @@ - + @@ -356,8 +365,8 @@ + Toolbars + ====================================================== --> @@ -408,8 +417,8 @@ + Shortcuts + ====================================================== --> @@ -422,8 +431,8 @@ + Windows2 + ====================================================== --> From 098de26294df0a9f223a15d07e5e0fc98ee71d4d Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Wed, 31 May 2017 11:00:51 -0400 Subject: [PATCH 4/8] 2603 fix order of Case menu --- Core/src/org/sleuthkit/autopsy/core/layer.xml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/core/layer.xml b/Core/src/org/sleuthkit/autopsy/core/layer.xml index 2ea0edba9d..a5ff7f3ecb 100644 --- a/Core/src/org/sleuthkit/autopsy/core/layer.xml +++ b/Core/src/org/sleuthkit/autopsy/core/layer.xml @@ -167,6 +167,10 @@ + + + + @@ -187,14 +191,6 @@ - - - - - - - - From e23191f375738d87555319793eb20302d2ad30b8 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Wed, 31 May 2017 18:26:13 -0400 Subject: [PATCH 5/8] 2603 refactor SelectedMode from AutoIngestUserPreferences to UserPreferences --- .../autopsy/core/UserPreferences.java | 43 +++++- .../autoingest/AutoIngestCaseOpenAction.java | 4 +- .../autoingest/CaseImportPanel.java | 1 - .../AutoIngestSettingsPanel.java | 14 +- .../AutoIngestUserPreferences.java | 131 +++++++----------- .../configuration/SharedConfiguration.java | 2 +- .../configuration/StartupWindow.java | 3 +- 7 files changed, 104 insertions(+), 94 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java index 0599891da6..ac6c9f8da5 100755 --- a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java +++ b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java @@ -30,6 +30,7 @@ import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; import org.openide.util.NbBundle; import org.openide.util.NbPreferences; +import org.sleuthkit.autopsy.coreutils.ModuleSettings; import org.sleuthkit.autopsy.coreutils.PlatformUtil; import org.sleuthkit.datamodel.CaseDbConnectionInfo; import org.sleuthkit.datamodel.TskData.DbType; @@ -68,11 +69,42 @@ public final class UserPreferences { private static final String DEFAULT_PORT_STRING = "61616"; private static final int DEFAULT_PORT_INT = 61616; private static final String APP_NAME = "AppName"; + public static final String SETTINGS_PROPERTIES = "AutoIngest"; + private static final String MODE = "AutopsyMode"; // NON-NLS // Prevent instantiation. private UserPreferences() { } + public enum SelectedMode { + + STANDALONE, + AUTOMATED, + REVIEW + }; + + /** + * Get mode from persistent storage. + * + * @return SelectedMode Selected mode. + */ + public static UserPreferences.SelectedMode getMode() { + if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, MODE)) { + int ordinal = Integer.parseInt(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, MODE)); + return UserPreferences.SelectedMode.values()[ordinal]; + } + return UserPreferences.SelectedMode.STANDALONE; + } + + /** + * Set mode to persistent storage. + * + * @param mode Selected mode. + */ + public static void setMode(UserPreferences.SelectedMode mode) { + ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, MODE, Integer.toString(mode.ordinal())); + } + /** * Reload all preferences from disk. This is only needed if the preferences * file is being directly modified on disk while Autopsy is running. @@ -160,7 +192,9 @@ public final class UserPreferences { /** * Reads persisted case database connection info. + * * @return An object encapsulating the database connection info. + * * @throws org.sleuthkit.autopsy.core.UserPreferencesException */ public static CaseDbConnectionInfo getDatabaseConnectionInfo() throws UserPreferencesException { @@ -183,6 +217,7 @@ public final class UserPreferences { * * @param connectionInfo An object encapsulating the database connection * info. + * * @throws org.sleuthkit.autopsy.core.UserPreferencesException */ public static void setDatabaseConnectionInfo(CaseDbConnectionInfo connectionInfo) throws UserPreferencesException { @@ -224,6 +259,7 @@ public final class UserPreferences { * Persists message service connection info. * * @param info An object encapsulating the message service info. + * * @throws org.sleuthkit.autopsy.core.UserPreferencesException */ public static void setMessageServiceConnectionInfo(MessageServiceConnectionInfo info) throws UserPreferencesException { @@ -237,6 +273,7 @@ public final class UserPreferences { * Reads persisted message service connection info. * * @return An object encapsulating the message service info. + * * @throws org.sleuthkit.autopsy.core.UserPreferencesException */ public static MessageServiceConnectionInfo getMessageServiceConnectionInfo() throws UserPreferencesException { @@ -305,9 +342,10 @@ public final class UserPreferences { /** * Get the display name for this program + * * @return Name of this program */ - public static String getAppName(){ + public static String getAppName() { return preferences.get(APP_NAME, "Autopsy"); } @@ -316,11 +354,10 @@ public final class UserPreferences { * * @param name Display name */ - public static void setAppName(String name){ + public static void setAppName(String name) { preferences.put(APP_NAME, name); } - /** * Provides ability to convert text to hex text. */ diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestCaseOpenAction.java b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestCaseOpenAction.java index aec567641d..dca1348b8a 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestCaseOpenAction.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestCaseOpenAction.java @@ -31,7 +31,7 @@ import org.sleuthkit.autopsy.casemodule.CaseOpenAction; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.StartupWindowProvider; -import org.sleuthkit.autopsy.experimental.configuration.AutoIngestUserPreferences; +import org.sleuthkit.autopsy.core.UserPreferences; final class AutoIngestCaseOpenAction extends CallableSystemAction implements ActionListener { @@ -44,7 +44,7 @@ final class AutoIngestCaseOpenAction extends CallableSystemAction implements Act @Override public void actionPerformed(ActionEvent e) { - AutoIngestUserPreferences.SelectedMode mode = AutoIngestUserPreferences.getMode(); + UserPreferences.SelectedMode mode = UserPreferences.getMode(); switch (mode) { case REVIEW: diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/CaseImportPanel.java b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/CaseImportPanel.java index 34c361b3c6..a7cd13af72 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/CaseImportPanel.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/CaseImportPanel.java @@ -39,7 +39,6 @@ import org.sleuthkit.datamodel.SleuthkitCase; import org.sleuthkit.datamodel.TskCoreException; import java.util.logging.Level; import org.sleuthkit.autopsy.experimental.configuration.AutoIngestUserPreferences; -import static org.sleuthkit.autopsy.experimental.configuration.AutoIngestUserPreferences.SelectedMode.AUTOMATED; /** * This panel shows up in a tab pane next to the copy files panel for the diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestSettingsPanel.java b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestSettingsPanel.java index 149e9c6130..7de26e5d95 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestSettingsPanel.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestSettingsPanel.java @@ -125,7 +125,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel { cbJoinAutoIngestCluster.setEnabled(UserPreferences.getIsMultiUserModeEnabled()); if (inStartup) { - AutoIngestUserPreferences.SelectedMode storedMode = AutoIngestUserPreferences.getMode(); + UserPreferences.SelectedMode storedMode = UserPreferences.getMode(); inputPathTextField.requestFocusInWindow(); if (null != storedMode) { switch (storedMode) { @@ -207,7 +207,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel { */ void store() { boolean needsRestart = false; - AutoIngestUserPreferences.SelectedMode storedMode = AutoIngestUserPreferences.getMode(); + UserPreferences.SelectedMode storedMode = UserPreferences.getMode(); if (AutoIngestUserPreferences.getJoinAutoModeCluster() != cbJoinAutoIngestCluster.isSelected()) { needsRestart = true; @@ -215,7 +215,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel { AutoIngestUserPreferences.setJoinAutoModeCluster(cbJoinAutoIngestCluster.isSelected()); if (!cbJoinAutoIngestCluster.isSelected()) { - AutoIngestUserPreferences.setMode(AutoIngestUserPreferences.SelectedMode.STANDALONE); + UserPreferences.setMode(UserPreferences.SelectedMode.STANDALONE); //before return popup the message if (needsRestart) { SwingUtilities.invokeLater(() -> { @@ -229,7 +229,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel { } if (jRadioButtonAutomated.isSelected()) { - if (storedMode != AutoIngestUserPreferences.SelectedMode.AUTOMATED) { + if (storedMode != UserPreferences.SelectedMode.AUTOMATED) { needsRestart = true; } String thePath = AutoIngestUserPreferences.getAutoModeImageFolder(); @@ -241,7 +241,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel { needsRestart = true; } - AutoIngestUserPreferences.setMode(AutoIngestUserPreferences.SelectedMode.AUTOMATED); + UserPreferences.setMode(UserPreferences.SelectedMode.AUTOMATED); String imageFolderPath = getNormalizedFolderPath(inputPathTextField.getText().trim()); AutoIngestUserPreferences.setAutoModeImageFolder(imageFolderPath); String resultsFolderPath = getNormalizedFolderPath(outputPathTextField.getText().trim()); @@ -253,7 +253,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel { AutoIngestUserPreferences.setSharedConfigMaster(masterNodeCheckBox.isSelected()); } } else if (jRadioButtonReview.isSelected()) { - if (storedMode != AutoIngestUserPreferences.SelectedMode.REVIEW) { + if (storedMode != UserPreferences.SelectedMode.REVIEW) { needsRestart = true; } String thePath = AutoIngestUserPreferences.getAutoModeResultsFolder(); @@ -261,7 +261,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel { needsRestart = true; } - AutoIngestUserPreferences.setMode(AutoIngestUserPreferences.SelectedMode.REVIEW); + UserPreferences.setMode(UserPreferences.SelectedMode.REVIEW); String resultsFolderPath = getNormalizedFolderPath(outputPathTextField.getText().trim()); AutoIngestUserPreferences.setAutoModeResultsFolder(resultsFolderPath); } diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestUserPreferences.java b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestUserPreferences.java index 56b2d844ce..57856c6997 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestUserPreferences.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestUserPreferences.java @@ -24,6 +24,7 @@ import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; +import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.core.UserPreferencesException; import org.sleuthkit.autopsy.coreutils.ModuleSettings; @@ -34,15 +35,8 @@ import org.sleuthkit.autopsy.coreutils.ModuleSettings; public final class AutoIngestUserPreferences { - public enum SelectedMode { - STANDALONE, - AUTOMATED, - REVIEW - }; - private static final String SETTINGS_PROPERTIES = "AutoIngest"; - private static final String MODE = "AutopsyMode"; // NON-NLS private static final String JOIN_AUTO_MODE_CLUSTER = "JoinAutoModeCluster"; // NON-NLS private static final String AUTO_MODE_IMAGES_FOLDER = "AutoModeImageFolder"; // NON-NLS private static final String AUTO_MODE_RESULTS_FOLDER = "AutoModeResultsFolder"; // NON-NLS @@ -66,27 +60,6 @@ public final class AutoIngestUserPreferences { private AutoIngestUserPreferences() { } - /** - * Get mode from persistent storage. - * - * @return SelectedMode Selected mode. - */ - public static SelectedMode getMode() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, MODE)) { - int ordinal = Integer.parseInt(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, MODE)); - return SelectedMode.values()[ordinal]; - } - return SelectedMode.STANDALONE; - } - - /** - * Set mode to persistent storage. - * - * @param mode Selected mode. - */ - public static void setMode(SelectedMode mode) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, MODE, Integer.toString(mode.ordinal())); - } /** * Get "Join Automated Ingest Cluster" setting from persistent storage. @@ -94,8 +67,8 @@ public final class AutoIngestUserPreferences { * @return SelectedMode Selected setting. */ public static boolean getJoinAutoModeCluster() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, JOIN_AUTO_MODE_CLUSTER)) { - return Boolean.parseBoolean(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, JOIN_AUTO_MODE_CLUSTER)); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, JOIN_AUTO_MODE_CLUSTER)) { + return Boolean.parseBoolean(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, JOIN_AUTO_MODE_CLUSTER)); } return false; } @@ -106,7 +79,7 @@ public final class AutoIngestUserPreferences { * @param join boolean value of whether to join auto ingest cluster or not */ public static void setJoinAutoModeCluster(boolean join) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, JOIN_AUTO_MODE_CLUSTER, Boolean.toString(join)); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, JOIN_AUTO_MODE_CLUSTER, Boolean.toString(join)); } /** @@ -115,8 +88,8 @@ public final class AutoIngestUserPreferences { * @return String Selected input folder. */ public static String getAutoModeImageFolder() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, AUTO_MODE_IMAGES_FOLDER)) { - return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, AUTO_MODE_IMAGES_FOLDER); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, AUTO_MODE_IMAGES_FOLDER)) { + return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, AUTO_MODE_IMAGES_FOLDER); } return ""; } @@ -127,7 +100,7 @@ public final class AutoIngestUserPreferences { * @param folder Selected input folder. */ public static void setAutoModeImageFolder(String folder) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, AUTO_MODE_IMAGES_FOLDER, folder); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, AUTO_MODE_IMAGES_FOLDER, folder); } /** @@ -136,8 +109,8 @@ public final class AutoIngestUserPreferences { * @return String Selected output folder. */ public static String getAutoModeResultsFolder() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, AUTO_MODE_RESULTS_FOLDER)) { - return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, AUTO_MODE_RESULTS_FOLDER); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, AUTO_MODE_RESULTS_FOLDER)) { + return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, AUTO_MODE_RESULTS_FOLDER); } return ""; } @@ -148,7 +121,7 @@ public final class AutoIngestUserPreferences { * @param folder Selected output folder. */ public static void setAutoModeResultsFolder(String folder) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, AUTO_MODE_RESULTS_FOLDER, folder); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, AUTO_MODE_RESULTS_FOLDER, folder); } /** @@ -158,8 +131,8 @@ public final class AutoIngestUserPreferences { * @return String Selected settings folder. */ public static String getSharedConfigFolder() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, SHARED_CONFIG_FOLDER)) { - return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, SHARED_CONFIG_FOLDER); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_FOLDER)) { + return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_FOLDER); } return ""; } @@ -169,7 +142,7 @@ public final class AutoIngestUserPreferences { * storage. */ public static void setSharedConfigFolder(String folder) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, SHARED_CONFIG_FOLDER, folder); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_FOLDER, folder); } /** @@ -179,8 +152,8 @@ public final class AutoIngestUserPreferences { * @return Boolean true if shared settings are enabled. */ public static Boolean getSharedConfigEnabled() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, SHARED_CONFIG_ENABLED)) { - return Boolean.parseBoolean(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, SHARED_CONFIG_ENABLED)); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_ENABLED)) { + return Boolean.parseBoolean(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_ENABLED)); } return false; } @@ -193,7 +166,7 @@ public final class AutoIngestUserPreferences { * mode */ public static void setSharedConfigEnabled(boolean sharedSettingsEnabled) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, SHARED_CONFIG_ENABLED, Boolean.toString(sharedSettingsEnabled)); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_ENABLED, Boolean.toString(sharedSettingsEnabled)); } /** @@ -203,8 +176,8 @@ public final class AutoIngestUserPreferences { * @return true if this node is set as a shared configuration master */ public static Boolean getSharedConfigMaster() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, SHARED_CONFIG_MASTER)) { - return Boolean.parseBoolean(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, SHARED_CONFIG_MASTER)); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_MASTER)) { + return Boolean.parseBoolean(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_MASTER)); } return false; } @@ -215,7 +188,7 @@ public final class AutoIngestUserPreferences { * @param sharedSettingsMaster true = this node can upload configuration */ public static void setSharedConfigMaster(boolean sharedSettingsMaster) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, SHARED_CONFIG_MASTER, Boolean.toString(sharedSettingsMaster)); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_MASTER, Boolean.toString(sharedSettingsMaster)); } /** @@ -234,7 +207,7 @@ public final class AutoIngestUserPreferences { * @param showToolsWarning true = show warning dialog, false = don't show */ public static void setShowToolsWarning(boolean showToolsWarning) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, SHOW_TOOLS_WARNING, Boolean.toString(showToolsWarning)); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHOW_TOOLS_WARNING, Boolean.toString(showToolsWarning)); } /** @@ -243,8 +216,8 @@ public final class AutoIngestUserPreferences { * @return */ public static boolean getShowToolsWarning() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, SHOW_TOOLS_WARNING)) { - return Boolean.parseBoolean(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, SHOW_TOOLS_WARNING)); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, SHOW_TOOLS_WARNING)) { + return Boolean.parseBoolean(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHOW_TOOLS_WARNING)); } return true; } @@ -256,8 +229,8 @@ public final class AutoIngestUserPreferences { * @return int the value in seconds, default is 30 seconds. */ public static int getSecondsToSleepBetweenCases() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, SLEEP_BETWEEN_CASES_TIME)) { - return Integer.parseInt(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, SLEEP_BETWEEN_CASES_TIME)); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, SLEEP_BETWEEN_CASES_TIME)) { + return Integer.parseInt(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SLEEP_BETWEEN_CASES_TIME)); } return 30; } @@ -271,7 +244,7 @@ public final class AutoIngestUserPreferences { * @param value value the number of seconds to sleep between cases */ public static void setSecondsToSleepBetweenCases(int value) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, SLEEP_BETWEEN_CASES_TIME, Integer.toString(value)); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SLEEP_BETWEEN_CASES_TIME, Integer.toString(value)); } /** @@ -282,8 +255,8 @@ public final class AutoIngestUserPreferences { * @return int maximum number of attempts, default is 2. */ public static int getMaxNumTimesToProcessImage() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, MAX_NUM_TIMES_TO_PROCESS_IMAGE)) { - return Integer.parseInt(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, MAX_NUM_TIMES_TO_PROCESS_IMAGE)); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, MAX_NUM_TIMES_TO_PROCESS_IMAGE)) { + return Integer.parseInt(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, MAX_NUM_TIMES_TO_PROCESS_IMAGE)); } return 2; } @@ -296,7 +269,7 @@ public final class AutoIngestUserPreferences { * @param retries the number of retries to allow */ public static void setMaxNumTimesToProcessImage(int retries) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, MAX_NUM_TIMES_TO_PROCESS_IMAGE, Integer.toString(retries)); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, MAX_NUM_TIMES_TO_PROCESS_IMAGE, Integer.toString(retries)); } /** @@ -306,8 +279,8 @@ public final class AutoIngestUserPreferences { * @return maximum number of concurrent nodes for one case. Default is 3. */ public static int getMaxConcurrentJobsForOneCase() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, MAX_CONCURRENT_NODES_FOR_ONE_CASE)) { - return Integer.parseInt(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, MAX_CONCURRENT_NODES_FOR_ONE_CASE)); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, MAX_CONCURRENT_NODES_FOR_ONE_CASE)) { + return Integer.parseInt(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, MAX_CONCURRENT_NODES_FOR_ONE_CASE)); } return 3; } @@ -319,7 +292,7 @@ public final class AutoIngestUserPreferences { * @param numberOfNodes the number of concurrent nodes to allow for one case */ public static void setMaxConcurrentIngestNodesForOneCase(int numberOfNodes) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, MAX_CONCURRENT_NODES_FOR_ONE_CASE, Integer.toString(numberOfNodes)); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, MAX_CONCURRENT_NODES_FOR_ONE_CASE, Integer.toString(numberOfNodes)); } /** @@ -329,8 +302,8 @@ public final class AutoIngestUserPreferences { * @return Boolean true if database logging is enabled. */ public static Boolean getStatusDatabaseLoggingEnabled() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, STATUS_DATABASE_LOGGING_ENABLED)) { - return Boolean.parseBoolean(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, STATUS_DATABASE_LOGGING_ENABLED)); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, STATUS_DATABASE_LOGGING_ENABLED)) { + return Boolean.parseBoolean(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, STATUS_DATABASE_LOGGING_ENABLED)); } return false; } @@ -343,7 +316,7 @@ public final class AutoIngestUserPreferences { * mode */ public static void setStatusDatabaseLoggingEnabled(boolean databaseLoggingEnabled) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, STATUS_DATABASE_LOGGING_ENABLED, Boolean.toString(databaseLoggingEnabled)); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, STATUS_DATABASE_LOGGING_ENABLED, Boolean.toString(databaseLoggingEnabled)); } /** @@ -352,8 +325,8 @@ public final class AutoIngestUserPreferences { * @return Logging database hostname or IP */ public static String getLoggingDatabaseHostnameOrIP() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, LOGGING_DB_HOSTNAME_OR_IP)) { - return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, LOGGING_DB_HOSTNAME_OR_IP); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, LOGGING_DB_HOSTNAME_OR_IP)) { + return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_DB_HOSTNAME_OR_IP); } return ""; } @@ -364,7 +337,7 @@ public final class AutoIngestUserPreferences { * @param hostname Logging database hostname or IP */ public static void setLoggingDatabaseHostnameOrIP(String hostname) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, LOGGING_DB_HOSTNAME_OR_IP, hostname); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_DB_HOSTNAME_OR_IP, hostname); } /** @@ -373,8 +346,8 @@ public final class AutoIngestUserPreferences { * @return logging database port */ public static String getLoggingPort() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, LOGGING_PORT)) { - return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, LOGGING_PORT); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PORT)) { + return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PORT); } return ""; } @@ -385,7 +358,7 @@ public final class AutoIngestUserPreferences { * @param port Logging database port */ public static void setLoggingPort(String port) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, LOGGING_PORT, port); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PORT, port); } /** @@ -394,8 +367,8 @@ public final class AutoIngestUserPreferences { * @return logging database username */ public static String getLoggingUsername() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, LOGGING_USERNAME)) { - return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, LOGGING_USERNAME); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, LOGGING_USERNAME)) { + return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_USERNAME); } return ""; } @@ -406,7 +379,7 @@ public final class AutoIngestUserPreferences { * @param username Logging database username */ public static void setLoggingUsername(String username) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, LOGGING_USERNAME, username); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_USERNAME, username); } /** @@ -415,8 +388,8 @@ public final class AutoIngestUserPreferences { * @return logging database password */ public static String getLoggingPassword() throws UserPreferencesException { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, LOGGING_PASSWORD)) { - return TextConverter.convertHexTextToText(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, LOGGING_PASSWORD)); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PASSWORD)) { + return TextConverter.convertHexTextToText(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PASSWORD)); } return ""; } @@ -427,7 +400,7 @@ public final class AutoIngestUserPreferences { * @param password Logging database password */ public static void setLoggingPassword(String password) throws UserPreferencesException { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, LOGGING_PASSWORD, TextConverter.convertTextToHexText(password)); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PASSWORD, TextConverter.convertTextToHexText(password)); } /** @@ -436,8 +409,8 @@ public final class AutoIngestUserPreferences { * @return logging database name */ public static String getLoggingDatabaseName() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, LOGGING_DATABASE_NAME)) { - return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, LOGGING_DATABASE_NAME); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, LOGGING_DATABASE_NAME)) { + return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_DATABASE_NAME); } return ""; } @@ -448,7 +421,7 @@ public final class AutoIngestUserPreferences { * @param name Logging database name */ public static void setLoggingDatabaseName(String name) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, LOGGING_DATABASE_NAME, name); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_DATABASE_NAME, name); } /** @@ -457,8 +430,8 @@ public final class AutoIngestUserPreferences { * @return int the value in minutes, default is 60 minutes. */ public static int getMinutesOfInputScanInterval() { - if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, INPUT_SCAN_INTERVAL_TIME)) { - return Integer.parseInt(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, INPUT_SCAN_INTERVAL_TIME)); + if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, INPUT_SCAN_INTERVAL_TIME)) { + return Integer.parseInt(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, INPUT_SCAN_INTERVAL_TIME)); } return 60; } @@ -469,7 +442,7 @@ public final class AutoIngestUserPreferences { * @param value the number of minutes for input interval */ public static void setMinutesOfInputScanInterval(int value) { - ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, INPUT_SCAN_INTERVAL_TIME, Integer.toString(value)); + ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, INPUT_SCAN_INTERVAL_TIME, Integer.toString(value)); } /** diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/SharedConfiguration.java b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/SharedConfiguration.java index 227c203177..773c4db4f2 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/SharedConfiguration.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/SharedConfiguration.java @@ -92,7 +92,7 @@ public class SharedConfiguration { private static final Logger logger = Logger.getLogger(SharedConfiguration.class.getName()); private final UpdateConfigSwingWorker swingWorker; - private AutoIngestUserPreferences.SelectedMode mode; + private UserPreferences.SelectedMode mode; private String sharedConfigFolder; private int fileIngestThreads; private boolean sharedConfigMaster; diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/StartupWindow.java b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/StartupWindow.java index ce76b1eea1..a4a4b06849 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/StartupWindow.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/StartupWindow.java @@ -33,6 +33,7 @@ import org.openide.util.lookup.ServiceProvider; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.CueBannerPanel; import org.sleuthkit.autopsy.casemodule.StartupWindowInterface; +import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.NetworkUtils; import org.sleuthkit.autopsy.experimental.autoingest.AutoIngestDashboard; import org.sleuthkit.autopsy.experimental.autoingest.AutoIngestCasePanel; @@ -103,7 +104,7 @@ public final class StartupWindow extends JDialog implements StartupWindowInterfa * user. */ private void addPanelForMode() { - AutoIngestUserPreferences.SelectedMode mode = AutoIngestUserPreferences.getMode(); + UserPreferences.SelectedMode mode = UserPreferences.getMode(); switch (mode) { case AUTOMATED: From 4aca751dba434b0d31e171ba138f7955924fd3c4 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Wed, 31 May 2017 18:26:57 -0400 Subject: [PATCH 6/8] 2603 disable deleting of cases when in SelectedMode.Examiner only --- .../src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java index 8afe27ff85..6e7d979a80 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java @@ -32,6 +32,7 @@ import org.openide.util.HelpCtx; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; import org.openide.util.actions.CallableSystemAction; +import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; /** @@ -49,7 +50,7 @@ final class CaseDeleteAction extends CallableSystemAction { putValue(Action.NAME, NbBundle.getMessage(CaseDeleteAction.class, "CTL_CaseDeleteAction")); this.setEnabled(false); Case.addEventSubscriber(Case.Events.CURRENT_CASE.toString(), (PropertyChangeEvent evt) -> { - setEnabled(null != evt.getNewValue()); + setEnabled(null != evt.getNewValue() && UserPreferences.getMode() != UserPreferences.SelectedMode.REVIEW); }); } From 75a970fa61e8ab24336610b35694aa2480f9e4cf Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 1 Jun 2017 11:32:22 -0400 Subject: [PATCH 7/8] 2603 rename SelectedMode.AUTOMATED to SelectedMode.AUTOINGEST --- .../autopsy/core/UserPreferences.java | 6 +-- .../autoingest/AutoIngestCaseOpenAction.java | 2 +- .../AutoIngestSettingsPanel.java | 6 +-- .../AutoIngestUserPreferences.java | 40 +++++++++---------- .../configuration/StartupWindow.java | 2 +- 5 files changed, 27 insertions(+), 29 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java index ac6c9f8da5..f251f38aaf 100755 --- a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java +++ b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java @@ -79,7 +79,7 @@ public final class UserPreferences { public enum SelectedMode { STANDALONE, - AUTOMATED, + AUTOINGEST, REVIEW }; @@ -88,7 +88,7 @@ public final class UserPreferences { * * @return SelectedMode Selected mode. */ - public static UserPreferences.SelectedMode getMode() { + public static SelectedMode getMode() { if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, MODE)) { int ordinal = Integer.parseInt(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, MODE)); return UserPreferences.SelectedMode.values()[ordinal]; @@ -101,7 +101,7 @@ public final class UserPreferences { * * @param mode Selected mode. */ - public static void setMode(UserPreferences.SelectedMode mode) { + public static void setMode(SelectedMode mode) { ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, MODE, Integer.toString(mode.ordinal())); } diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestCaseOpenAction.java b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestCaseOpenAction.java index dca1348b8a..e86a7bcf8a 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestCaseOpenAction.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestCaseOpenAction.java @@ -63,7 +63,7 @@ final class AutoIngestCaseOpenAction extends CallableSystemAction implements Act } break; - case AUTOMATED: + case AUTOINGEST: /* * New case action is disabled in auto ingest mode. */ diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestSettingsPanel.java b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestSettingsPanel.java index 7de26e5d95..17a1c9847a 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestSettingsPanel.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestSettingsPanel.java @@ -133,7 +133,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel { jRadioButtonReview.setSelected(true); enableOptionsBasedOnMode(OptionsUiMode.REVIEW); break; - case AUTOMATED: + case AUTOINGEST: jRadioButtonAutomated.setSelected(true); enableOptionsBasedOnMode(OptionsUiMode.AIM); break; @@ -229,7 +229,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel { } if (jRadioButtonAutomated.isSelected()) { - if (storedMode != UserPreferences.SelectedMode.AUTOMATED) { + if (storedMode != UserPreferences.SelectedMode.AUTOINGEST) { needsRestart = true; } String thePath = AutoIngestUserPreferences.getAutoModeImageFolder(); @@ -241,7 +241,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel { needsRestart = true; } - UserPreferences.setMode(UserPreferences.SelectedMode.AUTOMATED); + UserPreferences.setMode(UserPreferences.SelectedMode.AUTOINGEST); String imageFolderPath = getNormalizedFolderPath(inputPathTextField.getText().trim()); AutoIngestUserPreferences.setAutoModeImageFolder(imageFolderPath); String resultsFolderPath = getNormalizedFolderPath(outputPathTextField.getText().trim()); diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestUserPreferences.java b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestUserPreferences.java index 57856c6997..e5548f250e 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestUserPreferences.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestUserPreferences.java @@ -29,14 +29,11 @@ import org.sleuthkit.autopsy.core.UserPreferencesException; import org.sleuthkit.autopsy.coreutils.ModuleSettings; /** - * Provides convenient access to a Preferences node for auto ingest user preferences - * with default values. + * Provides convenient access to a Preferences node for auto ingest user + * preferences with default values. */ public final class AutoIngestUserPreferences { - - - private static final String JOIN_AUTO_MODE_CLUSTER = "JoinAutoModeCluster"; // NON-NLS private static final String AUTO_MODE_IMAGES_FOLDER = "AutoModeImageFolder"; // NON-NLS private static final String AUTO_MODE_RESULTS_FOLDER = "AutoModeResultsFolder"; // NON-NLS @@ -60,8 +57,7 @@ public final class AutoIngestUserPreferences { private AutoIngestUserPreferences() { } - - /** + /** * Get "Join Automated Ingest Cluster" setting from persistent storage. * * @return SelectedMode Selected setting. @@ -81,7 +77,7 @@ public final class AutoIngestUserPreferences { public static void setJoinAutoModeCluster(boolean join) { ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, JOIN_AUTO_MODE_CLUSTER, Boolean.toString(join)); } - + /** * Get input folder for automated mode from persistent storage. * @@ -125,8 +121,7 @@ public final class AutoIngestUserPreferences { } /** - * Get shared config folder for automated mode from persistent - * storage. + * Get shared config folder for automated mode from persistent storage. * * @return String Selected settings folder. */ @@ -138,16 +133,17 @@ public final class AutoIngestUserPreferences { } /** - * Set shared config folder for automated mode from persistent - * storage. + * Set shared config folder for automated mode from persistent storage. + * + * @param folder the folder which contains the shared configF */ public static void setSharedConfigFolder(String folder) { ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_FOLDER, folder); } /** - * Get shared config checkbox state for automated mode from - * persistent storage. + * Get shared config checkbox state for automated mode from persistent + * storage. * * @return Boolean true if shared settings are enabled. */ @@ -194,8 +190,7 @@ public final class AutoIngestUserPreferences { /** * Get context string for automated mode ingest module settings. * - * @return String Context string for automated mode ingest module - * settings. + * @return String Context string for automated mode ingest module settings. */ public static String getAutoModeIngestModuleContextString() { return AUTO_MODE_CONTEXT_STRING; @@ -223,8 +218,7 @@ public final class AutoIngestUserPreferences { } /** - * Get the configured time to sleep between cases to prevent - * database locks + * Get the configured time to sleep between cases to prevent database locks * * @return int the value in seconds, default is 30 seconds. */ @@ -386,6 +380,8 @@ public final class AutoIngestUserPreferences { * Get the logging database password from persistent storage. * * @return logging database password + * + * @throws org.sleuthkit.autopsy.core.UserPreferencesException */ public static String getLoggingPassword() throws UserPreferencesException { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PASSWORD)) { @@ -398,6 +394,8 @@ public final class AutoIngestUserPreferences { * Save the logging database password to persistent storage. * * @param password Logging database password + * + * @throws org.sleuthkit.autopsy.core.UserPreferencesException */ public static void setLoggingPassword(String password) throws UserPreferencesException { ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PASSWORD, TextConverter.convertTextToHexText(password)); @@ -444,10 +442,10 @@ public final class AutoIngestUserPreferences { public static void setMinutesOfInputScanInterval(int value) { ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, INPUT_SCAN_INTERVAL_TIME, Integer.toString(value)); } - + /** - * Copied from Autopsy UserPreferences - can be removed once everything is merged together. - * Provides ability to convert text to hex text. + * Copied from Autopsy UserPreferences - can be removed once everything is + * merged together. Provides ability to convert text to hex text. */ static final class TextConverter { diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/StartupWindow.java b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/StartupWindow.java index a4a4b06849..e0cae099c9 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/StartupWindow.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/StartupWindow.java @@ -107,7 +107,7 @@ public final class StartupWindow extends JDialog implements StartupWindowInterfa UserPreferences.SelectedMode mode = UserPreferences.getMode(); switch (mode) { - case AUTOMATED: + case AUTOINGEST: this.setTitle(NbBundle.getMessage(StartupWindow.class, "StartupWindow.AutoIngestMode") + " (" + LOCAL_HOST_NAME + ")"); setIconImage(ImageUtilities.loadImage("org/sleuthkit/autopsy/experimental/images/frame.gif", false)); //NON-NLS this.addWindowListener(new WindowAdapter() { From 7ecc927ea11c4cb1a6ea9b61bec763916a50ccb8 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Mon, 5 Jun 2017 14:07:57 -0400 Subject: [PATCH 8/8] 2603 adjusted comment and removed un-used method --- .../org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java | 3 +-- .../sleuthkit/autopsy/casemodule/CasePropertiesAction.java | 7 ------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java index 6e7d979a80..2df3bfcc33 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java @@ -100,8 +100,7 @@ final class CaseDeleteAction extends CallableSystemAction { JOptionPane.ERROR_MESSAGE); } /* - * Close the Case Properties dialog that is the parent - * of the Delete button that invokes this action. + * Re-open the startup window. */ StartupWindowProvider.getInstance().open(); } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesAction.java index 451a377a2f..7cd6a93b10 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesAction.java @@ -79,11 +79,4 @@ final class CasePropertiesAction extends CallableSystemAction { public HelpCtx getHelpCtx() { return HelpCtx.DEFAULT_HELP; } - - static void closeCasePropertiesWindow() { - if (null != casePropertiesDialog) { - casePropertiesDialog.setVisible(false); - casePropertiesDialog = null; - } - } }