diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties b/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties index 28d381ebd3..3645ac5b9e 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties @@ -32,13 +32,5 @@ IngestMessagePanel.totalMessagesNameLabel.text=Total: IngestMessagePanel.totalMessagesNameVal.text=- IngestMessagePanel.totalUniqueMessagesNameLabel.text=Unique: IngestMessagePanel.totalUniqueMessagesNameVal.text=- -IngestDialogPanel.timeRadioButton3.text=5 minutes (longest ingest) -IngestDialogPanel.timeLabel.toolTipText=Choose the maximum time between updates from background tasks -IngestDialogPanel.timeLabel.text=Update Frequency -IngestDialogPanel.timeRadioButton1.toolTipText=20 mins. (fastest ingest time) -IngestDialogPanel.timeRadioButton1.text=20 minutes (fastest ingest) -IngestDialogPanel.timeRadioButton2.toolTipText=10 minutes (default ingest time) -IngestDialogPanel.timeRadioButton2.text=10 minutes (default) -IngestDialogPanel.timeRadioButton3.toolTipText=5 minutes (overall ingest time will be longest) IngestDialogPanel.processUnallocCheckbox.text=Process Unallocated Space IngestDialogPanel.processUnallocCheckbox.toolTipText=Processes unallocated space, such as deleted files. Produces more complete results, but it may take longer to process on large images. diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.form b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.form index 3336399a64..be92f86f70 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.form +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.form @@ -29,7 +29,6 @@ - @@ -43,13 +42,11 @@ - + - + - - - + @@ -117,7 +114,7 @@ - + @@ -163,94 +160,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -268,15 +177,16 @@ - + - + + - + diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.java index 9552c5b378..a5a37ca619 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.java @@ -40,7 +40,6 @@ import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableColumn; import org.sleuthkit.autopsy.casemodule.IngestConfigurator; import org.sleuthkit.autopsy.corecomponents.AdvancedConfigurationDialog; -import org.sleuthkit.autopsy.ingest.IngestManager.UpdateFrequency; import org.sleuthkit.datamodel.Image; /** @@ -86,33 +85,6 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi addModule(module); } - //time setting - timeGroup.add(timeRadioButton1); - timeGroup.add(timeRadioButton2); - timeGroup.add(timeRadioButton3); - - if (manager.isIngestRunning()) { - setTimeSettingEnabled(false); - } else { - setTimeSettingEnabled(true); - } - - //set default - final UpdateFrequency curFreq = manager.getUpdateFrequency(); - switch (curFreq) { - case FAST: - timeRadioButton1.setSelected(true); - break; - case AVG: - timeRadioButton2.setSelected(true); - break; - case SLOW: - timeRadioButton3.setSelected(true); - break; - default: - // - } - modulesTable.setTableHeader(null); modulesTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); @@ -153,11 +125,7 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi } - private void setTimeSettingEnabled(boolean enabled) { - timeRadioButton1.setEnabled(enabled); - timeRadioButton2.setEnabled(enabled); - timeRadioButton3.setEnabled(enabled); - } + private void setProcessUnallocSpaceEnabled(boolean enabled) { processUnallocCheckbox.setEnabled(enabled); @@ -167,11 +135,9 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi public void paint(Graphics g) { super.paint(g); if (manager.isIngestRunning()) { - setTimeSettingEnabled(false); setProcessUnallocSpaceEnabled(false); } else { - setTimeSettingEnabled(true); setProcessUnallocSpaceEnabled(true); } } @@ -199,11 +165,6 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi jSeparator2 = new javax.swing.JSeparator(); jScrollPane1 = new javax.swing.JScrollPane(); simplePanel = new javax.swing.JPanel(); - timePanel = new javax.swing.JPanel(); - timeRadioButton3 = new javax.swing.JRadioButton(); - timeRadioButton2 = new javax.swing.JRadioButton(); - timeLabel = new javax.swing.JLabel(); - timeRadioButton1 = new javax.swing.JRadioButton(); processUnallocPanel = new javax.swing.JPanel(); processUnallocCheckbox = new javax.swing.JCheckBox(); @@ -256,7 +217,7 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 183, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 192, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) @@ -264,52 +225,6 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi .addContainerGap()) ); - timePanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(160, 160, 160))); - - timeRadioButton3.setText(org.openide.util.NbBundle.getMessage(IngestDialogPanel.class, "IngestDialogPanel.timeRadioButton3.text")); // NOI18N - timeRadioButton3.setToolTipText(org.openide.util.NbBundle.getMessage(IngestDialogPanel.class, "IngestDialogPanel.timeRadioButton3.toolTipText")); // NOI18N - - timeRadioButton2.setText(org.openide.util.NbBundle.getMessage(IngestDialogPanel.class, "IngestDialogPanel.timeRadioButton2.text")); // NOI18N - timeRadioButton2.setToolTipText(org.openide.util.NbBundle.getMessage(IngestDialogPanel.class, "IngestDialogPanel.timeRadioButton2.toolTipText")); // NOI18N - - timeLabel.setText(org.openide.util.NbBundle.getMessage(IngestDialogPanel.class, "IngestDialogPanel.timeLabel.text")); // NOI18N - timeLabel.setToolTipText(org.openide.util.NbBundle.getMessage(IngestDialogPanel.class, "IngestDialogPanel.timeLabel.toolTipText")); // NOI18N - - timeRadioButton1.setText(org.openide.util.NbBundle.getMessage(IngestDialogPanel.class, "IngestDialogPanel.timeRadioButton1.text")); // NOI18N - timeRadioButton1.setToolTipText(org.openide.util.NbBundle.getMessage(IngestDialogPanel.class, "IngestDialogPanel.timeRadioButton1.toolTipText")); // NOI18N - timeRadioButton1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - timeRadioButton1ActionPerformed(evt); - } - }); - - javax.swing.GroupLayout timePanelLayout = new javax.swing.GroupLayout(timePanel); - timePanel.setLayout(timePanelLayout); - timePanelLayout.setHorizontalGroup( - timePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(timePanelLayout.createSequentialGroup() - .addContainerGap() - .addGroup(timePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(timeRadioButton1) - .addComponent(timeLabel) - .addComponent(timeRadioButton2) - .addComponent(timeRadioButton3)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - timePanelLayout.setVerticalGroup( - timePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(timePanelLayout.createSequentialGroup() - .addGap(0, 4, Short.MAX_VALUE) - .addComponent(timeLabel) - .addGap(0, 0, 0) - .addComponent(timeRadioButton1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(timeRadioButton2) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(timeRadioButton3) - .addGap(2, 2, 2)) - ); - processUnallocPanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(160, 160, 160))); processUnallocCheckbox.setText(org.openide.util.NbBundle.getMessage(IngestDialogPanel.class, "IngestDialogPanel.processUnallocCheckbox.text")); // NOI18N @@ -327,13 +242,14 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi .addGroup(processUnallocPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(processUnallocCheckbox) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap(12, Short.MAX_VALUE)) ); processUnallocPanelLayout.setVerticalGroup( processUnallocPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(processUnallocPanelLayout.createSequentialGroup() + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, processUnallocPanelLayout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(processUnallocCheckbox) - .addGap(0, 2, Short.MAX_VALUE)) + .addContainerGap()) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); @@ -344,7 +260,6 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(modulesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(timePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(processUnallocPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 328, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -355,13 +270,11 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 235, Short.MAX_VALUE) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 244, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() - .addComponent(modulesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(modulesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 192, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(processUnallocPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(timePanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(processUnallocPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addContainerGap()) ); }// //GEN-END:initComponents @@ -389,10 +302,6 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi dialog.display(currentModule.getAdvancedConfiguration()); }//GEN-LAST:event_advancedButtonActionPerformed -private void timeRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_timeRadioButton1ActionPerformed -// TODO add your handling code here: -}//GEN-LAST:event_timeRadioButton1ActionPerformed - private void processUnallocCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_processUnallocCheckboxActionPerformed // TODO add your handling code here: }//GEN-LAST:event_processUnallocCheckboxActionPerformed @@ -408,11 +317,6 @@ private void timeRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {// private javax.swing.JPanel processUnallocPanel; private javax.swing.JPanel simplePanel; private javax.swing.ButtonGroup timeGroup; - private javax.swing.JLabel timeLabel; - private javax.swing.JPanel timePanel; - private javax.swing.JRadioButton timeRadioButton1; - private javax.swing.JRadioButton timeRadioButton2; - private javax.swing.JRadioButton timeRadioButton3; // End of variables declaration//GEN-END:variables private class ModulesTableModel extends AbstractTableModel { @@ -467,23 +371,13 @@ private void timeRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {// return modulesToStart; } - private boolean timeSelectionEnabled() { - return timeRadioButton1.isEnabled() && timeRadioButton2.isEnabled() && timeRadioButton3.isEnabled(); - } + private boolean processUnallocSpaceEnabled() { return processUnallocCheckbox.isEnabled(); } - private UpdateFrequency getSelectedTimeValue() { - if (timeRadioButton1.isSelected()) { - return UpdateFrequency.FAST; - } else if (timeRadioButton2.isSelected()) { - return UpdateFrequency.AVG; - } else { - return UpdateFrequency.SLOW; - } - } + /** * To be called whenever the next, close, or start buttons are pressed. @@ -531,10 +425,7 @@ private void timeRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {// manager.execute(modulesToStart, image); } - //update ingest freq. refresh - if (timeSelectionEnabled()) { - manager.setUpdateFrequency(getSelectedTimeValue()); - } + //update ingest proc. unalloc space if (processUnallocSpaceEnabled() ) { manager.setProcessUnallocSpace(processUnallocCheckbox.isSelected()); diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java index 7223e68dda..0e4e47dfcb 100755 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java @@ -59,33 +59,8 @@ import org.sleuthkit.datamodel.TskData; */ public class IngestManager { - /** - * @Deprecated individual modules are be responsible for maintaining such settings - */ - enum UpdateFrequency { - - FAST(20), - AVG(10), - SLOW(5); - private final int time; - - /** - * @Deprecated individual modules are be responsible for maintaining such settings - */ - UpdateFrequency(int time) { - this.time = time; - } - - /** - * @Deprecated individual modules are be responsible for maintaining such settings - */ - int getTime() { - return time; - } - }; private static final Logger logger = Logger.getLogger(IngestManager.class.getName()); private IngestManagerStats stats; - private volatile UpdateFrequency updateFrequency = UpdateFrequency.AVG; private boolean processUnallocSpace = true; //queues private final ImageQueue imageQueue = new ImageQueue(); // list of modules and images to analyze @@ -531,23 +506,6 @@ public class IngestManager { } - /** - * returns the current minimal update frequency setting in minutes Modules - * should call this at init() to get current setting and use the setting to - * change notification and data refresh intervals - */ - UpdateFrequency getUpdateFrequency() { - return updateFrequency; - } - - /** - * set new minimal update frequency modules should use - * - * @param frequency to use in minutes - */ - void setUpdateFrequency(UpdateFrequency frequency) { - this.updateFrequency = frequency; - } /** * returns if manager is currently configured to process unalloc space diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestServices.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestServices.java index 4e5c4d01b1..39bac94015 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestServices.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestServices.java @@ -87,18 +87,6 @@ public class IngestServices { } - /** - * Facility for the module to query the currently set recommended data update frequency in minutes - * Modules that post data in controlled time intervals, should obey this setting - * - * @return max. number of minutes before module posts new data, if data is available - * - * @Deprecated individual modules are be responsible for maintaining such settings - */ - public int getUpdateFrequency() { - return manager.getUpdateFrequency().getTime(); - } - /** * Facility for a file ingest module to check a return value from another file ingest module diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties index 786c989674..372c091ccf 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties @@ -70,3 +70,10 @@ KeywordSearchConfigurationPanel2.settingsLabel.text=Settings KeywordSearchConfigurationPanel2.informationLabel.text=Information KeywordSearchListsManagementPanel.keywordListsLabel.text=Keyword Lists: KeywordSearchEditListPanel.keywordsLabel.text=Keywords: +KeywordSearchConfigurationPanel2.jLabel1.text=Results update frequency during ingest: +KeywordSearchConfigurationPanel2.timeRadioButton1.toolTipText=20 mins. (fastest ingest time) +KeywordSearchConfigurationPanel2.timeRadioButton1.text=20 minutes (fastest ingest) +KeywordSearchConfigurationPanel2.timeRadioButton2.toolTipText=10 minutes (default ingest time) +KeywordSearchConfigurationPanel2.timeRadioButton2.text=10 minutes (default) +KeywordSearchConfigurationPanel2.timeRadioButton3.toolTipText=5 minutes (overall ingest time will be longest) +KeywordSearchConfigurationPanel2.timeRadioButton3.text=5 minutes (longest ingest) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchConfigurationPanel2.form b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchConfigurationPanel2.form index 9ac2883b82..9d49c209e8 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchConfigurationPanel2.form +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchConfigurationPanel2.form @@ -2,7 +2,7 @@
- + @@ -22,7 +22,7 @@ - + @@ -31,27 +31,35 @@ - + - + + - - - - - - - - - + + + + + + + + + + + + + + + + - + @@ -65,6 +73,14 @@ + + + + + + + + @@ -80,7 +96,7 @@ - + @@ -95,9 +111,6 @@ - - - @@ -148,5 +161,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchConfigurationPanel2.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchConfigurationPanel2.java index 8f4f521972..6bd240006a 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchConfigurationPanel2.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchConfigurationPanel2.java @@ -18,15 +18,14 @@ */ package org.sleuthkit.autopsy.keywordsearch; -import java.awt.Graphics; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.logging.Level; import org.sleuthkit.autopsy.coreutils.Logger; import org.apache.solr.client.solrj.SolrServerException; -import org.openide.util.Exceptions; import org.sleuthkit.autopsy.corecomponents.OptionsPanel; import org.sleuthkit.autopsy.ingest.IngestManager; +import org.sleuthkit.autopsy.keywordsearch.KeywordSearchIngestModule.UpdateFrequency; /** * General, not per list, keyword search configuration and status display widget @@ -47,8 +46,25 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme final KeywordSearchIngestModule service = KeywordSearchIngestModule.getDefault(); skipNSRLCheckBox.setSelected(service.getSkipKnown()); boolean enable = !IngestManager.getDefault().isIngestRunning() - && ! IngestManager.getDefault().isModuleRunning(KeywordSearchIngestModule.getDefault()); + && !IngestManager.getDefault().isModuleRunning(KeywordSearchIngestModule.getDefault()); skipNSRLCheckBox.setEnabled(enable); + setTimeSettingEnabled(enable); + + final UpdateFrequency curFreq = service.getUpdateFrequency(); + switch (curFreq) { + case FAST: + timeRadioButton1.setSelected(true); + break; + case AVG: + timeRadioButton2.setSelected(true); + break; + case SLOW: + timeRadioButton3.setSelected(true); + break; + default: + // + } + } /** @@ -60,7 +76,7 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme // //GEN-BEGIN:initComponents private void initComponents() { - langButtonGroup = new javax.swing.ButtonGroup(); + timeGroup = new javax.swing.ButtonGroup(); skipNSRLCheckBox = new javax.swing.JCheckBox(); filesIndexedLabel = new javax.swing.JLabel(); filesIndexedValue = new javax.swing.JLabel(); @@ -70,14 +86,13 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme informationLabel = new javax.swing.JLabel(); settingsSeparator = new javax.swing.JSeparator(); informationSeparator = new javax.swing.JSeparator(); + jLabel1 = new javax.swing.JLabel(); + timeRadioButton1 = new javax.swing.JRadioButton(); + timeRadioButton2 = new javax.swing.JRadioButton(); + timeRadioButton3 = new javax.swing.JRadioButton(); skipNSRLCheckBox.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.skipNSRLCheckBox.text")); // NOI18N skipNSRLCheckBox.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.skipNSRLCheckBox.toolTipText")); // NOI18N - skipNSRLCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - skipNSRLCheckBoxActionPerformed(evt); - } - }); filesIndexedLabel.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.filesIndexedLabel.text")); // NOI18N @@ -92,13 +107,24 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme informationLabel.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.informationLabel.text")); // NOI18N + jLabel1.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.jLabel1.text")); // NOI18N + + timeRadioButton1.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton1.text")); // NOI18N + timeRadioButton1.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton1.toolTipText")); // NOI18N + + timeRadioButton2.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton2.text")); // NOI18N + timeRadioButton2.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton2.toolTipText")); // NOI18N + + timeRadioButton3.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton3.text")); // NOI18N + timeRadioButton3.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton3.toolTipText")); // NOI18N + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(settingsLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -106,20 +132,27 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme .addGroup(layout.createSequentialGroup() .addComponent(informationLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(informationSeparator)) + .addComponent(informationSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 309, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(layout.createSequentialGroup() .addGap(10, 10, 10) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(filesIndexedLabel) .addGroup(layout.createSequentialGroup() + .addGap(141, 141, 141) + .addComponent(filesIndexedValue, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(skipNSRLCheckBox) + .addComponent(jLabel1) + .addGroup(layout.createSequentialGroup() + .addGap(10, 10, 10) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(chunksLabel) - .addComponent(filesIndexedLabel)) + .addComponent(timeRadioButton2) + .addComponent(timeRadioButton1) + .addComponent(timeRadioButton3))) + .addGroup(layout.createSequentialGroup() + .addComponent(chunksLabel) .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(filesIndexedValue, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(chunksValLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addComponent(skipNSRLCheckBox)))) - .addContainerGap(67, Short.MAX_VALUE)) + .addComponent(chunksValLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE))))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -130,6 +163,14 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme .addComponent(settingsSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 6, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(skipNSRLCheckBox) + .addGap(13, 13, 13) + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(timeRadioButton1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(timeRadioButton2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(timeRadioButton3) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(informationLabel) @@ -142,14 +183,10 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(chunksLabel) .addComponent(chunksValLabel)) - .addContainerGap(107, Short.MAX_VALUE)) + .addContainerGap(37, Short.MAX_VALUE)) ); }// //GEN-END:initComponents -private void skipNSRLCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_skipNSRLCheckBoxActionPerformed - //KeywordSearchIngestModule.getDefault().setSkipKnown(skipNSRLCheckBox.isSelected()); - // Do nothing -}//GEN-LAST:event_skipNSRLCheckBoxActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel chunksLabel; private javax.swing.JLabel chunksValLabel; @@ -157,23 +194,53 @@ private void skipNSRLCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {// private javax.swing.JLabel filesIndexedValue; private javax.swing.JLabel informationLabel; private javax.swing.JSeparator informationSeparator; - private javax.swing.ButtonGroup langButtonGroup; + private javax.swing.JLabel jLabel1; private javax.swing.JLabel settingsLabel; private javax.swing.JSeparator settingsSeparator; private javax.swing.JCheckBox skipNSRLCheckBox; + private javax.swing.ButtonGroup timeGroup; + private javax.swing.JRadioButton timeRadioButton1; + private javax.swing.JRadioButton timeRadioButton2; + private javax.swing.JRadioButton timeRadioButton3; // End of variables declaration//GEN-END:variables @Override public void store() { - KeywordSearchIngestModule.getDefault().setSkipKnown(skipNSRLCheckBox.isSelected()); + final KeywordSearchIngestModule km = + KeywordSearchIngestModule.getDefault(); + + km.setSkipKnown(skipNSRLCheckBox.isSelected()); + km.setUpdateFrequency(getSelectedTimeValue()); } - + @Override public void load() { activateWidgets(); } - + + private void setTimeSettingEnabled(boolean enabled) { + timeRadioButton1.setEnabled(enabled); + timeRadioButton2.setEnabled(enabled); + timeRadioButton3.setEnabled(enabled); + } + + + private UpdateFrequency getSelectedTimeValue() { + if (timeRadioButton1.isSelected()) { + return UpdateFrequency.FAST; + } else if (timeRadioButton2.isSelected()) { + return UpdateFrequency.AVG; + } else { + return UpdateFrequency.SLOW; + } + } + private void customizeComponents() { + + timeGroup.add(timeRadioButton1); + timeGroup.add(timeRadioButton2); + timeGroup.add(timeRadioButton3); + this.skipNSRLCheckBox.setSelected(KeywordSearchIngestModule.getDefault().getSkipKnown()); try { diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java index 0228c517fe..8828dc55a3 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java @@ -72,6 +72,23 @@ import org.sleuthkit.datamodel.TskData.FileKnown; */ public final class KeywordSearchIngestModule implements IngestModuleAbstractFile { + enum UpdateFrequency { + + FAST(20), + AVG(10), + SLOW(5); + private final int time; + + UpdateFrequency(int time) { + this.time = time; + } + + int getTime() { + return time; + } + }; + private volatile UpdateFrequency updateFrequency = UpdateFrequency.AVG; + private static final Logger logger = Logger.getLogger(KeywordSearchIngestModule.class.getName()); public static final String MODULE_NAME = "Keyword Search"; public static final String MODULE_DESCRIPTION = "Performs file indexing and periodic search using keywords and regular expressions in lists."; @@ -85,7 +102,6 @@ public final class KeywordSearchIngestModule implements IngestModuleAbstractFile private Map keywordToList; //keyword to list name mapping private Timer commitTimer; private Timer searchTimer; - //private static final int COMMIT_INTERVAL_MS = 10 * 60 * 1000; private Indexer indexer; private Searcher currentSearcher; private Searcher finalSearcher; @@ -134,6 +150,22 @@ public final class KeywordSearchIngestModule implements IngestModuleAbstractFile } return instance; } + + /** + * returns the current minimal update frequency setting in minutes + */ + UpdateFrequency getUpdateFrequency() { + return updateFrequency; + } + + /** + * set new minimal update frequency module should use + * + * @param frequency to use in minutes + */ + void setUpdateFrequency(UpdateFrequency frequency) { + this.updateFrequency = frequency; + } /** * Starts processing of every file provided by IngestManager. Checks if it @@ -349,7 +381,7 @@ public final class KeywordSearchIngestModule implements IngestModuleAbstractFile indexer = new Indexer(); - final int updateIntervalMs = services.getUpdateFrequency() * 60 * 1000; + final int updateIntervalMs = updateFrequency.getTime() * 60 * 1000; logger.log(Level.INFO, "Using commit interval (ms): " + updateIntervalMs); logger.log(Level.INFO, "Using searcher interval (ms): " + updateIntervalMs);