From b11490a9efcfe74f952384bd9538339bc6b85da2 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Fri, 15 Jul 2016 09:37:39 -0400 Subject: [PATCH 1/4] Fix ISEs and NPEs emanating from IngestJobSettingsPanel --- .../ingest/IngestJobSettingsPanel.java | 44 +++++++++---------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java index 410ca3a0c7..27963639e0 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java @@ -22,7 +22,6 @@ import java.awt.Component; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.ArrayList; @@ -37,7 +36,6 @@ import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.SwingUtilities; import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableColumn; @@ -61,10 +59,10 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { private static ImageIcon infoIcon = new ImageIcon(IngestJobSettingsPanel.class.getResource("/org/sleuthkit/autopsy/images/information-frame.png")); private final IngestJobSettings settings; private final List dataSources; + private final List ingestJobs; private final List modules; - private List ingestJobs; + private final IngestModulesTableModel tableModel = new IngestModulesTableModel(); private IngestModuleModel selectedModule; - private IngestModulesTableModel tableModel = new IngestModulesTableModel(); private static final Logger logger = Logger.getLogger(IngestJobSettingsPanel.class.getName()); /** @@ -75,18 +73,12 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { */ public IngestJobSettingsPanel(IngestJobSettings settings) { this.settings = settings; - this.modules = new ArrayList<>(); + dataSources = new ArrayList<>(); + ingestJobs = new ArrayList<>(); + modules = new ArrayList<>(); for (IngestModuleTemplate moduleTemplate : settings.getIngestModuleTemplates()) { - this.modules.add(new IngestModuleModel(moduleTemplate)); + modules.add(new IngestModuleModel(moduleTemplate)); } - SleuthkitCase skCase = Case.getCurrentCase().getSleuthkitCase(); - try { - ingestJobs = skCase.getIngestJobs(); - } catch (TskCoreException ex) { - logger.log(Level.SEVERE, "Failed to load ingest job information.", ex); - ingestJobs = new ArrayList<>(); - } - this.dataSources = new ArrayList<>(); initComponents(); customizeComponents(); } @@ -100,18 +92,20 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { */ IngestJobSettingsPanel(IngestJobSettings settings, List dataSources) { this.settings = settings; - this.modules = new ArrayList<>(); + this.dataSources = dataSources; + ingestJobs = new ArrayList<>(); + try { + SleuthkitCase skCase = Case.getCurrentCase().getSleuthkitCase(); + ingestJobs.addAll(skCase.getIngestJobs()); + } catch (IllegalStateException ex) { + logger.log(Level.SEVERE, "No open case", ex); + } catch (TskCoreException ex) { + logger.log(Level.SEVERE, "Failed to load ingest job information", ex); + } + modules = new ArrayList<>(); for (IngestModuleTemplate moduleTemplate : settings.getIngestModuleTemplates()) { this.modules.add(new IngestModuleModel(moduleTemplate)); } - SleuthkitCase skCase = Case.getCurrentCase().getSleuthkitCase(); - try { - ingestJobs = skCase.getIngestJobs(); - } catch (TskCoreException ex) { - logger.log(Level.SEVERE, "Failed to load ingest job information.", ex); - ingestJobs = new ArrayList<>(); - } - this.dataSources = dataSources; initComponents(); customizeComponents(); } @@ -488,6 +482,8 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { */ private class IngestModulesTableModel extends AbstractTableModel { + private static final long serialVersionUID = 1L; + @Override public int getRowCount() { return modules.size(); @@ -529,7 +525,7 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { } private ImageIcon getIcon(IngestModuleModel module) { - if (dataSources.isEmpty()) { + if (dataSources.isEmpty() || ingestJobs.isEmpty()) { return null; } boolean previousVersionRun = false; From 62c760363b60eba23d2731c06d17958f6193688d Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Fri, 15 Jul 2016 09:44:11 -0400 Subject: [PATCH 2/4] Tidy up IngestJobSettigsPanel construction --- .../ingest/IngestJobSettingsPanel.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java index 27963639e0..2a5531bbdc 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java @@ -50,7 +50,7 @@ import org.sleuthkit.datamodel.SleuthkitCase; import org.sleuthkit.datamodel.TskCoreException; /** - * User interface component to allow a user to make ingest job settings. + * A panel to allow a user to make ingest job settings. */ public final class IngestJobSettingsPanel extends javax.swing.JPanel { @@ -59,23 +59,20 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { private static ImageIcon infoIcon = new ImageIcon(IngestJobSettingsPanel.class.getResource("/org/sleuthkit/autopsy/images/information-frame.png")); private final IngestJobSettings settings; private final List dataSources; - private final List ingestJobs; - private final List modules; + private final List ingestJobs = new ArrayList<>(); + private final List modules = new ArrayList<>(); private final IngestModulesTableModel tableModel = new IngestModulesTableModel(); private IngestModuleModel selectedModule; private static final Logger logger = Logger.getLogger(IngestJobSettingsPanel.class.getName()); /** - * Construct a user interface component to allow a user to make ingest job - * settings. + * Construct a panel to allow a user to make ingest job settings. * * @param settings The initial settings for the ingest job. */ public IngestJobSettingsPanel(IngestJobSettings settings) { this.settings = settings; dataSources = new ArrayList<>(); - ingestJobs = new ArrayList<>(); - modules = new ArrayList<>(); for (IngestModuleTemplate moduleTemplate : settings.getIngestModuleTemplates()) { modules.add(new IngestModuleModel(moduleTemplate)); } @@ -84,8 +81,7 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { } /** - * Construct a user interface component to allow a user to make ingest job - * settings. + * Construct a panel to allow a user to make ingest job settings. * * @param settings The initial settings for the ingest job. * @param dataSources The data sources ingest is being run on. @@ -93,7 +89,6 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { IngestJobSettingsPanel(IngestJobSettings settings, List dataSources) { this.settings = settings; this.dataSources = dataSources; - ingestJobs = new ArrayList<>(); try { SleuthkitCase skCase = Case.getCurrentCase().getSleuthkitCase(); ingestJobs.addAll(skCase.getIngestJobs()); @@ -102,7 +97,6 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Failed to load ingest job information", ex); } - modules = new ArrayList<>(); for (IngestModuleTemplate moduleTemplate : settings.getIngestModuleTemplates()) { this.modules.add(new IngestModuleModel(moduleTemplate)); } @@ -177,6 +171,12 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { this.modulesTable.getColumnModel().getColumn(1).setMaxWidth(20); this.modulesTable.getColumnModel().getColumn(1).setMinWidth(20); modulesTable.setRowHeight(20); + + /* + * Only enable the ingest jobs history panel if there are data sources + * and jobs for which to display the history. + */ + pastJobsButton.setEnabled(!dataSources.isEmpty() && !ingestJobs.isEmpty()); } /** From aa4a0d3816014f15a9ff73943bc0e1cb2d30b930 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Fri, 15 Jul 2016 09:47:10 -0400 Subject: [PATCH 3/4] Further tidy up IngestJobSettigsPanel construction --- .../org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java index 2a5531bbdc..f9befef911 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java @@ -58,7 +58,7 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { private static ImageIcon warningIcon = new ImageIcon(IngestJobSettingsPanel.class.getResource("/org/sleuthkit/autopsy/images/warning_triangle.png")); private static ImageIcon infoIcon = new ImageIcon(IngestJobSettingsPanel.class.getResource("/org/sleuthkit/autopsy/images/information-frame.png")); private final IngestJobSettings settings; - private final List dataSources; + private final List dataSources = new ArrayList<>(); private final List ingestJobs = new ArrayList<>(); private final List modules = new ArrayList<>(); private final IngestModulesTableModel tableModel = new IngestModulesTableModel(); @@ -72,7 +72,6 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { */ public IngestJobSettingsPanel(IngestJobSettings settings) { this.settings = settings; - dataSources = new ArrayList<>(); for (IngestModuleTemplate moduleTemplate : settings.getIngestModuleTemplates()) { modules.add(new IngestModuleModel(moduleTemplate)); } @@ -88,7 +87,6 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { */ IngestJobSettingsPanel(IngestJobSettings settings, List dataSources) { this.settings = settings; - this.dataSources = dataSources; try { SleuthkitCase skCase = Case.getCurrentCase().getSleuthkitCase(); ingestJobs.addAll(skCase.getIngestJobs()); From 46aed12d9b768421867e5b9a6cbe7e1a50b90d32 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Fri, 15 Jul 2016 10:01:32 -0400 Subject: [PATCH 4/4] Fix further tidy up of IngestJobSettigsPanel construction --- .../src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java | 1 + 1 file changed, 1 insertion(+) diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java index f9befef911..df7b9c1039 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettingsPanel.java @@ -87,6 +87,7 @@ public final class IngestJobSettingsPanel extends javax.swing.JPanel { */ IngestJobSettingsPanel(IngestJobSettings settings, List dataSources) { this.settings = settings; + this.dataSources.addAll(dataSources); try { SleuthkitCase skCase = Case.getCurrentCase().getSleuthkitCase(); ingestJobs.addAll(skCase.getIngestJobs());