19 package org.sleuthkit.autopsy.casemodule;
21 import java.beans.PropertyChangeEvent;
22 import java.text.DateFormat;
23 import java.text.SimpleDateFormat;
24 import java.util.ArrayList;
25 import java.util.Date;
26 import java.util.List;
27 import java.util.logging.Level;
28 import java.util.logging.Logger;
29 import javax.swing.JOptionPane;
30 import javax.swing.event.ListSelectionEvent;
31 import javax.swing.table.AbstractTableModel;
32 import org.openide.util.NbBundle.Messages;
48 private final DateFormat
datetimeFormat =
new SimpleDateFormat(
"yyyy/MM/dd HH:mm:ss");
58 @Messages({
"IngestJobInfoPanel.loadIngestJob.error.text=Failed to load ingest jobs.",
59 "IngestJobInfoPanel.loadIngestJob.error.title=Load Failure"})
62 this.
ingestJobTable.getSelectionModel().addListSelectionListener((ListSelectionEvent e) -> {
83 logger.log(Level.SEVERE,
"Failed to load ingest jobs.", ex);
84 JOptionPane.showMessageDialog(null, Bundle.IngestJobInfoPanel_loadIngestJob_error_text(), Bundle.IngestJobInfoPanel_loadIngestJob_error_title(), JOptionPane.ERROR_MESSAGE);
88 @Messages({
"IngestJobInfoPanel.IngestJobTableModel.DataSource.header=Data Source",
89 "IngestJobInfoPanel.IngestJobTableModel.StartTime.header=Start Time",
90 "IngestJobInfoPanel.IngestJobTableModel.EndTime.header=End Time",
91 "IngestJobInfoPanel.IngestJobTableModel.IngestStatus.header=Ingest Status"})
94 private List<String> columnHeaders =
new ArrayList<>();
97 columnHeaders.add(Bundle.IngestJobInfoPanel_IngestJobTableModel_DataSource_header());
98 columnHeaders.add(Bundle.IngestJobInfoPanel_IngestJobTableModel_StartTime_header());
99 columnHeaders.add(Bundle.IngestJobInfoPanel_IngestJobTableModel_EndTime_header());
100 columnHeaders.add(Bundle.IngestJobInfoPanel_IngestJobTableModel_IngestStatus_header());
105 return ingestJobs.size();
110 return columnHeaders.size();
117 if (columnIndex == 0) {
121 logger.log(Level.SEVERE,
"Failed to get content from db", ex);
124 }
else if (columnIndex == 1) {
126 }
else if (columnIndex == 2) {
128 if (endDate.getTime() == 0) {
132 }
else if (columnIndex == 3) {
140 return columnHeaders.get(column);
145 @Messages({
"IngestJobInfoPanel.IngestModuleTableModel.ModuleName.header=Module Name",
146 "IngestJobInfoPanel.IngestModuleTableModel.ModuleVersion.header=Module Version"})
149 private List<String> columnHeaders =
new ArrayList<>();
153 columnHeaders.add(Bundle.IngestJobInfoPanel_IngestModuleTableModel_ModuleName_header());
154 columnHeaders.add(Bundle.IngestJobInfoPanel_IngestModuleTableModel_ModuleVersion_header());
155 this.currJob = currJob;
160 if (currJob == null) {
168 return columnHeaders.size();
173 if (currJob != null) {
175 if (columnIndex == 0) {
177 }
else if (columnIndex == 1) {
187 return columnHeaders.get(column);
197 @SuppressWarnings(
"unchecked")
203 jLabel1 =
new javax.swing.JLabel();
204 jLabel2 =
new javax.swing.JLabel();
213 ingestJobTable.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
215 org.openide.awt.Mnemonics.setLocalizedText(
jLabel1,
org.openide.util.NbBundle.getMessage(
IngestJobInfoPanel.class,
"IngestJobInfoPanel.jLabel1.text"));
217 org.openide.awt.Mnemonics.setLocalizedText(
jLabel2,
org.openide.util.NbBundle.getMessage(
IngestJobInfoPanel.class,
"IngestJobInfoPanel.jLabel2.text"));
222 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
223 this.setLayout(layout);
224 layout.setHorizontalGroup(
225 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
226 .addGroup(layout.createSequentialGroup()
228 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
230 .addComponent(
jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 485, Short.MAX_VALUE))
232 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
233 .addComponent(
jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 254, javax.swing.GroupLayout.PREFERRED_SIZE)
237 layout.setVerticalGroup(
238 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
239 .addGroup(layout.createSequentialGroup()
241 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
244 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
245 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
246 .addComponent(
jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 162, Short.MAX_VALUE)
247 .addComponent(
jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
List< IngestModuleInfo > getIngestModuleInfo()
Object getValueAt(int rowIndex, int columnIndex)
IngestJobTableModel ingestJobTableModel
static synchronized IngestManager getInstance()
javax.swing.JScrollPane jScrollPane1
javax.swing.JScrollPane jScrollPane2
Content getContentById(long id)
final DateFormat datetimeFormat
Object getValueAt(int rowIndex, int columnIndex)
javax.swing.JTable ingestModuleTable
List< IngestJobInfo > ingestJobs
void addIngestJobEventListener(final PropertyChangeListener listener)
SleuthkitCase getSleuthkitCase()
javax.swing.JLabel jLabel2
String getColumnName(int column)
javax.swing.JLabel jLabel1
IngestModuleTableModel ingestModuleTableModel
String getColumnName(int column)
static Case getCurrentCase()
synchronized static Logger getLogger(String name)
final List< IngestJobInfo > getIngestJobs()
void customizeComponents()
javax.swing.JTable ingestJobTable
IngestJobStatusType getStatus()
static final Logger logger