19 package org.sleuthkit.autopsy.modules.hashdatabase;
21 import java.beans.PropertyChangeEvent;
22 import java.beans.PropertyChangeListener;
23 import java.util.ArrayList;
24 import java.util.List;
25 import java.util.logging.Level;
26 import javax.swing.JScrollPane;
27 import javax.swing.JTable;
28 import javax.swing.table.AbstractTableModel;
29 import javax.swing.table.TableColumn;
60 private void initializeHashSetModels(HashLookupModuleSettings settings, List<HashDb> hashDbs, List<HashSetModel> hashSetModels) {
61 hashSetModels.clear();
62 for (
HashDb db : hashDbs) {
76 table.setModel(tableModel);
77 table.setTableHeader(null);
78 table.setRowSelectionAllowed(
false);
79 final int width1 = scrollPane.getPreferredSize().width;
82 for (
int i = 0; i < table.getColumnCount(); i++) {
83 column = table.getColumnModel().getColumn(i);
85 column.setPreferredWidth(((
int) (width1 * 0.07)));
87 column.setPreferredWidth(((
int) (width1 * 0.92)));
103 List<HashDb> enabledHashSets =
new ArrayList<>();
104 List<HashDb> disabledHashSets =
new ArrayList<>();
105 addHashSets(knownHashSetModels, enabledHashSets, disabledHashSets);
106 addHashSets(knownBadHashSetModels, enabledHashSets, disabledHashSets);
108 enabledHashSets, disabledHashSets);
111 private void addHashSets(List<HashSetModel> hashSetModels, List<HashDb> enabledHashSets, List<HashDb> disabledHashSets) {
113 if (model.isEnabled() && model.isValid()) {
114 enabledHashSets.add(model.getDatabase());
116 disabledHashSets.add(model.getDatabase());
123 knownHashSetsTableModel.fireTableDataChanged();
124 knownBadHashSetsTableModel.fireTableDataChanged();
133 List<HashDb> validDbs =
new ArrayList<>();
139 }
catch (TskCoreException ex){
148 List<HashDb> hashDatabases =
new ArrayList<>(hashDbs);
151 List<HashSetModel> deletedHashSetModels =
new ArrayList<>();
152 for (HashSetModel model : hashSetModels) {
153 boolean foundDatabase =
false;
154 for(
HashDb db : hashDatabases){
155 if(model.getDatabase().equals(db)){
157 hashDatabases.remove(db);
158 foundDatabase =
true;
163 deletedHashSetModels.add(model);
168 for (HashSetModel model : deletedHashSetModels) {
169 hashSetModels.remove(model);
173 for (HashDb db : hashDatabases) {
174 hashSetModels.add(
new HashSetModel(db,
true,
isHashDbValid(db)));
178 void reset(HashLookupModuleSettings newSettings) {
181 knownHashSetsTableModel.fireTableDataChanged();
182 knownBadHashSetsTableModel.fireTableDataChanged();
186 boolean isValid =
false;
188 isValid = hashDb.isValid();
189 }
catch (TskCoreException ex) {
212 return db.getDisplayName();
215 void setEnabled(
boolean enabled) {
219 boolean isEnabled() {
223 void setValid(
boolean valid) {
234 private static final long serialVersionUID = 1L;
243 return hashSets.size();
253 if (columnIndex == 0) {
254 return hashSets.get(rowIndex).isEnabled();
256 return hashSets.get(rowIndex).getName();
262 return (columnIndex == 0 && hashSets.get(rowIndex).isValid());
266 public void setValueAt(Object aValue,
int rowIndex,
int columnIndex) {
267 if (columnIndex == 0) {
268 hashSets.get(rowIndex).setEnabled((Boolean) aValue);
283 @SuppressWarnings(
"unchecked")
295 setPreferredSize(
new java.awt.Dimension(292, 150));
297 jScrollPane1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
316 jScrollPane2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
331 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
332 this.setLayout(layout);
333 layout.setHorizontalGroup(
334 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
335 .addGroup(layout.createSequentialGroup()
337 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
338 .addGroup(layout.createSequentialGroup()
339 .addComponent(
knownHashDbsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 272, javax.swing.GroupLayout.PREFERRED_SIZE)
340 .addGap(0, 18, Short.MAX_VALUE))
341 .addComponent(
knownBadHashDbsLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
342 .addGroup(layout.createSequentialGroup()
344 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
345 .addComponent(
jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
346 .addComponent(
jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)))
347 .addComponent(
alwaysCalcHashesCheckbox, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
350 layout.setVerticalGroup(
351 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
352 .addGroup(layout.createSequentialGroup()
355 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
356 .addComponent(
jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE)
357 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
359 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
360 .addComponent(
jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 53, Short.MAX_VALUE)
361 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
362 .addComponent(
alwaysCalcHashesCheckbox, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
javax.swing.JLabel knownBadHashDbsLabel
void setValueAt(Object aValue, int rowIndex, int columnIndex)
javax.swing.JScrollPane jScrollPane1
List< HashDb > validSetsOnly(List< HashDb > hashDbs)
javax.swing.JTable knownBadHashTable
IngestModuleIngestJobSettings getSettings()
void propertyChange(PropertyChangeEvent event)
void updateHashSetModels()
synchronized void addPropertyChangeListener(PropertyChangeListener listener)
void initializeHashSetModels(HashLookupModuleSettings settings, List< HashDb > hashDbs, List< HashSetModel > hashSetModels)
void addHashSets(List< HashSetModel > hashSetModels, List< HashDb > enabledHashSets, List< HashDb > disabledHashSets)
abstract String getHashSetName()
void customizeHashSetsTable(JScrollPane scrollPane, JTable table, HashSetsTableModel tableModel)
javax.swing.JScrollPane jScrollPane2
javax.swing.JTable knownHashTable
boolean isCellEditable(int rowIndex, int columnIndex)
final HashSetsTableModel knownBadHashSetsTableModel
void initializeHashSetModels(HashLookupModuleSettings settings)
synchronized List< HashDb > getKnownBadFileHashSets()
static synchronized HashDbManager getInstance()
static final long serialVersionUID
boolean isHashDbValid(HashDb hashDb)
final HashSetsTableModel knownHashSetsTableModel
void customizeComponents(HashLookupModuleSettings settings)
Object getValueAt(int rowIndex, int columnIndex)
javax.swing.JCheckBox alwaysCalcHashesCheckbox
final HashDbManager hashDbManager
synchronized static Logger getLogger(String name)
final List< HashSetModel > knownBadHashSetModels
final List< HashSetModel > hashSets
javax.swing.JLabel knownHashDbsLabel
synchronized List< HashDb > getKnownFileHashSets()
final List< HashSetModel > knownHashSetModels
Class<?> getColumnClass(int c)