mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-17 18:17:43 +00:00
Added reason for files not candidates to be added to hashsets
This commit is contained in:
parent
0f9b42b9c2
commit
59ccaa50eb
@ -1,15 +1,15 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
*
|
||||
* Copyright 2013-2018 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@ -27,6 +27,7 @@ import javax.swing.AbstractAction;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JOptionPane;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.util.Utilities;
|
||||
import org.openide.util.actions.Presenter;
|
||||
@ -42,17 +43,30 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
* Instances of this Action allow users to content to a hash database.
|
||||
*/
|
||||
final class AddContentToHashDbAction extends AbstractAction implements Presenter.Popup {
|
||||
|
||||
|
||||
private static AddContentToHashDbAction instance;
|
||||
|
||||
private final static String SINGLE_SELECTION_NAME = NbBundle.getMessage(AddContentToHashDbAction.class,
|
||||
"AddContentToHashDbAction.singleSelectionName");
|
||||
private final static String MULTIPLE_SELECTION_NAME = NbBundle.getMessage(AddContentToHashDbAction.class,
|
||||
private final static String MULTI_SELECTION_NAME = NbBundle.getMessage(AddContentToHashDbAction.class,
|
||||
"AddContentToHashDbAction.multipleSelectionName");
|
||||
|
||||
//During ingest display strings. This text will be greyed out and unclickable
|
||||
private final static String SINGLE_SELECTION_NAME_DURING_INGEST = NbBundle.getMessage(AddContentToHashDbAction.class,
|
||||
"AddContentToHashDbAction.singleSelectionNameDuringIngest");
|
||||
private final static String MULTIPLE_SELECTION_NAME_DURING_INGEST = NbBundle.getMessage(AddContentToHashDbAction.class,
|
||||
private final static String MULTI_SELECTION_NAME_DURING_INGEST = NbBundle.getMessage(AddContentToHashDbAction.class,
|
||||
"AddContentToHashDbAction.multipleSelectionNameDuringIngest");
|
||||
|
||||
//No MD5 Hash and Empty File display strings. This text will be greyed out and unclickable
|
||||
private final static String SINGLE_SELECTION_NAME_EMPTY_FILE = NbBundle.getMessage(AddContentToHashDbAction.class,
|
||||
"AddContentToHashDbAction.singleSelectionNameEmpty");
|
||||
private final static String MULTI_SELECTION_NAME_EMPTY_FILE = NbBundle.getMessage(AddContentToHashDbAction.class,
|
||||
"AddContentToHashDbAction.multipleSelectionNameEmpty");
|
||||
private final static String SINGLE_SELECTION_NAME_NO_MD5 = NbBundle.getMessage(AddContentToHashDbAction.class,
|
||||
"AddContentToHashDbAction.singleSelectionNameNoMD5");
|
||||
private final static String MULTI_SELECTION_NAME_NO_MD5 = NbBundle.getMessage(AddContentToHashDbAction.class,
|
||||
"AddContentToHashDbAction.multipleSelectionNameNoMD5");
|
||||
|
||||
/**
|
||||
* AddContentToHashDbAction is a singleton to support multi-selection of
|
||||
* nodes, since org.openide.nodes.NodeOp.findActions(Node[] nodes) will only
|
||||
@ -86,30 +100,40 @@ final class AddContentToHashDbAction extends AbstractAction implements Presenter
|
||||
super(SINGLE_SELECTION_NAME);
|
||||
// Get any AbstractFile objects from the lookup of the currently focused top component.
|
||||
final Collection<? extends AbstractFile> selectedFiles = Utilities.actionsGlobalContext().lookupAll(AbstractFile.class);
|
||||
|
||||
int numberOfFilesSelected = selectedFiles.size();
|
||||
|
||||
// Disable the menu if file ingest is in progress.
|
||||
if (IngestManager.getInstance().isIngestRunning()) {
|
||||
if(selectedFiles.size() > 1) {
|
||||
//Displays: 'Add Files to Hash Set (Ingest is running)'
|
||||
setText(MULTIPLE_SELECTION_NAME_DURING_INGEST);
|
||||
} else {
|
||||
setText(SINGLE_SELECTION_NAME_DURING_INGEST);
|
||||
}
|
||||
setEnabled(false);
|
||||
setEnabled(false);
|
||||
setTextBasedOnNumberOfSelections(numberOfFilesSelected,
|
||||
SINGLE_SELECTION_NAME_DURING_INGEST,
|
||||
MULTI_SELECTION_NAME_DURING_INGEST);
|
||||
return;
|
||||
}
|
||||
|
||||
if (selectedFiles.isEmpty()) {
|
||||
setEnabled(false);
|
||||
return;
|
||||
} else if (selectedFiles.size() > 1) {
|
||||
setText(MULTIPLE_SELECTION_NAME);
|
||||
} else {
|
||||
setTextBasedOnNumberOfSelections(numberOfFilesSelected,
|
||||
SINGLE_SELECTION_NAME,
|
||||
MULTI_SELECTION_NAME);
|
||||
}
|
||||
|
||||
// Disable the menu if hashes have not been calculated.
|
||||
// Disable the menu if md5 have not been computed or if the file size
|
||||
// is empty. Display the appropriate reason to the user.
|
||||
for (AbstractFile file : selectedFiles) {
|
||||
if (null == file.getMd5Hash()) {
|
||||
if (file.getSize() == 0) {
|
||||
setEnabled(false);
|
||||
setTextBasedOnNumberOfSelections(numberOfFilesSelected,
|
||||
SINGLE_SELECTION_NAME_EMPTY_FILE,
|
||||
MULTI_SELECTION_NAME_EMPTY_FILE);
|
||||
return;
|
||||
} else if (null == file.getMd5Hash() || StringUtils.isBlank(file.getMd5Hash())) {
|
||||
setEnabled(false);
|
||||
setTextBasedOnNumberOfSelections(numberOfFilesSelected,
|
||||
SINGLE_SELECTION_NAME_NO_MD5,
|
||||
MULTI_SELECTION_NAME_NO_MD5);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -154,6 +178,23 @@ final class AddContentToHashDbAction extends AbstractAction implements Presenter
|
||||
add(newHashSetItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines which (2) display text should be set given the number of
|
||||
* files selected.
|
||||
*
|
||||
* @param numberOfFilesSelected Number of currently selected files
|
||||
* @param multiSelection Text to display with multiple selections
|
||||
* @param singleSelection Text to display with single selection
|
||||
*/
|
||||
private void setTextBasedOnNumberOfSelections(int numberOfFilesSelected,
|
||||
String singleSelection, String multiSelection) {
|
||||
if (numberOfFilesSelected > 1) {
|
||||
setText(multiSelection);
|
||||
} else {
|
||||
setText(singleSelection);
|
||||
}
|
||||
}
|
||||
|
||||
private void addFilesToHashSet(final Collection<? extends AbstractFile> files, HashDb hashSet) {
|
||||
for (AbstractFile file : files) {
|
||||
String md5Hash = file.getMd5Hash();
|
||||
@ -187,8 +228,8 @@ final class AddContentToHashDbAction extends AbstractAction implements Presenter
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"AddContentToHashDbAction.addFilesToHashSet.unableToAddFileSzMsg",
|
||||
files.size() > 1 ? NbBundle
|
||||
.getMessage(this.getClass(),
|
||||
"AddContentToHashDbAction.addFilesToHashSet.files") : NbBundle
|
||||
.getMessage(this.getClass(),
|
||||
"AddContentToHashDbAction.addFilesToHashSet.files") : NbBundle
|
||||
.getMessage(this.getClass(),
|
||||
"AddContentToHashDbAction.addFilesToHashSet.file")),
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
|
@ -155,6 +155,10 @@ AddContentToHashDbAction.singleSelectionName=Add File to Hash Set
|
||||
AddContentToHashDbAction.multipleSelectionName=Add Files to Hash Set
|
||||
AddContentToHashDbAction.singleSelectionNameDuringIngest=Add File to Hash Set (Ingest is running)
|
||||
AddContentToHashDbAction.multipleSelectionNameDuringIngest=Add Files to Hash Set (Ingest is running)
|
||||
AddContentToHashDbAction.singleSelectionNameNoMD5=Add File to Hash Set (No MD5 Hash)
|
||||
AddContentToHashDbAction.multipleSelectionNameNoMD5=Add Files to Hash Set (No MD5 Hash)
|
||||
AddContentToHashDbAction.singleSelectionNameEmpty=Add File to Hash Set (Empty File)
|
||||
AddContentToHashDbAction.multipleSelectionNameEmpty=Add Files to Hash Set (Empty File)
|
||||
HashDbManager.ingestRunningExceptionMsg=Ingest is ongoing; this service will be unavailable until it finishes.
|
||||
HashDbManager.saveErrorExceptionMsg=Error saving hash configuration
|
||||
HashLookupSettingsPanel.jButton3.text=Import Hash Set
|
||||
|
Loading…
x
Reference in New Issue
Block a user