2969: Verify the input data is valid from isValid() in the filter class

This commit is contained in:
U-BASIS\zhaohui
2017-10-27 09:22:38 -04:00
parent 4b279652bf
commit 9f637c8be4
6 changed files with 106 additions and 60 deletions
@@ -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);
}
});
}