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.okButton.text=OK
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.
ReportVisualPanel2.dataLabel.text=Select which data to report on:
ReportVisualPanel2.deselectAllButton.text=Deselect All

View File

@ -27,6 +27,7 @@ import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
@ -34,8 +35,11 @@ import javax.swing.ListCellRenderer;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import org.openide.DialogDisplayer;
import org.openide.NotifyDescriptor;
import org.openide.util.Lookup;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.actions.OpenPythonModulesFolderAction;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.python.JythonModuleLoader;
import org.sleuthkit.autopsy.report.ReportHTML;
@ -64,23 +68,55 @@ final class ReportVisualPanel1 extends JPanel implements ListSelectionListener {
// Initialize the list of ReportModules
private void initModules() {
for (TableReportModule module : Lookup.getDefault().lookupAll(TableReportModule.class)) {
if(validModule(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)) {
if(validModule(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()) {
if(validModule(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)) {
if(validModule(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>() {
@ -117,6 +153,11 @@ final class ReportVisualPanel1 extends JPanel implements ListSelectionListener {
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
public String getName() {
return NbBundle.getMessage(this.getClass(), "ReportVisualPanel1.getName.text");