diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties
index b0f6e2e105..0fa1afe70a 100755
--- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties
+++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties
@@ -50,3 +50,5 @@ ExtractedContentPanel.pageTotalLabel.text=-
ExtractedContentPanel.hitLabel.toolTipText=
KeywordSearchEditListPanel.ingestMessagesCheckbox.text=Send messages during triage / ingest
KeywordSearchEditListPanel.ingestMessagesCheckbox.toolTipText=Send messages during triage / ingest when hits on keyword from this list occur
+KeywordSearchIngestSimplePanel.skipKnownCheckBox.text=Skip files in NSRL
+KeywordSearchIngestSimplePanel.skipKnownCheckBox.toolTipText=Please make sure you have either selected to run or have previously run the Hash DB Ingest Service.
diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchConfigurationPanel.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchConfigurationPanel.java
index cdf04e46ac..4eb06ede8b 100644
--- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchConfigurationPanel.java
+++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchConfigurationPanel.java
@@ -122,7 +122,6 @@ public class KeywordSearchConfigurationPanel extends javax.swing.JPanel {
// End of variables declaration//GEN-END:variables
void save() {
- editListPanel.save();
KeywordSearchListsXML loader = KeywordSearchListsXML.getCurrent();
KeywordSearchIngestService service = KeywordSearchIngestService.getDefault();
if (IngestManager.getDefault().isServiceRunning(service)) {
diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchEditListPanel.form b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchEditListPanel.form
index f888c19e62..1810159312 100644
--- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchEditListPanel.form
+++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchEditListPanel.form
@@ -280,6 +280,9 @@
+
+
+
diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchEditListPanel.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchEditListPanel.java
index 010f88b62e..ea22c04083 100644
--- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchEditListPanel.java
+++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchEditListPanel.java
@@ -27,10 +27,7 @@ import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
@@ -58,11 +55,10 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
private static Logger logger = Logger.getLogger(KeywordSearchEditListPanel.class.getName());
private KeywordTableModel tableModel;
- private String currentKeywordList;
+ private KeywordSearchList currentKeywordList;
private boolean ingestRunning;
- private boolean locked;
private static KeywordSearchEditListPanel instance = null;
/** Creates new form KeywordSearchEditListPanel */
@@ -81,11 +77,11 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
private void customizeComponents() {
- locked = false;
chRegex.setToolTipText("Keyword is a regular expression");
addWordButton.setToolTipText(("Add a new word to the keyword search list"));
addWordField.setToolTipText("Enter a new word or regex to search");
- saveListButton.setToolTipText("Save the current keyword list to a file");
+ exportButton.setToolTipText("Export the current keyword list to a file");
+ saveListButton.setToolTipText("Save the current keyword list with a new name");
deleteWordButton.setToolTipText("Remove selected keyword(s) from the list");
//keywordTable.setAutoscrolls(true);
@@ -115,7 +111,7 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
@Override
public void valueChanged(ListSelectionEvent e) {
- if (lsm.isSelectionEmpty() || locked) {
+ if (lsm.isSelectionEmpty() || currentKeywordList.isLocked()) {
deleteWordButton.setEnabled(false);
} else {
deleteWordButton.setEnabled(true);
@@ -124,7 +120,7 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
//show selector if available
DefaultListSelectionModel selModel = (DefaultListSelectionModel) e.getSource();
if (!selModel.getValueIsAdjusting()) {
- List keywords = tableModel.getAllKeywords();
+ List keywords = currentKeywordList.getKeywords();
final int minIndex = selModel.getMinSelectionIndex();
final int maxIndex = selModel.getMaxSelectionIndex();
int selected = -1;
@@ -239,24 +235,29 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
// Certain buttons will be disabled if ingest is ongoing
boolean ingestOngoing = this.ingestRunning;
// Certain buttons will be disabled if ingest is ongoing on this list
- boolean inIngest = false;
+ boolean useForIngest = !listSet ? false : currentKeywordList.getUseForIngest();
+ // Certain buttons will be disabled if the list shouldn't send ingest messages
+ boolean sendIngestMessages = !listSet ? false : currentKeywordList.getIngestMessages();
// Certain buttons will be disabled if the selected list is locked
- boolean isLocked = this.locked;
+ boolean isLocked = !listSet ? true : currentKeywordList.isLocked();
// Certain buttons will be disabled if no keywords are set
- boolean noKeywords = getAllKeywords().isEmpty();
+ boolean noKeywords = !listSet ? true : currentKeywordList.getKeywords().isEmpty();
+ // Certain buttons will be disabled if ingest is ongoing on this list
List ingestLists = new ArrayList();
if (ingestOngoing) {
ingestLists = KeywordSearchIngestService.getDefault().getKeywordLists();
}
- inIngest = ingestLists.contains(currentKeywordList);
+ boolean inIngest = !listSet ? false : ingestLists.contains(currentKeywordList.getName());
addWordButton.setEnabled(listSet && (!ingestOngoing || !inIngest) && !isLocked);
addWordField.setEnabled(listSet && (!ingestOngoing || !inIngest) && !isLocked);
chRegex.setEnabled(listSet && (!ingestOngoing || !inIngest) && !isLocked);
selectorsCombo.setEnabled(listSet && (!ingestOngoing || !inIngest) && !isLocked && chRegex.isSelected());
useForIngestCheckbox.setEnabled(listSet && (!ingestOngoing || !inIngest));
+ useForIngestCheckbox.setSelected(useForIngest);
ingestMessagesCheckbox.setEnabled(useForIngestCheckbox.isEnabled() && useForIngestCheckbox.isSelected());
+ ingestMessagesCheckbox.setSelected(sendIngestMessages);
saveListButton.setEnabled(listSet);
exportButton.setEnabled(listSet);
deleteListButton.setEnabled(listSet && (!ingestOngoing || !inIngest) && !isLocked);
@@ -398,6 +399,11 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
ingestMessagesCheckbox.setText(org.openide.util.NbBundle.getMessage(KeywordSearchEditListPanel.class, "KeywordSearchEditListPanel.ingestMessagesCheckbox.text")); // NOI18N
ingestMessagesCheckbox.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchEditListPanel.class, "KeywordSearchEditListPanel.ingestMessagesCheckbox.toolTipText")); // NOI18N
+ ingestMessagesCheckbox.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ ingestMessagesCheckboxActionPerformed(evt);
+ }
+ });
javax.swing.GroupLayout listEditorPanelLayout = new javax.swing.GroupLayout(listEditorPanel);
listEditorPanel.setLayout(listEditorPanelLayout);
@@ -500,7 +506,7 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
if (newWord.equals("")) {
return;
- } else if (keywordExists(keyword)) {
+ } else if (currentKeywordList.hasKeyword(keyword)) {
KeywordSearchUtil.displayDialog("New Keyword Entry", "Keyword already exists in the list.", KeywordSearchUtil.DIALOG_MESSAGE_TYPE.INFO);
return;
}
@@ -532,7 +538,7 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
final String FEATURE_NAME = "Save Keyword List";
KeywordSearchListsXML writer = KeywordSearchListsXML.getCurrent();
- List keywords = tableModel.getAllKeywords();
+ List keywords = currentKeywordList.getKeywords();
if (keywords.isEmpty()) {
KeywordSearchUtil.displayDialog(FEATURE_NAME, "Keyword List is empty and cannot be saved", KeywordSearchUtil.DIALOG_MESSAGE_TYPE.INFO);
return;
@@ -570,7 +576,7 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
writer.addList(listName, keywords);
}
- currentKeywordList = listName;
+ currentKeywordList = writer.getList(listName);
KeywordSearchUtil.displayDialog(FEATURE_NAME, "Keyword List <" + listName + "> saved", KeywordSearchUtil.DIALOG_MESSAGE_TYPE.INFO);
}//GEN-LAST:event_saveListButtonActionPerformed
@@ -585,7 +591,6 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
}//GEN-LAST:event_addWordFieldActionPerformed
private void exportButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exportButtonActionPerformed
- save();
final String FEATURE_NAME = "Keyword List Export";
@@ -594,7 +599,7 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"Keyword List XML file", EXTENSION);
chooser.setFileFilter(filter);
- chooser.setSelectedFile(new File(currentKeywordList));
+ chooser.setSelectedFile(new File(currentKeywordList.getName()));
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int returnVal = chooser.showSaveDialog(this);
@@ -623,7 +628,7 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
KeywordSearchListsXML reader = KeywordSearchListsXML.getCurrent();
List toWrite = new ArrayList();
- toWrite.add(reader.getList(currentKeywordList));
+ toWrite.add(reader.getList(currentKeywordList.getName()));
final KeywordSearchListsXML exporter = new KeywordSearchListsXML(fileAbs);
boolean written = exporter.writeLists(toWrite);
if (written) {
@@ -635,11 +640,11 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
private void deleteListButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteListButtonActionPerformed
KeywordSearchListsXML deleter = KeywordSearchListsXML.getCurrent();
- String toDelete = currentKeywordList;
+ String toDelete = currentKeywordList.getName();
currentKeywordList = null;
- tableModel.deleteAll();
initButtons();
deleter.deleteList(toDelete);
+ tableModel.resync();
}//GEN-LAST:event_deleteListButtonActionPerformed
private void chRegexActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chRegexActionPerformed
@@ -648,8 +653,13 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
private void useForIngestCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useForIngestCheckboxActionPerformed
ingestMessagesCheckbox.setEnabled(useForIngestCheckbox.isSelected());
+ currentKeywordList.setUseForIngest(useForIngestCheckbox.isSelected());
}//GEN-LAST:event_useForIngestCheckboxActionPerformed
+ private void ingestMessagesCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ingestMessagesCheckboxActionPerformed
+ currentKeywordList.setIngestMessages(ingestMessagesCheckbox.isSelected());
+ }//GEN-LAST:event_ingestMessagesCheckboxActionPerformed
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel addKeywordPanel;
private javax.swing.JButton addWordButton;
@@ -679,66 +689,23 @@ private void useForIngestCheckboxActionPerformed(java.awt.event.ActionEvent evt)
ListSelectionModel listSelectionModel = (ListSelectionModel) e.getSource();
if (!listSelectionModel.isSelectionEmpty()) {
int index = listSelectionModel.getMinSelectionIndex();
- KeywordSearchListsManagementPanel listsPanel = KeywordSearchListsManagementPanel.getDefault();
- save();
listSelectionModel.setSelectionInterval(index, index);
- currentKeywordList = listsPanel.getAllLists().get(index);
KeywordSearchListsXML loader = KeywordSearchListsXML.getCurrent();
- KeywordSearchList currentList = loader.getList(currentKeywordList);
- if (currentList != null) {
- locked = currentList.isLocked();
- }
- tableModel.resync(currentKeywordList);
+ currentKeywordList = loader.getListsL().get(index);
+ tableModel.resync();
initButtons();
} else {
currentKeywordList = null;
- tableModel.deleteAll();
initButtons();
}
}
- List getAllKeywords() {
- return tableModel.getAllKeywords();
- }
-
- List getSelectedKeywords() {
- return tableModel.getSelectedKeywords(keywordTable.getSelectedRows());
- }
-
- private boolean keywordExists(Keyword keyword) {
- return tableModel.keywordExists(keyword);
- }
-
- void save() {
- if (currentKeywordList != null && !currentKeywordList.equals("")) {
- KeywordSearchListsXML loader = KeywordSearchListsXML.getCurrent();
- KeywordSearchList oldList = loader.getList(currentKeywordList);
- List oldKeywords = oldList.getKeywords();
- boolean oldIngest = oldList.getUseForIngest();
- boolean oldIngestMessages = oldList.getIngestMessages();
- List newKeywords = getAllKeywords();
- boolean newIngest = useForIngestCheckbox.isSelected();
- boolean newIngestMessages = ingestMessagesCheckbox.isSelected();
-
- if (!oldKeywords.equals(newKeywords) || oldIngest != newIngest || oldIngestMessages != newIngestMessages) {
- /*boolean save = KeywordSearchUtil.displayConfirmDialog("Save List Changes",
- "Do you want to save the changes you made to list " + currentKeywordList + "?",
- KeywordSearchUtil.DIALOG_MESSAGE_TYPE.WARN);*/
- boolean save = true;
- if (save) {
- loader.addList(currentKeywordList, newKeywords, newIngest, newIngestMessages, oldList.isLocked());
- }
- }
- }
- }
private class KeywordTableModel extends AbstractTableModel {
//data
- private Set keywordData = new TreeSet();
-
@Override
public int getColumnCount() {
return 2;
@@ -746,7 +713,7 @@ private void useForIngestCheckboxActionPerformed(java.awt.event.ActionEvent evt)
@Override
public int getRowCount() {
- return keywordData.size();
+ return currentKeywordList == null ? 0 : currentKeywordList.getKeywords().size();
}
@Override
@@ -770,18 +737,13 @@ private void useForIngestCheckboxActionPerformed(java.awt.event.ActionEvent evt)
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Object ret = null;
- TableEntry entry = null;
- //iterate until row
- Iterator it = keywordData.iterator();
- for (int i = 0; i <= rowIndex; ++i) {
- entry = it.next();
- }
+ Keyword word = currentKeywordList.getKeywords().get(rowIndex);
switch (columnIndex) {
case 0:
- ret = (Object) entry.keyword.getQuery();
+ ret = (Object) word.getQuery();
break;
case 1:
- ret = (Object) !entry.keyword.isLiteral();
+ ret = (Object) !word.isLiteral();
break;
default:
logger.log(Level.SEVERE, "Invalid table column index: " + columnIndex);
@@ -804,95 +766,24 @@ private void useForIngestCheckboxActionPerformed(java.awt.event.ActionEvent evt)
return getValueAt(0, c).getClass();
}
- List getAllKeywords() {
- List ret = new ArrayList();
- for (TableEntry e : keywordData) {
- ret.add(e.keyword);
- }
- return ret;
- }
-
- List getSelectedKeywords(int[] selected) {
- List ret = new ArrayList();
- Keyword[] in = keywordData.toArray(new Keyword[keywordData.size()]);
- for (int i = 0; i < selected.length; i++) {
- ret.add(in[selected[i]]);
- }
- return ret;
- }
-
- boolean keywordExists(Keyword keyword) {
- List all = getAllKeywords();
- return all.contains(keyword);
- }
-
void addKeyword(Keyword keyword) {
- if (!keywordExists(keyword)) {
- keywordData.add(new TableEntry(keyword));
+ if(!currentKeywordList.hasKeyword(keyword)) {
+ currentKeywordList.getKeywords().add(keyword);
}
fireTableDataChanged();
}
- void addKeywords(List keywords) {
- for (Keyword keyword : keywords) {
- if (!keywordExists(keyword)) {
- keywordData.add(new TableEntry(keyword));
- }
- }
- fireTableDataChanged();
- }
-
- void resync(String listName) {
- KeywordSearchListsXML loader = KeywordSearchListsXML.getCurrent();
- KeywordSearchList list = loader.getList(listName);
- List keywords = list.getKeywords();
-
- deleteAll();
- addKeywords(keywords);
- boolean useForIngest = list.getUseForIngest();
- useForIngestCheckbox.setSelected(useForIngest);
- ingestMessagesCheckbox.setEnabled(useForIngest);
- ingestMessagesCheckbox.setSelected(list.getIngestMessages());
- }
-
- void deleteAll() {
- keywordData.clear();
+ void resync() {
fireTableDataChanged();
}
//delete selected from handle, events are fired from the handle
void deleteSelected(int[] selected) {
- List toDel = new ArrayList();
- TableEntry [] in = keywordData.toArray(new TableEntry[keywordData.size()]);
- for (int i = 0; i < selected.length; i++) {
- Keyword word = in[selected[i]].keyword;
- toDel.add(new TableEntry(word));
- }
- for (TableEntry del : toDel) {
- keywordData.remove(del);
- }
- fireTableDataChanged();
-
+ List keywords = currentKeywordList.getKeywords();
+ keywords.remove(selected[0]);
+ resync();
}
- class TableEntry implements Comparable {
-
- Keyword keyword;
-
- TableEntry(Keyword keyword) {
- this.keyword = keyword;
- }
-
- @Override
- public int compareTo(TableEntry te) {
- int keywords = this.keyword.getQuery().compareTo(te.keyword.getQuery());
- if (keywords != 0) {
- return keywords;
- } else {
- return Boolean.valueOf(keyword.isLiteral()).compareTo(te.keyword.isLiteral());
- }
- }
- }
}
private class CheckBoxRenderer extends JCheckBox implements TableCellRenderer {
diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestService.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestService.java
index 62896d4455..7b484e7e34 100644
--- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestService.java
+++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestService.java
@@ -78,6 +78,7 @@ public final class KeywordSearchIngestService implements IngestServiceAbstractFi
private volatile boolean finalSearcherDone = false;
private final String hashDBServiceName = "Hash Lookup";
private SleuthkitCase caseHandle = null;
+ private boolean skipKnown = false;
boolean initialized = false;
public enum IngestStatus {
@@ -105,7 +106,7 @@ public final class KeywordSearchIngestService implements IngestServiceAbstractFi
//if so do not index it, also postpone indexing and keyword search threads to later
IngestServiceAbstractFile.ProcessResult hashDBResult = managerProxy.getAbstractFileServiceResult(hashDBServiceName);
//logger.log(Level.INFO, "hashdb result: " + hashDBResult + "file: " + AbstractFile.getName());
- if (hashDBResult == IngestServiceAbstractFile.ProcessResult.COND_STOP) {
+ if (hashDBResult == IngestServiceAbstractFile.ProcessResult.COND_STOP && skipKnown) {
return ProcessResult.OK;
} else if (hashDBResult == IngestServiceAbstractFile.ProcessResult.ERROR) {
//notify depending service that keyword search (would) encountered error for this file
@@ -275,7 +276,6 @@ public final class KeywordSearchIngestService implements IngestServiceAbstractFi
@Override
public void saveAdvancedConfiguration() {
- KeywordSearchConfigurationPanel.getDefault().editListPanel.save();
}
@Override
@@ -760,4 +760,8 @@ public final class KeywordSearchIngestService implements IngestServiceAbstractFi
}
return ret;
}
+
+ void setSkipKnown(boolean skip) {
+ this.skipKnown = skip;
+ }
}
diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestSimplePanel.form b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestSimplePanel.form
index 1978dcd0aa..d28660af9d 100644
--- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestSimplePanel.form
+++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestSimplePanel.form
@@ -21,11 +21,16 @@
-
+
-
+
+
+
+
+
+
@@ -36,8 +41,13 @@
+
+
+
+
+
+
-
@@ -80,5 +90,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestSimplePanel.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestSimplePanel.java
index b4b5eefcd7..7a267a11e5 100644
--- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestSimplePanel.java
+++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestSimplePanel.java
@@ -81,6 +81,8 @@ public class KeywordSearchIngestSimplePanel extends javax.swing.JPanel {
listsTable = new javax.swing.JTable();
jLabel1 = new javax.swing.JLabel();
jSeparator1 = new javax.swing.JSeparator();
+ jSeparator2 = new javax.swing.JSeparator();
+ skipKnownCheckBox = new javax.swing.JCheckBox();
setPreferredSize(new java.awt.Dimension(172, 57));
@@ -101,15 +103,27 @@ public class KeywordSearchIngestSimplePanel extends javax.swing.JPanel {
jLabel1.setText(org.openide.util.NbBundle.getMessage(KeywordSearchIngestSimplePanel.class, "KeywordSearchIngestSimplePanel.jLabel1.text")); // NOI18N
+ skipKnownCheckBox.setText(org.openide.util.NbBundle.getMessage(KeywordSearchIngestSimplePanel.class, "KeywordSearchIngestSimplePanel.skipKnownCheckBox.text")); // NOI18N
+ skipKnownCheckBox.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchIngestSimplePanel.class, "KeywordSearchIngestSimplePanel.skipKnownCheckBox.toolTipText")); // NOI18N
+ skipKnownCheckBox.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ skipKnownCheckBoxActionPerformed(evt);
+ }
+ });
+
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 172, Short.MAX_VALUE)
+ .addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
- .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap(133, Short.MAX_VALUE))
+ .addComponent(jSeparator2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(skipKnownCheckBox)
+ .addContainerGap())
.addComponent(listsScrollPane, 0, 0, Short.MAX_VALUE)
);
layout.setVerticalGroup(
@@ -118,15 +132,27 @@ public class KeywordSearchIngestSimplePanel extends javax.swing.JPanel {
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 4, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(0, 0, 0)
- .addComponent(listsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 33, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(listsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 118, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(skipKnownCheckBox)
+ .addGap(0, 0, 0))
);
}// //GEN-END:initComponents
+
+ private void skipKnownCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_skipKnownCheckBoxActionPerformed
+ KeywordSearchIngestService.getDefault().setSkipKnown(skipKnownCheckBox.isSelected());
+ }//GEN-LAST:event_skipKnownCheckBoxActionPerformed
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel1;
private javax.swing.JSeparator jSeparator1;
+ private javax.swing.JSeparator jSeparator2;
private javax.swing.JScrollPane listsScrollPane;
private javax.swing.JTable listsTable;
+ private javax.swing.JCheckBox skipKnownCheckBox;
// End of variables declaration//GEN-END:variables
private void reloadLists() {
@@ -163,6 +189,7 @@ public class KeywordSearchIngestSimplePanel extends javax.swing.JPanel {
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
+
KeywordSearchList list = KeywordSearchIngestSimplePanel.this.lists.get(rowIndex);
if(columnIndex == 0){
KeywordSearchListsXML loader = KeywordSearchListsXML.getCurrent();
diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchListsManagementPanel.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchListsManagementPanel.java
index 518fdfc9c3..bbd477e9f0 100644
--- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchListsManagementPanel.java
+++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchListsManagementPanel.java
@@ -81,29 +81,6 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel {
listsTable.setRowSelectionAllowed(true);
tableModel.resync();
- KeywordSearchListsXML.getCurrent().addPropertyChangeListener(new PropertyChangeListener() {
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (evt.getPropertyName().equals(KeywordSearchListsXML.ListsEvt.LIST_ADDED.toString())) {
- tableModel.resync();
- for(int i = 0; i 0)
- listsTable.getSelectionModel().setSelectionInterval(0, 0);
- else
- listsTable.getSelectionModel().clearSelection();
- } else if (evt.getPropertyName().equals(KeywordSearchListsXML.ListsEvt.LIST_UPDATED.toString())) {
- tableModel.resync((String) evt.getNewValue()); //changed list name
- }
- }
- });
-
}
/** This method is called from within the constructor to
@@ -173,7 +150,6 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel {
}// //GEN-END:initComponents
private void newListButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newListButtonActionPerformed
- KeywordSearchEditListPanel.getDefault().save();
KeywordSearchListsXML writer = KeywordSearchListsXML.getCurrent();
String listName = (String) JOptionPane.showInputDialog(null, "New keyword list name:", "New Keyword List", JOptionPane.PLAIN_MESSAGE, null, null, "");
if (listName == null || listName.trim().equals("")) {
@@ -199,7 +175,6 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel {
}//GEN-LAST:event_newListButtonActionPerformed
private void importButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_importButtonActionPerformed
- KeywordSearchEditListPanel.getDefault().save();
final String FEATURE_NAME = "Keyword List Import";
JFileChooser chooser = new JFileChooser();
@@ -280,7 +255,6 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel {
//data
private KeywordSearchListsXML listsHandle = KeywordSearchListsXML.getCurrent();
- private Set listData = new TreeSet();
@Override
public int getColumnCount() {
@@ -289,7 +263,7 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel {
@Override
public int getRowCount() {
- return listData.size();
+ return listsHandle.getNumberLists();
}
@Override
@@ -299,13 +273,7 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel {
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
- TableEntry entry = null;
- //iterate until row
- Iterator it = listData.iterator();
- for (int i = 0; i <= rowIndex; ++i) {
- entry = it.next();
- }
- return (Object) entry.name;
+ return listsHandle.getListNames().get(rowIndex);
}
@Override
@@ -323,27 +291,6 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel {
return getValueAt(0, c).getClass();
}
- List getAllLists() {
- List ret = new ArrayList();
- for (TableEntry e : listData) {
- ret.add(e.name);
- }
- return ret;
- }
-
- List getSelectedLists(int[] selected) {
- List ret = new ArrayList();
- for(int i = 0; i < selected.length; i++){
- ret.add((String) getValueAt(0, selected[i]));
- }
- return ret;
- }
-
- boolean listExists(String list) {
- List all = getAllLists();
- return all.contains(list);
- }
-
//delete selected from handle, events are fired from the handle
void deleteSelected(int[] selected) {
List toDel = new ArrayList();
@@ -353,68 +300,15 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel {
for (String del : toDel) {
listsHandle.deleteList(del);
}
-
}
//resync model from handle, then update table
void resync() {
- listData.clear();
- addLists(listsHandle.getListsL());
fireTableDataChanged();
}
-
- //resync single model entry from handle
- void resync(String listName) {
- TableEntry found = null;
- for (TableEntry e : listData) {
- if (e.name.equals(listName)) {
- found = e;
- break;
- }
- }
- if (found != null) {
- listData.remove(found);
- addList(listsHandle.getList(listName));
- }
- }
-
- //add list to the model
- private void addList(KeywordSearchList list) {
- if (!listExists(list.getName())) {
- listData.add(new TableEntry(list));
- }
- }
-
- //add lists to the model
- private void addLists(List lists) {
- for (KeywordSearchList list : lists) {
- if (!listExists(list.getName())) {
- listData.add(new TableEntry(list));
- }
- }
- }
-
- //single model entry
- class TableEntry implements Comparable {
-
- String name;
-
- TableEntry(KeywordSearchList list) {
- this.name = list.getName();
- }
-
- @Override
- public int compareTo(TableEntry te) {
- return this.name.compareTo(te.name);
- }
- }
}
void addListSelectionListener(ListSelectionListener l) {
listsTable.getSelectionModel().addListSelectionListener(l);
}
-
- List getAllLists() {
- return tableModel.getAllLists();
- }
}
diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchListsXML.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchListsXML.java
index 78e101244a..aa0e646514 100644
--- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchListsXML.java
+++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchListsXML.java
@@ -267,12 +267,7 @@ public class KeywordSearchListsXML {
}
boolean addList(String name, List newList, boolean useForIngest, boolean ingestMessages) {
- KeywordSearchList curList = getList(name);
- if (curList == null) {
- return addList(name, newList, useForIngest, ingestMessages, false);
- } else {
- return addList(name, newList, curList.getUseForIngest(), ingestMessages, false);
- }
+ return addList(name, newList, useForIngest, ingestMessages, false);
}
boolean addList(String name, List newList) {