diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/IngestJobInfoPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/IngestJobInfoPanel.java index e274245edd..a5b4ba74ce 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/IngestJobInfoPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/IngestJobInfoPanel.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2018 Basis Technology Corp. + * Copyright 2011-2019 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -35,6 +35,7 @@ import org.sleuthkit.datamodel.IngestJobInfo; import org.sleuthkit.datamodel.IngestModuleInfo; import org.sleuthkit.datamodel.SleuthkitCase; import org.sleuthkit.datamodel.TskCoreException; +import org.sleuthkit.datamodel.DataSource; /** * Panel for displaying ingest job history. @@ -44,9 +45,11 @@ public final class IngestJobInfoPanel extends javax.swing.JPanel { private static final Logger logger = Logger.getLogger(IngestJobInfoPanel.class.getName()); private List ingestJobs; + private List ingestJobsForSelectedDataSource = new ArrayList<>(); private IngestJobTableModel ingestJobTableModel = new IngestJobTableModel(); private IngestModuleTableModel ingestModuleTableModel = new IngestModuleTableModel(null); private final DateFormat datetimeFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + private DataSource selectedDataSource; /** * Creates new form IngestJobInfoPanel @@ -61,7 +64,7 @@ public final class IngestJobInfoPanel extends javax.swing.JPanel { private void customizeComponents() { refresh(); this.ingestJobTable.getSelectionModel().addListSelectionListener((ListSelectionEvent e) -> { - IngestJobInfo currJob = (ingestJobTable.getSelectedRow() < 0 ? null : this.ingestJobs.get(ingestJobTable.getSelectedRow())); + IngestJobInfo currJob = (ingestJobTable.getSelectedRow() < 0 ? null : this.ingestJobsForSelectedDataSource.get(ingestJobTable.getSelectedRow())); this.ingestModuleTableModel = new IngestModuleTableModel(currJob); this.ingestModuleTable.setModel(this.ingestModuleTableModel); }); @@ -75,12 +78,21 @@ public final class IngestJobInfoPanel extends javax.swing.JPanel { }); } + public void updateIngestHistoryData(DataSource selectedDataSource){ + this.selectedDataSource = selectedDataSource; + ingestJobsForSelectedDataSource.clear(); + for (IngestJobInfo jobInfo : ingestJobs){ + ingestJobsForSelectedDataSource.add(jobInfo); + } + this.repaint(); + } + + private void refresh() { try { SleuthkitCase skCase = Case.getCurrentCaseThrows().getSleuthkitCase(); - List ingestJobs = skCase.getIngestJobs(); - this.ingestJobs = ingestJobs; - this.repaint(); + this.ingestJobs = skCase.getIngestJobs(); + updateIngestHistoryData(selectedDataSource); } catch (TskCoreException | NoCurrentCaseException ex) { logger.log(Level.SEVERE, "Failed to load ingest jobs.", ex); JOptionPane.showMessageDialog(this, Bundle.IngestJobInfoPanel_loadIngestJob_error_text(), Bundle.IngestJobInfoPanel_loadIngestJob_error_title(), JOptionPane.ERROR_MESSAGE); @@ -104,7 +116,7 @@ public final class IngestJobInfoPanel extends javax.swing.JPanel { @Override public int getRowCount() { - return ingestJobs.size(); + return ingestJobsForSelectedDataSource.size(); } @Override @@ -114,7 +126,7 @@ public final class IngestJobInfoPanel extends javax.swing.JPanel { @Override public Object getValueAt(int rowIndex, int columnIndex) { - IngestJobInfo currIngestJob = ingestJobs.get(rowIndex); + IngestJobInfo currIngestJob = ingestJobsForSelectedDataSource.get(rowIndex); if (columnIndex == 0) { try { SleuthkitCase skCase = Case.getCurrentCaseThrows().getSleuthkitCase(); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/datasourceSummary/DataSourceSummaryDialog.java b/Core/src/org/sleuthkit/autopsy/casemodule/datasourceSummary/DataSourceSummaryDialog.java index b4ce62d871..078f7a056a 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/datasourceSummary/DataSourceSummaryDialog.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/datasourceSummary/DataSourceSummaryDialog.java @@ -25,6 +25,7 @@ import java.util.Observer; import java.util.logging.Logger; import javax.swing.event.ListSelectionEvent; import org.openide.util.NbBundle.Messages; +import org.sleuthkit.autopsy.casemodule.IngestJobInfoPanel; import org.sleuthkit.datamodel.DataSource; /** @@ -36,6 +37,7 @@ final class DataSourceSummaryDialog extends javax.swing.JDialog implements Obser private DataSourceSummaryCountsPanel countsPanel; private DataSourceSummaryDetailsPanel detailsPanel; private DataSourceBrowser dataSourcesPanel; + private IngestJobInfoPanel ingestHistoryPanel; private static final Logger logger = Logger.getLogger(DataSourceSummaryDialog.class.getName()); /** @@ -44,26 +46,30 @@ final class DataSourceSummaryDialog extends javax.swing.JDialog implements Obser * datasource. */ @Messages({ - "DataSourceSummaryPanel.window.title=Data Sources Summary", - "DataSourceSummaryPanel.countsTab.title=Counts", - "DataSourceSummaryPanel.detailsTab.title=Details" + "DataSourceSummaryDialog.window.title=Data Sources Summary", + "DataSourceSummaryDialog.countsTab.title=Counts", + "DataSourceSummaryDialog.detailsTab.title=Details", + "DataSourceSummaryDialog.ingestHistoryTab.title=Ingest History" }) DataSourceSummaryDialog(Frame owner) { - super(owner, Bundle.DataSourceSummaryPanel_window_title(), true); + super(owner, Bundle.DataSourceSummaryDialog_window_title(), true); Map usageMap = DataSourceInfoUtilities.getDataSourceTypes(); Map fileCountsMap = DataSourceInfoUtilities.getCountsOfFiles(); countsPanel = new DataSourceSummaryCountsPanel(fileCountsMap); detailsPanel = new DataSourceSummaryDetailsPanel(usageMap); dataSourcesPanel = new DataSourceBrowser(usageMap, fileCountsMap); + ingestHistoryPanel = new IngestJobInfoPanel(); initComponents(); dataSourceSummarySplitPane.setLeftComponent(dataSourcesPanel); - dataSourceTabbedPane.addTab(Bundle.DataSourceSummaryPanel_detailsTab_title(), detailsPanel); - dataSourceTabbedPane.addTab(Bundle.DataSourceSummaryPanel_countsTab_title(), countsPanel); + dataSourceTabbedPane.addTab(Bundle.DataSourceSummaryDialog_detailsTab_title(), detailsPanel); + dataSourceTabbedPane.addTab(Bundle.DataSourceSummaryDialog_countsTab_title(), countsPanel); + dataSourceTabbedPane.addTab(Bundle.DataSourceSummaryDialog_ingestHistoryTab_title(), ingestHistoryPanel); dataSourcesPanel.addListSelectionListener((ListSelectionEvent e) -> { if (!e.getValueIsAdjusting()) { DataSource selectedDataSource = dataSourcesPanel.getSelectedDataSource(); countsPanel.updateCountsTableData(selectedDataSource); detailsPanel.updateDetailsPanelData(selectedDataSource); + ingestHistoryPanel.updateIngestHistoryData(selectedDataSource); this.repaint(); } });