diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 1093824ec4..b4fc10bf09 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -2018,6 +2018,8 @@ public class Case { * Updates the node data for the case directory lock coordination service * node. * + * @param progressIndicator A progress indicator. + * * @throws CaseActionException If there is a problem completing the * operation. The exception will have a * user-friendly message and may be a wrapper @@ -2030,15 +2032,29 @@ public class Case { private void updateCaseNodeData(ProgressIndicator progressIndicator) throws CaseActionException { if (getCaseType() == CaseType.MULTI_USER_CASE) { progressIndicator.progress(Bundle.Case_progressMessage_updatingCaseNodeData()); - if (getCaseType() == CaseType.MULTI_USER_CASE) { - try { - CoordinationService coordinationService = CoordinationService.getInstance(); - CaseNodeData nodeData = new CaseNodeData(coordinationService.getNodeData(CategoryNode.CASES, metadata.getCaseDirectory())); + try { + CaseNodeData nodeData; + CoordinationService coordinationService = CoordinationService.getInstance(); + byte[] nodeBytes = coordinationService.getNodeData(CategoryNode.CASES, metadata.getCaseDirectory()); + if (nodeBytes != null && nodeBytes.length > 0) { + /* + * Update the last access date in the coordination service + * node data for the case. + */ + nodeData = new CaseNodeData(nodeBytes); nodeData.setLastAccessDate(new Date()); - coordinationService.setNodeData(CategoryNode.CASES, metadata.getCaseDirectory(), nodeData.toArray()); - } catch (CoordinationServiceException | InterruptedException | IOException ex) { - throw new CaseActionException(Bundle.Case_exceptionMessage_couldNotUpdateCaseNodeData(ex.getLocalizedMessage()), ex); + } else { + /* + * This is a "legacy" case with no data stored in its case + * directory coordination service node yet, or the node is + * empty due to some error, so create the coordination + * service node data from the case metadata. + */ + nodeData = new CaseNodeData(metadata); } + coordinationService.setNodeData(CategoryNode.CASES, metadata.getCaseDirectory(), nodeData.toArray()); + } catch (CoordinationServiceException | InterruptedException | ParseException | IOException ex) { + throw new CaseActionException(Bundle.Case_exceptionMessage_couldNotUpdateCaseNodeData(ex.getLocalizedMessage()), ex); } } } diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/contentviewer/DataContentViewerOtherCases.java b/Core/src/org/sleuthkit/autopsy/centralrepository/contentviewer/DataContentViewerOtherCases.java index 34254f902b..be268cc6b4 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/contentviewer/DataContentViewerOtherCases.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/contentviewer/DataContentViewerOtherCases.java @@ -93,7 +93,7 @@ public class DataContentViewerOtherCases extends JPanel implements DataContentVi private static final Logger LOGGER = Logger.getLogger(DataContentViewerOtherCases.class.getName()); private static final CorrelationCaseWrapper NO_ARTIFACTS_CASE = new CorrelationCaseWrapper(Bundle.DataContentViewerOtherCases_table_noArtifacts()); - private static final CorrelationCaseWrapper NO_RESULTS_CASE = new CorrelationCaseWrapper(Bundle.DataContentViewerOtherCases_table_noArtifacts()); + private static final CorrelationCaseWrapper NO_RESULTS_CASE = new CorrelationCaseWrapper(Bundle.DataContentViewerOtherCases_table_noResultsFound()); private static final int DEFAULT_MIN_CELL_WIDTH = 15; private final OtherOccurrencesFilesTableModel tableModel; diff --git a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineIngestManager.java b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineIngestManager.java index 8039aa0479..bbe14c0020 100755 --- a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineIngestManager.java +++ b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineIngestManager.java @@ -149,7 +149,7 @@ public class CommandLineIngestManager { // read options panel configuration String rootOutputDir = UserPreferences.getCommandLineModeResultsFolder(); LOGGER.log(Level.INFO, "Output directory = {0}", rootOutputDir); //NON-NLS - System.out.println("Output directoryh = " + rootOutputDir); + System.out.println("Output directory = " + rootOutputDir); if (rootOutputDir.isEmpty()) { LOGGER.log(Level.SEVERE, "Output directory not specified, please configure Command Line Options Panel (in Tools -> Options)"); @@ -264,6 +264,7 @@ public class CommandLineIngestManager { * Passes the data source for the current job through a data source * processor that adds it to the case database. * + * @param caseForJob The case * @param dataSource The data source. * * @throws diff --git a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOptionProcessor.java b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOptionProcessor.java index 36249ba497..8b94961fa6 100755 --- a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOptionProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOptionProcessor.java @@ -56,22 +56,22 @@ public class CommandLineOptionProcessor extends OptionProcessor { @Override protected void process(Env env, Map values) throws CommandException { logger.log(Level.INFO, "Processing Autopsy command line options"); //NON-NLS - System.out.println("Processing Autopsy command line options using CommandLineOptionProcessor"); + System.out.println("Processing Autopsy command line options"); if (values.containsKey(pathToDataSourceOption) && values.containsKey(caseNameOption) && values.containsKey(runFromCommandLineOption)) { // parse input parameters String inputPath; String inputCaseName; String modeString; if (values.size() < 3) { - logger.log(Level.SEVERE, "Insufficient number of input arguments. Exiting"); - System.out.println("Insufficient number of input arguments. Exiting"); + logger.log(Level.SEVERE, "Insufficient number of input arguments to run command line ingest"); + System.out.println("Insufficient number of input arguments to run command line ingest"); this.runFromCommandLine = false; return; } else { String[] argDirs = values.get(pathToDataSourceOption); if (argDirs.length < 1) { - logger.log(Level.SEVERE, "Missing argument 'inputPath'. Exiting"); - System.out.println("Missing argument 'inputPath'. Exiting"); + logger.log(Level.SEVERE, "Missing argument 'inputPath'"); + System.out.println("Missing argument 'inputPath'"); this.runFromCommandLine = false; return; } @@ -79,8 +79,8 @@ public class CommandLineOptionProcessor extends OptionProcessor { argDirs = values.get(caseNameOption); if (argDirs.length < 1) { - logger.log(Level.SEVERE, "Missing argument 'caseName'. Exiting"); - System.out.println("Missing argument 'caseName'. Exiting"); + logger.log(Level.SEVERE, "Missing argument 'caseName'"); + System.out.println("Missing argument 'caseName'"); this.runFromCommandLine = false; return; } @@ -88,8 +88,8 @@ public class CommandLineOptionProcessor extends OptionProcessor { argDirs = values.get(runFromCommandLineOption); if (argDirs.length < 1) { - logger.log(Level.SEVERE, "Missing argument 'runFromCommandLine'. Exiting"); - System.out.println("Missing argument 'runFromCommandLine'. Exiting"); + logger.log(Level.SEVERE, "Missing argument 'runFromCommandLine'"); + System.out.println("Missing argument 'runFromCommandLine'"); this.runFromCommandLine = false; return; } @@ -111,15 +111,15 @@ public class CommandLineOptionProcessor extends OptionProcessor { // verify inputs if (inputPath == null || inputPath.isEmpty() || !(new File(inputPath).exists())) { - logger.log(Level.SEVERE, "Input file {0} doesn''t exist. Exiting", inputPath); - System.out.println("Input file " + inputPath + " doesn't exist. Exiting"); + logger.log(Level.SEVERE, "Input file {0} doesn''t exist", inputPath); + System.out.println("Input file " + inputPath + " doesn't exist"); this.runFromCommandLine = false; return; } if (inputCaseName == null || inputCaseName.isEmpty()) { - logger.log(Level.SEVERE, "Case name argument is empty. Exiting"); - System.out.println("Case name argument is empty. Exiting"); + logger.log(Level.SEVERE, "Case name argument is empty"); + System.out.println("Case name argument is empty"); this.runFromCommandLine = false; return; } @@ -134,8 +134,8 @@ public class CommandLineOptionProcessor extends OptionProcessor { System.out.println("Case name = " + this.baseCaseName); System.out.println("runFromCommandLine = " + this.runFromCommandLine); } else { - System.out.println("Missing input arguments for CommandLineOptionProcessor. Exiting"); - logger.log(Level.SEVERE, "Missing input arguments. Exiting"); + System.out.println("Missing input arguments to run command line ingest"); + logger.log(Level.SEVERE, "Missing input arguments to run command line ingest"); } } diff --git a/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/CommonAttributeValueNode.java b/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/CommonAttributeValueNode.java index ed8c395b5f..b9f88321f0 100644 --- a/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/CommonAttributeValueNode.java +++ b/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/CommonAttributeValueNode.java @@ -50,6 +50,7 @@ public class CommonAttributeValueNode extends DisplayableItemNode { * Create a Match node whose children will all have this object in common. * * @param data the common feature, and the children + * @param type the data type */ public CommonAttributeValueNode(CommonAttributeValue data, CorrelationAttributeInstance.Type type) { super(Children.create( diff --git a/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/InstanceCountNode.java b/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/InstanceCountNode.java index 973d7711c4..d3d1de26b8 100644 --- a/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/InstanceCountNode.java +++ b/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/InstanceCountNode.java @@ -52,8 +52,9 @@ public final class InstanceCountNode extends DisplayableItemNode { * Create a node with the given number of instances, and the given selection * of metadata. * - * @param instanceCount - * @param attributeValues + * @param instanceCount the number of instances + * @param attributeValues the attribute list + * @param type the data type */ @NbBundle.Messages({ "InstanceCountNode.displayName=Exists in %s data sources (%s)" diff --git a/Core/src/org/sleuthkit/autopsy/communications/snapshot/CommSnapShotReportWriter.java b/Core/src/org/sleuthkit/autopsy/communications/snapshot/CommSnapShotReportWriter.java index 7b4dee6d19..16945d324d 100755 --- a/Core/src/org/sleuthkit/autopsy/communications/snapshot/CommSnapShotReportWriter.java +++ b/Core/src/org/sleuthkit/autopsy/communications/snapshot/CommSnapShotReportWriter.java @@ -59,6 +59,7 @@ public class CommSnapShotReportWriter extends UiSnapShotReportWriter { * @param reportName The name of the report. * @param generationDate The generation Date of the report. * @param snapshot A snapshot of the view to include in the report. + * @param filter The communications filter */ public CommSnapShotReportWriter(Case currentCase, Path reportFolderPath, String reportName, Date generationDate, BufferedImage snapshot, CommunicationsFilter filter) { diff --git a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/AddDataSourceCallback.java b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/AddDataSourceCallback.java index 3ee02b9026..314673d1d7 100644 --- a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/AddDataSourceCallback.java +++ b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/AddDataSourceCallback.java @@ -47,6 +47,7 @@ public class AddDataSourceCallback extends DataSourceProcessorCallback { * @param caseForJob The case for the current job. * @param dataSourceInfo The data source * @param taskId The task id to associate with ingest job events. + * @param lock The DSP lock */ public AddDataSourceCallback(Case caseForJob, AutoIngestDataSource dataSourceInfo, UUID taskId, Object lock) { this.caseForJob = caseForJob; diff --git a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/DataSourceProcessorUtility.java b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/DataSourceProcessorUtility.java index 8b27ff6c19..b95625dc67 100644 --- a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/DataSourceProcessorUtility.java +++ b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/DataSourceProcessorUtility.java @@ -41,6 +41,8 @@ public class DataSourceProcessorUtility { * AutoIngestDataSourceProcessor interface are used. * * @param dataSourcePath Full path to the data source + * @param processorCandidates Possible DSPs that can handle the data source + * * @return Hash map of all DSPs that can process the data source along with * their confidence score * @throws diff --git a/Core/src/org/sleuthkit/autopsy/report/CreatePortableCaseModule.java b/Core/src/org/sleuthkit/autopsy/report/CreatePortableCaseModule.java index b0db1d0b46..b0b88673b6 100644 --- a/Core/src/org/sleuthkit/autopsy/report/CreatePortableCaseModule.java +++ b/Core/src/org/sleuthkit/autopsy/report/CreatePortableCaseModule.java @@ -518,7 +518,7 @@ public class CreatePortableCaseModule implements GeneralReportModule { * Get the artifact type ID in the portable case and create new artifact type if needed. * For built-in artifacts this will be the same as the original. * - * @param oldArtifactTypeId The artifact type ID in the current case + * @param oldArtifact The artifact in the current case * * @return The corresponding artifact type ID in the portable case */ @@ -541,7 +541,7 @@ public class CreatePortableCaseModule implements GeneralReportModule { * Get the attribute type ID in the portable case and create new attribute type if needed. * For built-in attributes this will be the same as the original. * - * @param oldAttributeTypeId The attribute type ID in the current case + * @param oldAttribute The attribute in the current case * * @return The corresponding attribute type in the portable case */ diff --git a/Core/src/org/sleuthkit/autopsy/report/caseuco/CaseUcoFormatExporter.java b/Core/src/org/sleuthkit/autopsy/report/caseuco/CaseUcoFormatExporter.java index efa7a0b325..7c09ef3cb5 100755 --- a/Core/src/org/sleuthkit/autopsy/report/caseuco/CaseUcoFormatExporter.java +++ b/Core/src/org/sleuthkit/autopsy/report/caseuco/CaseUcoFormatExporter.java @@ -248,7 +248,7 @@ public final class CaseUcoFormatExporter { * @param selectedDataSourceId Object ID of the data source * @param caseTraceId CASE-UCO trace ID object for the Autopsy case entry * @param skCase SleuthkitCase object - * @param catalog JsonGenerator object + * @param jsonGenerator JsonGenerator object * @return * @throws TskCoreException * @throws SQLException diff --git a/Core/src/org/sleuthkit/autopsy/report/uisnapshot/UiSnapShotReportWriter.java b/Core/src/org/sleuthkit/autopsy/report/uisnapshot/UiSnapShotReportWriter.java index 1017e2e743..0242bae3d5 100755 --- a/Core/src/org/sleuthkit/autopsy/report/uisnapshot/UiSnapShotReportWriter.java +++ b/Core/src/org/sleuthkit/autopsy/report/uisnapshot/UiSnapShotReportWriter.java @@ -62,8 +62,6 @@ public abstract class UiSnapShotReportWriter { * report. * @param reportName The name of the report. * @param generationDate The generation Date of the report. - * @param snapshot A snapshot of the view to include in the - * report. */ protected UiSnapShotReportWriter(Case currentCase, Path reportFolderPath, String reportName, Date generationDate) { this.currentCase = currentCase; diff --git a/Core/src/org/sleuthkit/autopsy/textextractors/TextExtractorFactory.java b/Core/src/org/sleuthkit/autopsy/textextractors/TextExtractorFactory.java index 22d4aa5040..86b96194c0 100755 --- a/Core/src/org/sleuthkit/autopsy/textextractors/TextExtractorFactory.java +++ b/Core/src/org/sleuthkit/autopsy/textextractors/TextExtractorFactory.java @@ -29,7 +29,7 @@ import org.sleuthkit.datamodel.Report; /** * Factory for creating TextExtractors given a Content instance * - * See {@link org.sleuthkit.autopsy.textextractors.textextractorconfigs} for + * See {@link org.sleuthkit.autopsy.textextractors.configs} for * available extractor configuration options. * * @see org.openide.util.Lookup @@ -40,7 +40,7 @@ public class TextExtractorFactory { * Returns a TextExtractor containing the Content text. Configuration files * can be added to the Lookup. * - * See {@link org.sleuthkit.autopsy.textextractors.textextractorconfigs} for + * See {@link org.sleuthkit.autopsy.textextractors.configs} for * available extractor configuration options. * * @param content Content source that will be read from @@ -124,7 +124,7 @@ public class TextExtractorFactory { * getExtractor(Content, Lookup). * * Configure this extractor with the StringsConfig in - * {@link org.sleuthkit.autopsy.textextractors.textextractorconfigs} + * {@link org.sleuthkit.autopsy.textextractors.configs} * * @param content Content source to read from * @param context Contains extraction configurations for certain file types diff --git a/CoreLibs/nbproject/project.properties b/CoreLibs/nbproject/project.properties index 647666e3cd..c71cf02060 100644 --- a/CoreLibs/nbproject/project.properties +++ b/CoreLibs/nbproject/project.properties @@ -23,7 +23,6 @@ file.reference.controlsfx-8.40.11.jar=release/modules/ext/controlsfx-8.40.11.jar file.reference.dom4j-1.6.1.jar=release/modules/ext/dom4j-1.6.1.jar file.reference.geronimo-jms_1.1_spec-1.0.jar=release/modules/ext/geronimo-jms_1.1_spec-1.0.jar file.reference.gson-2.8.1.jar=release/modules/ext/gson-2.8.1.jar -file.reference.gstreamer-java-1.5.jar=release/modules/ext/gstreamer-java-1.5.jar file.reference.gst1-java-core-0.9.3.jar=release/modules/ext/gst1-java-core-0.9.3.jar file.reference.jna-3.4.0.jar=release/modules/ext/jna-3.4.0.jar file.reference.guava-19.0.jar=release/modules/ext/guava-19.0.jar diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/multicase/MultiCaseKeywordSearchPanel.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/multicase/MultiCaseKeywordSearchPanel.java index bc197c16a0..c33e76edd9 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/multicase/MultiCaseKeywordSearchPanel.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/multicase/MultiCaseKeywordSearchPanel.java @@ -815,8 +815,8 @@ final class MultiCaseKeywordSearchPanel extends javax.swing.JPanel implements Ex /** * Constructs a thread that performs a keyword search of cases * - * @param caseNames The names of the cases to search. - * @param query The keyword search query to perform. + * @param caseNodes The cases to search. + * @param searchQuery The keyword search query to perform. */ private SearchThread(Collection caseNodes, SearchQuery searchQuery) { this.caseNodes = caseNodes; diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/BinaryCookieReader.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/BinaryCookieReader.java index 3e24a1fe5d..05ec607834 100755 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/BinaryCookieReader.java +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/BinaryCookieReader.java @@ -70,7 +70,7 @@ public final class BinaryCookieReader implements Iterable { * the file is a binarycookie file. This function does not keep the file * open. * - * @param file binarycookie file + * @param cookieFile binarycookie file * @return An instance of the reader * @throws FileNotFoundException * @throws IOException diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractZoneIdentifier.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractZoneIdentifier.java index 56c6748712..7947aa8c9b 100755 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractZoneIdentifier.java +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractZoneIdentifier.java @@ -292,7 +292,7 @@ final class ExtractZoneIdentifier extends Extract { /** * Wrapper class for information in the :ZoneIdentifier file. The - * Zone.Identifier file has a simple format of key=value. There + * Zone.Identifier file has a simple format of \key\=\value\. There * are four known keys: ZoneId, ReferrerUrl, HostUrl, and * LastWriterPackageFamilyName. Not all browsers will put all values in the * file, in fact most will only supply the ZoneId. Only Edge supplies the diff --git a/thirdparty/ewfexport_exec/32-bit/vcruntime140.dll b/thirdparty/ewfexport_exec/32-bit/vcruntime140.dll new file mode 100755 index 0000000000..d9fb793ac5 Binary files /dev/null and b/thirdparty/ewfexport_exec/32-bit/vcruntime140.dll differ diff --git a/thirdparty/ewfexport_exec/64-bit/vcruntime140.dll b/thirdparty/ewfexport_exec/64-bit/vcruntime140.dll new file mode 100755 index 0000000000..fa755e5cc8 Binary files /dev/null and b/thirdparty/ewfexport_exec/64-bit/vcruntime140.dll differ