19 package org.sleuthkit.autopsy.modules.hashdatabase;
22 import java.awt.event.KeyEvent;
23 import java.beans.PropertyChangeEvent;
24 import java.beans.PropertyChangeListener;
26 import java.util.ArrayList;
27 import java.util.List;
28 import java.util.logging.Level;
29 import javax.swing.JComponent;
30 import javax.swing.JOptionPane;
31 import javax.swing.JTable;
32 import javax.swing.ListSelectionModel;
33 import javax.swing.SwingUtilities;
34 import javax.swing.event.ListSelectionEvent;
35 import javax.swing.event.ListSelectionListener;
36 import javax.swing.table.AbstractTableModel;
37 import javax.swing.table.TableCellRenderer;
38 import org.netbeans.spi.options.OptionsPanelController;
39 import org.openide.util.NbBundle;
40 import org.openide.util.NbBundle.Messages;
79 public void propertyChange(PropertyChangeEvent evt) {
81 EventQueue.invokeLater(
new Runnable() {
92 @NbBundle.Messages({
"HashLookupSettingsPanel.Title=Global Hash Lookup Settings"})
94 setName(Bundle.HashLookupSettingsPanel_Title());
99 hashSetTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
100 hashSetTable.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
102 public void valueChanged(ListSelectionEvent e) {
103 if (!e.getValueIsAdjusting()) {
134 indexButton.setText(NbBundle.getMessage(
this.getClass(),
"HashDbConfigPanel.indexButtonText.index"));
153 @NbBundle.Messages({
"HashLookupSettingsPanel.readOnly=Read only",
154 "HashLookupSettingsPanel.editable=Editable",
155 "HashLookupSettingsPanel.updateStatusError=Error reading status",
156 "HashLookupSettingsPanel.notApplicable=N/A",
157 "HashLookupSettingsPanel.centralRepo=Central Repository"
171 }
catch (TskCoreException ex) {
177 }
catch (TskCoreException ex) {
182 if (db instanceof SleuthkitHashSet) {
183 SleuthkitHashSet hashDb = (SleuthkitHashSet) db;
187 hashDbOrgLabel.setText(Bundle.HashLookupSettingsPanel_notApplicable());
194 }
catch (TskCoreException ex) {
201 }
catch (TskCoreException ex) {
208 if (hashDb.isIndexing()) {
210 NbBundle.getMessage(
this.getClass(),
"HashDbConfigPanel.indexButtonText.indexing"));
212 NbBundle.getMessage(
this.getClass(),
"HashDbConfigPanel.indexStatusText.indexGen"));
215 }
else if (hashDb.hasIndex()) {
216 if (hashDb.hasIndexOnly()) {
218 NbBundle.getMessage(
this.getClass(),
"HashDbConfigPanel.indexStatusText.indexOnly"));
221 NbBundle.getMessage(
this.getClass(),
"HashDbConfigPanel.indexStatusText.indexed"));
224 if (hashDb.canBeReIndexed()) {
226 NbBundle.getMessage(
this.getClass(),
"HashDbConfigPanel.indexButtonText.reIndex"));
229 indexButton.setText(NbBundle.getMessage(
this.getClass(),
"HashDbConfigPanel.indexButtonText.index"));
234 NbBundle.getMessage(
this.getClass(),
"HashDbConfigPanel.indexStatusText.noIndex"));
236 indexButton.setText(NbBundle.getMessage(
this.getClass(),
"HashDbConfigPanel.indexButtonText.index"));
239 }
catch (TskCoreException ex) {
243 indexButton.setText(NbBundle.getMessage(
this.getClass(),
"HashDbConfigPanel.indexButtonText.index"));
249 indexPathLabel.setText(Bundle.HashLookupSettingsPanel_notApplicable());
255 CentralRepoHashSet crDb = (CentralRepoHashSet) db;
262 if (ingestIsRunning) {
281 String shortenedPath = path;
282 if (shortenedPath.length() > 50) {
283 shortenedPath = shortenedPath.substring(0, 10 + shortenedPath.substring(10).indexOf(File.separator) + 1) +
"..." + shortenedPath.substring((shortenedPath.length() - 20) + shortenedPath.substring(shortenedPath.length() - 20).indexOf(File.separator));
285 return shortenedPath;
290 AutopsyEvent
event = (AutopsyEvent) evt;
291 if (event.getSourceType() == AutopsyEvent.SourceType.LOCAL) {
292 String eventType =
event.getPropertyName();
302 @Messages({
"HashLookupSettingsPanel.saveFail.message=Couldn't save hash set settings.",
303 "HashLookupSettingsPanel.saveFail.title=Save Fail"})
307 newReferenceSetIDs.clear();
310 List<SleuthkitHashSet> unindexed =
new ArrayList<>();
312 if (db instanceof SleuthkitHashSet) {
314 SleuthkitHashSet hashDatabase = (SleuthkitHashSet) db;
315 if (!hashDatabase.hasIndex()) {
316 unindexed.add(hashDatabase);
318 }
catch (TskCoreException ex) {
326 if (!unindexed.isEmpty()) {
327 SwingUtilities.invokeLater(
new Runnable() {
331 if (unindexed.size() == 1) {
333 }
else if (unindexed.size() > 1) {
340 hashSetManager.save();
342 SwingUtilities.invokeLater(() -> {
343 JOptionPane.showMessageDialog(null, Bundle.HashLookupSettingsPanel_saveFail_message(), Bundle.HashLookupSettingsPanel_saveFail_title(), JOptionPane.ERROR_MESSAGE);
352 hashSetTableModel.refreshModel();
368 for (
int refID : newReferenceSetIDs) {
385 @Messages({
"# {0} - hash lookup name",
"HashLookupSettingsPanel.removeDatabaseFailure.message=Failed to remove hash lookup: {0}"})
386 void removeThese(List<SleuthkitHashSet> toRemove) {
387 for (SleuthkitHashSet hashDb : toRemove) {
390 }
catch (HashDbManager.HashDbManagerException ex) {
391 JOptionPane.showMessageDialog(null, Bundle.HashLookupSettingsPanel_removeDatabaseFailure_message(hashDb.getHashSetName()));
394 hashSetTableModel.refreshModel();
408 for (
HashDb hdb : unindexed) {
409 total +=
"\n" + hdb.getHashSetName();
412 message = NbBundle.getMessage(this.getClass(),
"HashDbConfigPanel.dbsNotIndexedMsg", total);
414 message = NbBundle.getMessage(this.getClass(),
"HashDbConfigPanel.dbNotIndexedMsg", total);
416 int res = JOptionPane.showConfirmDialog(
this, message,
417 NbBundle.getMessage(
this.getClass(),
418 "HashDbConfigPanel.unindexedDbsMsg"),
419 JOptionPane.YES_NO_OPTION);
420 if (res == JOptionPane.YES_OPTION) {
421 ModalNoButtons indexingDialog =
new ModalNoButtons(
this,
new Frame(), unindexed);
422 indexingDialog.setLocationRelativeTo(null);
423 indexingDialog.setVisible(
true);
424 indexingDialog.setModal(
true);
425 hashSetTableModel.refreshModel();
427 if (res == JOptionPane.NO_OPTION) {
428 JOptionPane.showMessageDialog(
this, NbBundle.getMessage(
this.getClass(),
429 "HashDbConfigPanel.allUnindexedDbsRmFromListMsg"));
430 removeThese(unindexed);
433 hashSetManager.save();
435 JOptionPane.showMessageDialog(null, Bundle.HashLookupSettingsPanel_saveFail_message(), Bundle.HashLookupSettingsPanel_saveFail_title(), JOptionPane.ERROR_MESSAGE);
451 JComponent cellRenderer = (JComponent) super.prepareRenderer(renderer, row, column);
452 cellRenderer.setToolTipText((String) getValueAt(row, column));
457 if (hashSetTableModel.
isValid(row)) {
458 cellRenderer.setForeground(Color.black);
460 cellRenderer.setForeground(Color.red);
467 return hashSetTableModel.getHashSetAt(getSelectionModel().getMinSelectionIndex());
472 getSelectionModel().setSelectionInterval(index, index);
501 return hashSets.size();
506 return NbBundle.getMessage(this.getClass(),
"HashDbConfigPanel.nameColLbl");
511 return hashSets.get(rowIndex).getDisplayName();
516 return hashSets.get(rowIndex).isValid();
517 }
catch (TskCoreException ex) {
529 public void setValueAt(Object aValue,
int rowIndex,
int columnIndex) {
530 throw new UnsupportedOperationException(
531 NbBundle.getMessage(
this.getClass(),
"HashDbConfigPanel.editingCellsNotSupportedMsg"));
539 HashDb getHashSetAt(
int index) {
540 if (!hashSets.isEmpty() && index >= 0 && index < hashSets.size()) {
541 return hashSets.get(index);
547 int getIndexByDatabase(HashDb db) {
548 for (
int i = 0; i < hashSets.size(); ++i) {
549 if (hashSets.get(i).equals(db)) {
557 int getIndexByName(String name) {
558 for (
int i = 0; i < hashSets.size(); ++i) {
559 if (hashSets.get(i).getHashSetName().equals(name)) {
566 void refreshModel() {
567 hashSets = HashDbManager.getInstance().getAllHashSets();
571 void refreshDisplay() {
572 fireTableDataChanged();
584 jLabel2 =
new javax.swing.JLabel();
585 jLabel4 =
new javax.swing.JLabel();
586 jLabel6 =
new javax.swing.JLabel();
587 jButton3 =
new javax.swing.JButton();
589 jPanel1 =
new javax.swing.JPanel();
616 orgLabel =
new javax.swing.JLabel();
621 jLabel2.setFont(
jLabel2.getFont().deriveFont(
jLabel2.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
624 jLabel4.setFont(
jLabel4.getFont().deriveFont(
jLabel4.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
627 jLabel6.setFont(
jLabel6.getFont().deriveFont(
jLabel6.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
634 ingestWarningLabel.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/modules/hashdatabase/warning16.png")));
638 hashSetTable.setModel(
new javax.swing.table.DefaultTableModel(
648 hashSetTable.addKeyListener(
new java.awt.event.KeyAdapter() {
649 public void keyPressed(java.awt.event.KeyEvent evt) {
656 deleteDatabaseButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/modules/hashdatabase/delete16.png")));
662 public void actionPerformed(java.awt.event.ActionEvent evt) {
668 importDatabaseButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/modules/hashdatabase/import16.png")));
675 public void actionPerformed(java.awt.event.ActionEvent evt) {
710 indexButton.addActionListener(
new java.awt.event.ActionListener() {
711 public void actionPerformed(java.awt.event.ActionEvent evt) {
719 public void actionPerformed(java.awt.event.ActionEvent evt) {
731 createDatabaseButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/modules/hashdatabase/new16.png")));
738 public void actionPerformed(java.awt.event.ActionEvent evt) {
753 public void actionPerformed(java.awt.event.ActionEvent evt) {
770 javax.swing.GroupLayout jPanel1Layout =
new javax.swing.GroupLayout(
jPanel1);
771 jPanel1.setLayout(jPanel1Layout);
772 jPanel1Layout.setHorizontalGroup(
773 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
774 .addGroup(jPanel1Layout.createSequentialGroup()
776 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
777 .addGroup(jPanel1Layout.createSequentialGroup()
779 .addComponent(
jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 395, javax.swing.GroupLayout.PREFERRED_SIZE)
780 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
781 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
782 .addGroup(jPanel1Layout.createSequentialGroup()
783 .addComponent(
informationLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
784 .addGap(309, 309, 309))
785 .addGroup(jPanel1Layout.createSequentialGroup()
786 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
787 .addGroup(jPanel1Layout.createSequentialGroup()
789 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
790 .addGroup(jPanel1Layout.createSequentialGroup()
791 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
792 .addComponent(
indexLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
795 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
796 .addComponent(
indexPathLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 225, javax.swing.GroupLayout.PREFERRED_SIZE)
797 .addComponent(
hashDbIndexStatusLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 225, javax.swing.GroupLayout.PREFERRED_SIZE)))
798 .addGroup(jPanel1Layout.createSequentialGroup()
799 .addComponent(
indexButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
802 .addGroup(jPanel1Layout.createSequentialGroup()
803 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
811 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
813 .addComponent(
hashDbTypeLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 225, javax.swing.GroupLayout.PREFERRED_SIZE)
814 .addComponent(
hashDbLocationLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 225, javax.swing.GroupLayout.PREFERRED_SIZE)
818 .addGroup(jPanel1Layout.createSequentialGroup()
820 .addComponent(
informationSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 305, javax.swing.GroupLayout.PREFERRED_SIZE))
821 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
822 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
824 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
825 .addComponent(
optionsSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 334, javax.swing.GroupLayout.PREFERRED_SIZE))
826 .addGroup(jPanel1Layout.createSequentialGroup()
829 .addGroup(jPanel1Layout.createSequentialGroup()
832 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
833 .addGroup(jPanel1Layout.createSequentialGroup()
834 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
836 .addGroup(jPanel1Layout.createSequentialGroup()
837 .addComponent(
createDatabaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE)
838 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
839 .addComponent(
importDatabaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE)
840 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
841 .addComponent(
deleteDatabaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, 131, javax.swing.GroupLayout.PREFERRED_SIZE)))
842 .addGap(0, 0, Short.MAX_VALUE))))
844 jPanel1Layout.setVerticalGroup(
845 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
846 .addGroup(jPanel1Layout.createSequentialGroup()
850 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
851 .addGroup(jPanel1Layout.createSequentialGroup()
852 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
854 .addGroup(jPanel1Layout.createSequentialGroup()
856 .addComponent(
informationSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 3, javax.swing.GroupLayout.PREFERRED_SIZE)))
858 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
861 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
862 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
865 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
866 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
869 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
870 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
873 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
874 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
878 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
881 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
882 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
885 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
886 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
889 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
890 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
893 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
894 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
896 .addComponent(
optionsSeparator, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
901 .addGap(0, 0, Short.MAX_VALUE))
903 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
904 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
905 .addComponent(
createDatabaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
906 .addComponent(
importDatabaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
907 .addComponent(
deleteDatabaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
913 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
914 this.setLayout(layout);
915 layout.setHorizontalGroup(
916 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
917 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
921 layout.setVerticalGroup(
922 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
934 HashDb hashDb =
new HashDbCreateDatabaseDialog().getHashDatabase();
935 if (null != hashDb) {
936 if (hashDb instanceof CentralRepoHashSet) {
937 int newDbIndex = ((CentralRepoHashSet) hashDb).getReferenceSetID();
938 newReferenceSetIDs.add(newDbIndex);
941 hashSetTableModel.refreshModel();
943 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
949 if (hashDb != null) {
951 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
957 assert hashDatabase != null;
958 assert hashDatabase instanceof SleuthkitHashSet;
962 SleuthkitHashSet hashDb = (SleuthkitHashSet) hashDatabase;
965 public void propertyChange(PropertyChangeEvent evt) {
966 if (evt.getPropertyName().equals(SleuthkitHashSet.Event.INDEXING_DONE.toString())) {
968 if (selectedHashDb != null && hashDb != null && hashDb.equals(selectedHashDb)) {
971 hashSetTableModel.refreshDisplay();
981 ModalNoButtons indexDialog =
new ModalNoButtons(
this,
new Frame(), hashDb);
982 indexDialog.setLocationRelativeTo(null);
983 indexDialog.setVisible(
true);
984 indexDialog.setModal(
true);
988 HashDb hashDb =
new HashDbImportDatabaseDialog().getHashDatabase();
989 if (null != hashDb) {
990 if (hashDb instanceof CentralRepoHashSet) {
991 int newReferenceSetID = ((CentralRepoHashSet) hashDb).getReferenceSetID();
992 newReferenceSetIDs.add(newReferenceSetID);
995 hashSetTableModel.refreshModel();
997 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
1002 "HashLookupSettingsPanel.promptTitle.deleteHashDb=Delete Hash Database from Configuration",
1003 "HashLookupSettingsPanel.promptMessage.deleteHashDb=This will make the hash database unavailable for lookup. Do you want to proceed?\n\nNote: The hash database can still be re-imported later."
1006 if (JOptionPane.showConfirmDialog(null,
1007 Bundle.HashLookupSettingsPanel_promptMessage_deleteHashDb(),
1008 Bundle.HashLookupSettingsPanel_promptTitle_deleteHashDb(),
1009 JOptionPane.YES_NO_OPTION,
1010 JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) {
1012 if (hashDb != null) {
1016 JOptionPane.showMessageDialog(null, Bundle.HashLookupSettingsPanel_removeDatabaseFailure_message(hashDb.
getHashSetName()));
1018 hashSetTableModel.refreshModel();
1019 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
1025 if (evt.getKeyCode() == KeyEvent.VK_DELETE) {
1027 if (hashDb != null) {
1031 JOptionPane.showMessageDialog(null, Bundle.HashLookupSettingsPanel_removeDatabaseFailure_message(hashDb.
getHashSetName()));
1033 hashSetTableModel.refreshModel();
1034 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
abstract boolean getSendIngestMessages()
void importDatabaseButtonActionPerformed(java.awt.event.ActionEvent evt)
javax.swing.JLabel indexLabel
void showInvalidIndex(boolean plural, List< SleuthkitHashSet > unindexed)
static synchronized IngestManager getInstance()
boolean isCellEditable(int rowIndex, int columnIndex)
javax.swing.JLabel hashDbIndexStatusLabel
javax.swing.JLabel jLabel6
void setValueAt(Object aValue, int rowIndex, int columnIndex)
javax.swing.JLabel optionsLabel
javax.swing.JLabel hashDbVersionLabel
final List< Integer > newReferenceSetIDs
void deleteReferenceSet(int referenceSetID)
javax.swing.JLabel hashDatabasesLabel
javax.swing.JLabel ingestWarningLabel
javax.swing.JLabel typeLabel
javax.swing.JLabel indexPathLabel
void updateComponentsForSelection(HashDb db)
javax.swing.JButton createDatabaseButton
void createDatabaseButtonActionPerformed(java.awt.event.ActionEvent evt)
abstract String getHashSetName()
javax.swing.JLabel hashDbOrgLabel
static String shortenPath(String path)
boolean isIngestRunning()
HashLookupSettingsPanel()
javax.swing.JButton jButton3
javax.swing.JScrollPane jScrollPane1
void updateComponentsForNoSelection()
javax.swing.JLabel readOnlyLabel
javax.swing.JLabel hashDbLocationLabel
javax.swing.JLabel nameLabel
javax.swing.JLabel locationLabel
javax.swing.JButton indexButton
void selectRowByDatabase(HashDb db)
javax.swing.JLabel informationLabel
void sendIngestMessagesCheckBoxActionPerformed(java.awt.event.ActionEvent evt)
Component prepareRenderer(TableCellRenderer renderer, int row, int column)
static final String ERROR_GETTING_INDEX_STATUS_TEXT
void indexButtonActionPerformed(java.awt.event.ActionEvent evt)
void customizeComponents()
static EamDb getInstance()
void addIngestJobEventListener(final PropertyChangeListener listener)
static final String NO_SELECTION_TEXT
javax.swing.JLabel jLabel2
synchronized void removeHashDatabaseNoSave(HashDb hashDb)
javax.swing.JScrollPane jScrollPane2
static synchronized HashDbManager getInstance()
boolean isLocalIngestJobEvent(PropertyChangeEvent evt)
abstract HashDb.KnownFilesType getKnownFilesType()
javax.swing.JLabel indexPathLabelLabel
void hashSetTableKeyPressed(java.awt.event.KeyEvent evt)
void selectRowByName(String name)
javax.swing.JLabel versionLabel
javax.swing.JTable hashSetTable
static boolean isEnabled()
javax.swing.JLabel hashDbNameLabel
String getColumnName(int column)
javax.swing.JButton addHashesToDatabaseButton
static final String ERROR_GETTING_PATH_TEXT
javax.swing.JLabel jLabel4
synchronized List< HashDb > getAllHashSets()
javax.swing.JButton deleteDatabaseButton
Object getValueAt(int rowIndex, int columnIndex)
abstract boolean isUpdateable()
abstract String getDatabasePath()
Class<?> getColumnClass(int c)
void setSelection(int index)
boolean isValid(int rowIndex)
javax.swing.JSeparator optionsSeparator
synchronized void loadLastSavedConfiguration()
abstract void addPropertyChangeListener(PropertyChangeListener pcl)
synchronized static Logger getLogger(String name)
javax.swing.JLabel hashDbTypeLabel
final HashDbManager hashSetManager
void deleteDatabaseButtonActionPerformed(java.awt.event.ActionEvent evt)
javax.swing.JLabel hashDbReadOnlyLabel
javax.swing.JSeparator informationSeparator
final HashSetTableModel hashSetTableModel
javax.swing.JButton importDatabaseButton
javax.swing.JPanel jPanel1
javax.swing.JLabel orgLabel
javax.swing.JCheckBox sendIngestMessagesCheckBox
void addHashesToDatabaseButtonActionPerformed(java.awt.event.ActionEvent evt)