mirror of
https://github.com/elisspace/autopsy.git
synced 2026-10-03 15:59:52 +00:00
2969: Verify the input data is valid from isValid() in the filter class
This commit is contained in:
@@ -40,12 +40,9 @@ import javax.swing.JSeparator;
|
||||
import javax.swing.ListCellRenderer;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import javax.swing.event.CaretEvent;
|
||||
import javax.swing.event.CaretListener;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.openide.util.NbBundle.Messages;
|
||||
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||
|
||||
/**
|
||||
* Filters file date properties (modified/created/etc.. times)
|
||||
@@ -207,41 +204,26 @@ class DateSearchFilter extends AbstractFileSearchFilter<DateSearchPanel> {
|
||||
|
||||
@Override
|
||||
@Messages ({
|
||||
"End_Date_Before_Start_Date=The end date should be after the start date."
|
||||
"End.date.before.start.date=The end date should be after the start date.",
|
||||
"No.checkbox.selected=Non of the date search checkbox is selected."
|
||||
})
|
||||
public boolean isValid() {
|
||||
|
||||
final DateSearchPanel panel = this.getComponent();
|
||||
DateSearchPanel panel = this.getComponent();
|
||||
Calendar startDate = getCalendarDate(panel.getDateFromTextField().getText());
|
||||
Calendar endDate = getCalendarDate(panel.getDateToTextField().getText());
|
||||
|
||||
panel.getDateFromTextField().addCaretListener(new CaretListener() {
|
||||
@Override
|
||||
public void caretUpdate(CaretEvent ce) {
|
||||
String startDateValue = panel.getDateFromTextField().getText();
|
||||
Calendar startDate = getCalendarDate(startDateValue);
|
||||
String endDateValue = panel.getDateToTextField().getText();
|
||||
Calendar endDate = getCalendarDate(endDateValue);
|
||||
|
||||
if (startDate != null && startDate.after(endDate)) {
|
||||
MessageNotifyUtil.Message.warn(Bundle.End_Date_Before_Start_Date());
|
||||
}
|
||||
}
|
||||
});
|
||||
if ((startDate != null && startDate.after(endDate)) || (endDate != null && endDate.before(startDate))) {
|
||||
setLastError(Bundle.End_date_before_start_date());
|
||||
return false;
|
||||
}
|
||||
|
||||
panel.getDateToTextField().addCaretListener(new CaretListener() {
|
||||
@Override
|
||||
public void caretUpdate(CaretEvent ce) {
|
||||
String startDateValue = panel.getDateFromTextField().getText();
|
||||
Calendar startDate = getCalendarDate(startDateValue);
|
||||
String endDateValue = panel.getDateToTextField().getText();
|
||||
Calendar endDate = getCalendarDate(endDateValue);
|
||||
|
||||
if (endDate != null && endDate.before(startDate)) {
|
||||
MessageNotifyUtil.Message.warn(Bundle.End_Date_Before_Start_Date());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return this.getComponent().isValidSearch();
|
||||
if (!panel.isValidSearch()) {
|
||||
setLastError(Bundle.No_checkbox_selected());
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -20,8 +20,6 @@ package org.sleuthkit.autopsy.filesearch;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyAdapter;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.util.Date;
|
||||
@@ -31,6 +29,8 @@ import javax.swing.JComboBox;
|
||||
import javax.swing.JFormattedTextField;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JPopupMenu;
|
||||
import javax.swing.event.DocumentEvent;
|
||||
import javax.swing.event.DocumentListener;
|
||||
|
||||
/**
|
||||
* Subpanel with controls for file data filtering.
|
||||
@@ -77,6 +77,41 @@ class DateSearchPanel extends javax.swing.JPanel {
|
||||
copyMenuItem.addActionListener(actList);
|
||||
pasteMenuItem.addActionListener(actList);
|
||||
selectAllMenuItem.addActionListener(actList);
|
||||
this.dateFromTextField.getDocument().addDocumentListener(new DocumentListener() {
|
||||
@Override
|
||||
public void insertUpdate(DocumentEvent e) {
|
||||
firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeUpdate(DocumentEvent e) {
|
||||
firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changedUpdate(DocumentEvent e) {
|
||||
firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null);
|
||||
}
|
||||
});
|
||||
|
||||
this.dateToTextField.getDocument().addDocumentListener(new DocumentListener() {
|
||||
@Override
|
||||
public void insertUpdate(DocumentEvent e) {
|
||||
firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeUpdate(DocumentEvent e) {
|
||||
firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changedUpdate(DocumentEvent e) {
|
||||
firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
this.setComponentsEnabled();
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,6 @@ package org.sleuthkit.autopsy.filesearch;
|
||||
import java.awt.Component;
|
||||
import java.awt.Cursor;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
package org.sleuthkit.autopsy.filesearch;
|
||||
|
||||
import java.awt.event.ActionListener;
|
||||
import javax.swing.JTextField;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.util.NbBundle.Messages;
|
||||
import org.sleuthkit.autopsy.filesearch.FileSearchFilter.FilterValidationException;
|
||||
|
||||
/**
|
||||
@@ -61,8 +61,25 @@ class HashSearchFilter extends AbstractFileSearchFilter<HashSearchPanel> {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Messages({
|
||||
"Empty.hash=Hash data is empty.",
|
||||
"# {0} - hash data length", "Wrong.length=Input lenght({0}), doesn't match the MD5 length(32).",
|
||||
"Wrong.character=Input data is an invalid MD5 hex data."
|
||||
})
|
||||
public boolean isValid() {
|
||||
JTextField inputHashData = this.getComponent().getSearchTextField();
|
||||
return !inputHashData.getText().isEmpty() || inputHashData.getText().length() == 32 || inputHashData.getText().matches("[0-9a-fA-F]+");
|
||||
String inputHashData = this.getComponent().getSearchTextField().getText();
|
||||
if (inputHashData.isEmpty()) {
|
||||
setLastError(Bundle.Empty_hash());
|
||||
return false;
|
||||
}
|
||||
if (inputHashData.length() != 32) {
|
||||
setLastError(Bundle.Wrong_length(inputHashData.length()));
|
||||
return false;
|
||||
}
|
||||
if (!inputHashData.matches("[0-9a-fA-F]+")) {
|
||||
setLastError(Bundle.Wrong_character());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,12 +19,9 @@
|
||||
package org.sleuthkit.autopsy.filesearch;
|
||||
|
||||
import java.awt.event.ActionListener;
|
||||
import javax.swing.InputVerifier;
|
||||
import javax.swing.JComboBox;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JFormattedTextField;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||
import org.openide.util.NbBundle.Messages;
|
||||
import org.sleuthkit.autopsy.filesearch.FileSearchFilter.FilterValidationException;
|
||||
|
||||
/**
|
||||
@@ -78,27 +75,23 @@ class SizeSearchFilter extends AbstractFileSearchFilter<SizeSearchPanel> {
|
||||
}
|
||||
|
||||
@Override
|
||||
@NbBundle.Messages ({
|
||||
"Non_Negative_Number=Please input a non negative number."
|
||||
@Messages ({
|
||||
"Non.negative.number=Input size data is a negative number.",
|
||||
"Not.a.number=Input size data is not a number."
|
||||
})
|
||||
public boolean isValid() {
|
||||
this.getComponent().getSizeTextField().setInputVerifier(new InputVerifier() {
|
||||
@Override
|
||||
public boolean verify(JComponent input) {
|
||||
String inputText = ((JFormattedTextField) input).getText();
|
||||
try {
|
||||
int inputInt = Integer.parseInt(inputText);
|
||||
if (inputInt < 0) {
|
||||
MessageNotifyUtil.Message.warn(Bundle.Non_Negative_Number());
|
||||
return false;
|
||||
}
|
||||
} catch (NumberFormatException | NullPointerException e) {
|
||||
MessageNotifyUtil.Message.warn(Bundle.Non_Negative_Number());
|
||||
String input = this.getComponent().getSizeTextField().getText();
|
||||
|
||||
try {
|
||||
int inputInt = Integer.parseInt(input);
|
||||
if (inputInt < 0) {
|
||||
setLastError(Bundle.Non_negative_number());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
} catch (NumberFormatException | NullPointerException e) {
|
||||
setLastError(Bundle.Not_a_number());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,8 @@ import javax.swing.JCheckBox;
|
||||
import javax.swing.JComboBox;
|
||||
import javax.swing.JFormattedTextField;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.event.DocumentEvent;
|
||||
import javax.swing.event.DocumentListener;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -65,6 +67,24 @@ class SizeSearchPanel extends javax.swing.JPanel {
|
||||
copyMenuItem.addActionListener(actList);
|
||||
pasteMenuItem.addActionListener(actList);
|
||||
selectAllMenuItem.addActionListener(actList);
|
||||
this.sizeTextField.getDocument().addDocumentListener(new DocumentListener() {
|
||||
@Override
|
||||
public void insertUpdate(DocumentEvent e) {
|
||||
firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeUpdate(DocumentEvent e) {
|
||||
firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changedUpdate(DocumentEvent e) {
|
||||
firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user