catching and ignoring report modules with null or empty names

This commit is contained in:
momo 2015-09-10 11:27:52 -04:00
parent 1b413e0ea1
commit a89183f863
2 changed files with 50 additions and 8 deletions

View File

@ -3,6 +3,7 @@ CTL_ReportWizardAction=Run Report
ArtifactSelectionDialog.titleLabel.text=Select which artifacts you would like to report on: ArtifactSelectionDialog.titleLabel.text=Select which artifacts you would like to report on:
ArtifactSelectionDialog.okButton.text=OK ArtifactSelectionDialog.okButton.text=OK
ReportVisualPanel1.reportModulesLabel.text=Report Modules: ReportVisualPanel1.reportModulesLabel.text=Report Modules:
ReportVisualPanel1.initModules.invalidWarning=Encountered an invalid Report Module
DefaultReportConfigurationPanel.infoLabel.text=This report will be configured on the next screen. DefaultReportConfigurationPanel.infoLabel.text=This report will be configured on the next screen.
ReportVisualPanel2.dataLabel.text=Select which data to report on: ReportVisualPanel2.dataLabel.text=Select which data to report on:
ReportVisualPanel2.deselectAllButton.text=Deselect All ReportVisualPanel2.deselectAllButton.text=Deselect All

View File

@ -27,6 +27,7 @@ import java.util.Comparator;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Level;
import javax.swing.JList; import javax.swing.JList;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JRadioButton; import javax.swing.JRadioButton;
@ -34,8 +35,11 @@ import javax.swing.ListCellRenderer;
import javax.swing.ListSelectionModel; import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener; import javax.swing.event.ListSelectionListener;
import org.openide.DialogDisplayer;
import org.openide.NotifyDescriptor;
import org.openide.util.Lookup; import org.openide.util.Lookup;
import org.openide.util.NbBundle; import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.actions.OpenPythonModulesFolderAction;
import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.python.JythonModuleLoader; import org.sleuthkit.autopsy.python.JythonModuleLoader;
import org.sleuthkit.autopsy.report.ReportHTML; import org.sleuthkit.autopsy.report.ReportHTML;
@ -64,23 +68,55 @@ final class ReportVisualPanel1 extends JPanel implements ListSelectionListener {
// Initialize the list of ReportModules // Initialize the list of ReportModules
private void initModules() { private void initModules() {
for (TableReportModule module : Lookup.getDefault().lookupAll(TableReportModule.class)) { for (TableReportModule module : Lookup.getDefault().lookupAll(TableReportModule.class)) {
tableModules.add(module); if(validModule(module)) {
modules.add(module); tableModules.add(module);
modules.add(module);
} else {
// log
logger.log(Level.WARNING, "Invalid TableReportModule"); // NON_NLS
DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(
NbBundle.getMessage(ReportVisualPanel1.class, "ReportVisualPanel1.initModules.invalidWarning", module),
NotifyDescriptor.ERROR_MESSAGE));
}
} }
for (GeneralReportModule module : Lookup.getDefault().lookupAll(GeneralReportModule.class)) { for (GeneralReportModule module : Lookup.getDefault().lookupAll(GeneralReportModule.class)) {
generalModules.add(module); if(validModule(module)) {
modules.add(module); generalModules.add(module);
modules.add(module);
} else {
// log
logger.log(Level.WARNING, "Invalid GeneralReportModule"); // NON_NLS
DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(
NbBundle.getMessage(ReportVisualPanel1.class, "ReportVisualPanel1.initModules.invalidWarning", module),
NotifyDescriptor.ERROR_MESSAGE));
}
} }
for (GeneralReportModule module : JythonModuleLoader.getGeneralReportModules()) { for (GeneralReportModule module : JythonModuleLoader.getGeneralReportModules()) {
generalModules.add(module); if(validModule(module)) {
modules.add(module); generalModules.add(module);
modules.add(module);
} else {
//log
logger.log(Level.WARNING, "Invalid GeneralReportModule"); // NON_NLS
DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(
NbBundle.getMessage(ReportVisualPanel1.class, "ReportVisualPanel1.initModules.invalidWarning", module),
NotifyDescriptor.ERROR_MESSAGE));
}
} }
for (FileReportModule module : Lookup.getDefault().lookupAll(FileReportModule.class)) { for (FileReportModule module : Lookup.getDefault().lookupAll(FileReportModule.class)) {
fileModules.add(module); if(validModule(module)) {
modules.add(module); fileModules.add(module);
modules.add(module);
} else {
//log
logger.log(Level.WARNING, "Invalid FileReportModule"); // NON_NLS
DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(
NbBundle.getMessage(ReportVisualPanel1.class, "ReportVisualPanel1.initModules.invalidWarning", module),
NotifyDescriptor.ERROR_MESSAGE));
}
} }
Collections.sort(modules, new Comparator<ReportModule>() { Collections.sort(modules, new Comparator<ReportModule>() {
@ -116,6 +152,11 @@ final class ReportVisualPanel1 extends JPanel implements ListSelectionListener {
selectedIndex = 0; selectedIndex = 0;
modulesJList.setSelectedIndex(selectedIndex); modulesJList.setSelectedIndex(selectedIndex);
} }
// Make sure that the report module has a valid non-null name.
private boolean validModule(ReportModule module) {
return module != null && module.getName() != null && !module.getName().isEmpty();
}
@Override @Override
public String getName() { public String getName() {