to be merged

This commit is contained in:
Sean-M 2013-03-06 18:20:09 -05:00
parent 5dc87cc906
commit e52591abba
11 changed files with 568 additions and 556 deletions

View File

@ -80,7 +80,7 @@ public class KeywordSearchConfigurationPanel1 extends javax.swing.JPanel impleme
public void actionPerformed(ActionEvent e) {
final String FEATURE_NAME = "Save Keyword List";
KeywordSearchListsXML writer = KeywordSearchListsXML.getCurrent();
KeywordSearchList currentKeywordList = editListPanel.getCurrentKeywordList();
KeywordSearchListsAbstract.KeywordSearchList currentKeywordList = editListPanel.getCurrentKeywordList();
List<Keyword> keywords = currentKeywordList.getKeywords();
if (keywords.isEmpty()) {

View File

@ -57,7 +57,7 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
private static Logger logger = Logger.getLogger(KeywordSearchEditListPanel.class.getName());
private KeywordTableModel tableModel;
private KeywordSearchList currentKeywordList;
private KeywordSearchListsAbstract.KeywordSearchList currentKeywordList;
private boolean ingestRunning;
@ -608,7 +608,7 @@ class KeywordSearchEditListPanel extends javax.swing.JPanel implements ListSelec
KeywordSearchListsXML reader = KeywordSearchListsXML.getCurrent();
List<KeywordSearchList> toWrite = new ArrayList<KeywordSearchList>();
List<KeywordSearchListsAbstract.KeywordSearchList> toWrite = new ArrayList<KeywordSearchListsAbstract.KeywordSearchList>();
toWrite.add(reader.getList(currentKeywordList.getName()));
final KeywordSearchListsXML exporter = new KeywordSearchListsXML(fileAbs);
boolean written = exporter.saveLists(toWrite);
@ -693,11 +693,11 @@ private void useForIngestCheckboxActionPerformed(java.awt.event.ActionEvent evt)
// Implemented by parent panel
}
KeywordSearchList getCurrentKeywordList() {
KeywordSearchListsAbstract.KeywordSearchList getCurrentKeywordList() {
return currentKeywordList;
}
void setCurrentKeywordList(KeywordSearchList list) {
void setCurrentKeywordList(KeywordSearchListsAbstract.KeywordSearchList list) {
currentKeywordList = list;
}

View File

@ -101,7 +101,7 @@ public final class KeywordSearchIngestModule implements IngestModuleAbstractFile
private volatile boolean runSearcher = false; //whether to run searcher next time
private List<Keyword> keywords; //keywords to search
private List<String> keywordLists; // lists currently being searched
private Map<String, KeywordSearchList> keywordToList; //keyword to list name mapping
private Map<String, KeywordSearchListsAbstract.KeywordSearchList> keywordToList; //keyword to list name mapping
private Timer commitTimer;
private Timer searchTimer;
private Indexer indexer;
@ -380,7 +380,7 @@ public final class KeywordSearchIngestModule implements IngestModuleAbstractFile
keywords = new ArrayList<Keyword>();
keywordLists = new ArrayList<String>();
keywordToList = new HashMap<String, KeywordSearchList>();
keywordToList = new HashMap<String, KeywordSearchListsAbstract.KeywordSearchList>();
initKeywords();
@ -566,7 +566,7 @@ public final class KeywordSearchIngestModule implements IngestModuleAbstractFile
StringBuilder sb = new StringBuilder();
for (KeywordSearchList list : loader.getListsL()) {
for (KeywordSearchListsAbstract.KeywordSearchList list : loader.getListsL()) {
final String listName = list.getName();
if (list.getUseForIngest() == true
|| (listsToAdd != null && listsToAdd.contains(listName))) {
@ -798,7 +798,7 @@ public final class KeywordSearchIngestModule implements IngestModuleAbstractFile
*/
private List<Keyword> keywords; //keywords to search
private List<String> keywordLists; // lists currently being searched
private Map<String, KeywordSearchList> keywordToList; //keyword to list name mapping
private Map<String, KeywordSearchListsAbstract.KeywordSearchList> keywordToList; //keyword to list name mapping
private AggregateProgressHandle progressGroup;
private final Logger logger = Logger.getLogger(Searcher.class.getName());
private boolean finalRun = false;
@ -806,7 +806,7 @@ public final class KeywordSearchIngestModule implements IngestModuleAbstractFile
Searcher(List<String> keywordLists) {
this.keywordLists = new ArrayList<String>(keywordLists);
this.keywords = new ArrayList<Keyword>();
this.keywordToList = new HashMap<String, KeywordSearchList>();
this.keywordToList = new HashMap<String, KeywordSearchListsAbstract.KeywordSearchList>();
//keywords are populated as searcher runs
}
@ -874,7 +874,7 @@ public final class KeywordSearchIngestModule implements IngestModuleAbstractFile
}
final String queryStr = keywordQuery.getQuery();
final KeywordSearchList list = keywordToList.get(queryStr);
final KeywordSearchListsAbstract.KeywordSearchList list = keywordToList.get(queryStr);
final String listName = list.getName();
//new subProgress will be active after the initial query
@ -1110,7 +1110,7 @@ public final class KeywordSearchIngestModule implements IngestModuleAbstractFile
this.keywordToList.clear();
for (String name : this.keywordLists) {
KeywordSearchList list = loader.getList(name);
KeywordSearchListsAbstract.KeywordSearchList list = loader.getList(name);
for (Keyword k : list.getKeywords()) {
this.keywords.add(k);
this.keywordToList.put(k.getQuery(), list);

View File

@ -38,12 +38,12 @@ public class KeywordSearchIngestSimplePanel extends javax.swing.JPanel {
private final static Logger logger = Logger.getLogger(KeywordSearchIngestSimplePanel.class.getName());
public static final String PROP_OPTIONS = "Keyword Search_Options";
private KeywordTableModel tableModel;
private List<KeywordSearchList> lists;
private List<KeywordSearchListsAbstract.KeywordSearchList> lists;
/** Creates new form KeywordSearchIngestSimplePanel */
public KeywordSearchIngestSimplePanel() {
tableModel = new KeywordTableModel();
lists = new ArrayList<KeywordSearchList>();
lists = new ArrayList<KeywordSearchListsAbstract.KeywordSearchList>();
reloadLists();
initComponents();
customizeComponents();
@ -222,7 +222,7 @@ public class KeywordSearchIngestSimplePanel extends javax.swing.JPanel {
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
KeywordSearchList list = KeywordSearchIngestSimplePanel.this.lists.get(rowIndex);
KeywordSearchListsAbstract.KeywordSearchList list = KeywordSearchIngestSimplePanel.this.lists.get(rowIndex);
if(columnIndex == 0) {
return list.getUseForIngest();
} else {
@ -238,7 +238,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);
KeywordSearchListsAbstract.KeywordSearchList list = KeywordSearchIngestSimplePanel.this.lists.get(rowIndex);
if(columnIndex == 0){
KeywordSearchListsXML loader = KeywordSearchListsXML.getCurrent();
loader.addList(list.getName(), list.getKeywords(), (Boolean) aValue, false);

View File

@ -36,7 +36,7 @@ import org.sleuthkit.datamodel.BlackboardAttribute;
public abstract class KeywordSearchListsAbstract {
protected String filePath;
Map<String, KeywordSearchList> theLists; //the keyword data
public Map<String, KeywordSearchList> theLists; //the keyword data
static KeywordSearchListsXML currentInstance = null;
private static final String CUR_LISTS_FILE_NAME = "keywords.xml";
private static String CUR_LISTS_FILE = PlatformUtil.getUserConfigDirectory() + File.separator + CUR_LISTS_FILE_NAME;
@ -60,7 +60,7 @@ public abstract class KeywordSearchListsAbstract {
/**
* get instance for managing the current keyword list of the application
*/
static KeywordSearchListsXML getCurrent() {
public static KeywordSearchListsXML getCurrent() {
if (currentInstance == null) {
currentInstance = new KeywordSearchListsXML(CUR_LISTS_FILE);
currentInstance.reload();
@ -424,12 +424,11 @@ public abstract class KeywordSearchListsAbstract {
File f = new File(filePath);
return f.exists() && f.canRead() && f.canWrite();
}
}
/**
* a representation of a single keyword list created or loaded
*/
class KeywordSearchList {
public class KeywordSearchList {
private String name;
private Date created;
@ -474,43 +473,43 @@ class KeywordSearchList {
return hash;
}
String getName() {
public String getName() {
return name;
}
Date getDateCreated() {
public Date getDateCreated() {
return created;
}
Date getDateModified() {
public Date getDateModified() {
return modified;
}
Boolean getUseForIngest() {
public Boolean getUseForIngest() {
return useForIngest;
}
void setUseForIngest(boolean use) {
public void setUseForIngest(boolean use) {
this.useForIngest = use;
}
Boolean getIngestMessages() {
public Boolean getIngestMessages() {
return ingestMessages;
}
void setIngestMessages(boolean ingestMessages) {
public void setIngestMessages(boolean ingestMessages) {
this.ingestMessages = ingestMessages;
}
List<Keyword> getKeywords() {
public List<Keyword> getKeywords() {
return keywords;
}
boolean hasKeyword(Keyword keyword) {
public boolean hasKeyword(Keyword keyword) {
return keywords.contains(keyword);
}
boolean hasKeyword(String keyword) {
public boolean hasKeyword(String keyword) {
//note, this ignores isLiteral
for (Keyword k : keywords) {
if (k.getQuery().equals(keyword)) {
@ -520,7 +519,8 @@ class KeywordSearchList {
return false;
}
Boolean isLocked() {
public Boolean isLocked() {
return locked;
}
}
}

View File

@ -37,7 +37,7 @@
<Component id="importButton" min="-2" pref="126" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace min="0" pref="4" max="32767" attributes="0"/>
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>

View File

@ -243,12 +243,12 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel implements Op
return;
}
List<KeywordSearchList> toImport = reader.getListsL();
List<KeywordSearchList> toImportConfirmed = new ArrayList<KeywordSearchList>();
List<KeywordSearchListsAbstract.KeywordSearchList> toImport = reader.getListsL();
List<KeywordSearchListsAbstract.KeywordSearchList> toImportConfirmed = new ArrayList<KeywordSearchListsAbstract.KeywordSearchList>();
final KeywordSearchListsXML writer = KeywordSearchListsXML.getCurrent();
for (KeywordSearchList list : toImport) {
for (KeywordSearchListsAbstract.KeywordSearchList list : toImport) {
//check name collisions
if (writer.listExists(list.getName())) {
Object[] options = {"Yes, overwrite",

View File

@ -105,7 +105,7 @@ class KeywordSearchListsViewerPanel extends AbstractKeywordSearchPerformer {
ListSelectionModel listSelectionModel = (ListSelectionModel) e.getSource();
if (!listSelectionModel.isSelectionEmpty()) {
int index = listSelectionModel.getMinSelectionIndex();
KeywordSearchList list = listsTableModel.getListAt(index);
KeywordSearchListsAbstract.KeywordSearchList list = listsTableModel.getListAt(index);
keywordsTableModel.resync(list);
} else {
keywordsTableModel.deleteAll();
@ -307,13 +307,13 @@ class KeywordSearchListsViewerPanel extends AbstractKeywordSearchPerformer {
@Override
public List<Keyword> getQueryList() {
List<Keyword> ret = new ArrayList<Keyword>();
for (KeywordSearchList list : getSelectedLists()) {
for (KeywordSearchListsAbstract.KeywordSearchList list : getSelectedLists()) {
ret.addAll(list.getKeywords());
}
return ret;
}
private List<KeywordSearchList> getSelectedLists() {
private List<KeywordSearchListsAbstract.KeywordSearchList> getSelectedLists() {
return listsTableModel.getSelectedListsL();
}
@ -427,7 +427,7 @@ class KeywordSearchListsViewerPanel extends AbstractKeywordSearchPerformer {
return ret;
}
KeywordSearchList getListAt(int rowIndex) {
KeywordSearchListsAbstract.KeywordSearchList getListAt(int rowIndex) {
return listsHandle.getList((String) getValueAt(rowIndex, 1));
}
@ -441,8 +441,8 @@ class KeywordSearchListsViewerPanel extends AbstractKeywordSearchPerformer {
return ret;
}
List<KeywordSearchList> getSelectedListsL() {
List<KeywordSearchList> ret = new ArrayList<KeywordSearchList>();
List<KeywordSearchListsAbstract.KeywordSearchList> getSelectedListsL() {
List<KeywordSearchListsAbstract.KeywordSearchList> ret = new ArrayList<KeywordSearchListsAbstract.KeywordSearchList>();
for (String s : getSelectedLists()) {
ret.add(listsHandle.getList(s));
}
@ -462,8 +462,8 @@ class KeywordSearchListsViewerPanel extends AbstractKeywordSearchPerformer {
}
//add lists to the model
private void addLists(List<KeywordSearchList> lists) {
for (KeywordSearchList list : lists) {
private void addLists(List<KeywordSearchListsAbstract.KeywordSearchList> lists) {
for (KeywordSearchListsAbstract.KeywordSearchList list : lists) {
if (!listExists(list.getName())) {
listData.add(new ListTableEntry(list, ingestRunning));
}
@ -476,7 +476,7 @@ class KeywordSearchListsViewerPanel extends AbstractKeywordSearchPerformer {
String name;
Boolean selected;
ListTableEntry(KeywordSearchList list, boolean ingestRunning) {
ListTableEntry(KeywordSearchListsAbstract.KeywordSearchList list, boolean ingestRunning) {
this.name = list.getName();
if (ingestRunning) {
this.selected = list.getUseForIngest();
@ -558,7 +558,7 @@ class KeywordSearchListsViewerPanel extends AbstractKeywordSearchPerformer {
return getValueAt(0, c).getClass();
}
void resync(KeywordSearchList list) {
void resync(KeywordSearchListsAbstract.KeywordSearchList list) {
listData.clear();
for (Keyword k : list.getKeywords()) {
listData.add(new KeywordTableEntry(k));

View File

@ -236,7 +236,7 @@ public class KeywordSearchResultFactory extends ChildFactory<KeyValueQuery> {
//get listname
String listName = "";
KeywordSearchList list = KeywordSearchListsXML.getCurrent().getListWithKeyword(tcq.getQueryString());
KeywordSearchListsAbstract.KeywordSearchList list = KeywordSearchListsXML.getCurrent().getListWithKeyword(tcq.getQueryString());
if (list != null) {
listName = list.getName();
}

View File

@ -15,6 +15,15 @@
<specification-version>5.0</specification-version>
</run-dependency>
</dependency>
<dependency>
<code-name-base>org.sleuthkit.autopsy.keywordsearch</code-name-base>
<build-prerequisite/>
<compile-dependency/>
<run-dependency>
<release-version>5</release-version>
<specification-version>3.0</specification-version>
</run-dependency>
</dependency>
</module-dependencies>
<test-dependencies>
<test-type>

View File

@ -52,6 +52,7 @@ import org.netbeans.jemmy.operators.JTableOperator;
import org.netbeans.jemmy.operators.JTextFieldOperator;
import org.netbeans.junit.NbModuleSuite;
import org.sleuthkit.autopsy.ingest.IngestManager;
import org.sleuthkit.autopsy.keywordsearch.*;
/**
* This test expects the following system properties to be set:
* img_path: The fully qualified path to the image file (if split, the first file)
@ -207,6 +208,8 @@ public class RegressionTest extends TestCase{
logger.info("Search Configure");
JDialog jd = JDialogOperator.waitJDialog("Advanced Keyword Search Configuration", false, false);
JDialogOperator jdo = new JDialogOperator(jd);
KeywordSearchListsXML curr = KeywordSearchListsXML.getCurrent();
curr.theLists.get("URLs").setUseForIngest(true);
String words = System.getProperty("keyword_path");
JButtonOperator jbo0 = new JButtonOperator(jdo, "Import List", 0);
jbo0.pushNoBlock();