From 13411450aa50ffacb91a559b84ae32dab9dc56eb Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Mon, 2 Jan 2017 17:36:59 -0500 Subject: [PATCH] 4.3.0 preps: DSPs, public API restore, const name --- .../autopsy/casemodule/ImageDSProcessor.java | 96 +++++++++---------- .../casemodule/LocalDiskDSProcessor.java | 70 +++++++------- .../casemodule/LocalFilesDSProcessor.java | 36 +++---- .../autopsy/core/UserPreferences.java | 16 ++-- ...ava => AutoIngestDataSourceProcessor.java} | 12 +-- .../datamodel/KnownFileFilterNode.java | 2 +- .../datamodel/SlackFileFilterNode.java | 2 +- .../DirectoryTreeTopComponent.java | 4 +- .../autoingest/AutoIngestManager.java | 36 +++---- ...orm => DropdownSingleTermSearchPanel.form} | 0 ...ava => DropdownSingleTermSearchPanel.java} | 30 +++--- .../keywordsearch/DropdownToolbar.java | 4 +- .../netbeans/core/startup/Bundle.properties | 2 +- .../core/windows/view/ui/Bundle.properties | 1 + 14 files changed, 156 insertions(+), 155 deletions(-) rename Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/{AutomatedIngestDataSourceProcessor.java => AutoIngestDataSourceProcessor.java} (86%) rename KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/{DropdownSingleKeywordSearchPanel.form => DropdownSingleTermSearchPanel.form} (100%) rename KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/{DropdownSingleKeywordSearchPanel.java => DropdownSingleTermSearchPanel.java} (88%) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index 2e9486c20c..1cceb7ab12 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -20,7 +20,6 @@ package org.sleuthkit.autopsy.casemodule; import java.io.File; import java.nio.file.Path; -import java.nio.file.Paths; import javax.swing.JPanel; import java.util.ArrayList; import java.util.Calendar; @@ -30,11 +29,11 @@ import javax.swing.filechooser.FileFilter; import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; import org.openide.util.lookup.ServiceProviders; -import org.sleuthkit.autopsy.corecomponentinterfaces.AutomatedIngestDataSourceProcessor; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; import org.sleuthkit.autopsy.coreutils.DataSourceUtils; +import org.sleuthkit.autopsy.corecomponentinterfaces.AutoIngestDataSourceProcessor; /** * A image file data source processor that implements the DataSourceProcessor @@ -44,17 +43,17 @@ import org.sleuthkit.autopsy.coreutils.DataSourceUtils; */ @ServiceProviders(value={ @ServiceProvider(service=DataSourceProcessor.class), - @ServiceProvider(service=AutomatedIngestDataSourceProcessor.class)} + @ServiceProvider(service=AutoIngestDataSourceProcessor.class)} ) -public class ImageDSProcessor implements AutomatedIngestDataSourceProcessor { +public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSourceProcessor { private final static String DATA_SOURCE_TYPE = NbBundle.getMessage(ImageDSProcessor.class, "ImageDSProcessor.dsType.text"); private static final List allExt = new ArrayList<>(); private static final GeneralFilter rawFilter = new GeneralFilter(GeneralFilter.RAW_IMAGE_EXTS, GeneralFilter.RAW_IMAGE_DESC); private static final GeneralFilter encaseFilter = new GeneralFilter(GeneralFilter.ENCASE_IMAGE_EXTS, GeneralFilter.ENCASE_IMAGE_DESC); private static final GeneralFilter virtualMachineFilter = new GeneralFilter(GeneralFilter.VIRTUAL_MACHINE_EXTS, GeneralFilter.VIRTUAL_MACHINE_DESC); - private static final String allDesc = NbBundle.getMessage(ImageDSProcessor.class, "ImageDSProcessor.allDesc.text"); - private static final GeneralFilter allFilter = new GeneralFilter(allExt, allDesc); + private static final String ALL_DESC = NbBundle.getMessage(ImageDSProcessor.class, "ImageDSProcessor.allDesc.text"); + private static final GeneralFilter allFilter = new GeneralFilter(allExt, ALL_DESC); private static final List filtersList = new ArrayList<>(); private final ImageFilePanel configPanel; private AddImageTask addImageTask; @@ -218,6 +217,48 @@ public class ImageDSProcessor implements AutomatedIngestDataSourceProcessor { setDataSourceOptionsCalled = false; } + private static boolean isAcceptedByFiler(File file, List filters) { + for (FileFilter filter : filters) { + if (filter.accept(file)) { + return true; + } + } + return false; + } + + @Override + public int canProcess(Path dataSourcePath) throws AutoIngestDataSourceProcessorException { + + // check file extension for supported types + if (!isAcceptedByFiler(dataSourcePath.toFile(), filtersList)) { + return 0; + } + + try { + // verify that the image has a file system that TSK can process + Case currentCase = Case.getCurrentCase(); + if (!DataSourceUtils.imageHasFileSystem(dataSourcePath)) { + // image does not have a file system that TSK can process + return 0; + } + } catch (Exception ex) { + throw new AutoIngestDataSourceProcessorException("Exception inside canProcess() method", ex); + } + + // able to process the data source + return 100; + } + + @Override + public void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) throws AutoIngestDataSourceProcessorException { + this.deviceId = deviceId; + this.imagePath = dataSourcePath.toString(); + this.timeZone = Calendar.getInstance().getTimeZone().getID(); + this.ignoreFatOrphanFiles = false; + setDataSourceOptionsCalled = true; + run(deviceId, dataSourcePath.toString(), timeZone, ignoreFatOrphanFiles, progressMonitor, callBack); + } + /** * Sets the configuration of the data source processor without using the * selection and configuration panel. @@ -239,46 +280,5 @@ public class ImageDSProcessor implements AutomatedIngestDataSourceProcessor { this.ignoreFatOrphanFiles = ignoreFatOrphanFiles; setDataSourceOptionsCalled = true; } - - private static boolean isAcceptedByFiler(File file, List filters) { - for (FileFilter filter : filters) { - if (filter.accept(file)) { - return true; - } - } - return false; - } - - @Override - public int canProcess(Path dataSourcePath) throws AutomatedIngestDataSourceProcessorException { - - // check file extension for supported types - if (!isAcceptedByFiler(dataSourcePath.toFile(), filtersList)) { - return 0; - } - - try { - // verify that the image has a file system that TSK can process - Case currentCase = Case.getCurrentCase(); - if (!DataSourceUtils.imageHasFileSystem(dataSourcePath)) { - // image does not have a file system that TSK can process - return 0; - } - } catch (Exception ex) { - throw new AutomatedIngestDataSourceProcessorException("Exception inside canProcess() method", ex); - } - - // able to process the data source - return 100; - } - - @Override - public void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) throws AutomatedIngestDataSourceProcessorException { - this.deviceId = deviceId; - this.imagePath = dataSourcePath.toString(); - this.timeZone = Calendar.getInstance().getTimeZone().getID(); - this.ignoreFatOrphanFiles = false; - setDataSourceOptionsCalled = true; - run(deviceId, dataSourcePath.toString(), timeZone, ignoreFatOrphanFiles, progressMonitor, callBack); - } + } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java index fc64a244ea..015f7751ea 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java @@ -26,11 +26,11 @@ import javax.swing.JPanel; import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; import org.openide.util.lookup.ServiceProviders; -import org.sleuthkit.autopsy.corecomponentinterfaces.AutomatedIngestDataSourceProcessor; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; import org.sleuthkit.autopsy.coreutils.DriveUtils; +import org.sleuthkit.autopsy.corecomponentinterfaces.AutoIngestDataSourceProcessor; /** * A local drive data source processor that implements the DataSourceProcessor @@ -40,9 +40,9 @@ import org.sleuthkit.autopsy.coreutils.DriveUtils; */ @ServiceProviders(value={ @ServiceProvider(service=DataSourceProcessor.class), - @ServiceProvider(service=AutomatedIngestDataSourceProcessor.class)} + @ServiceProvider(service=AutoIngestDataSourceProcessor.class)} ) -public class LocalDiskDSProcessor implements AutomatedIngestDataSourceProcessor { +public class LocalDiskDSProcessor implements DataSourceProcessor, AutoIngestDataSourceProcessor { private static final String DATA_SOURCE_TYPE = NbBundle.getMessage(LocalDiskDSProcessor.class, "LocalDiskDSProcessor.dsType.text"); private final LocalDiskPanel configPanel; @@ -196,6 +196,37 @@ public class LocalDiskDSProcessor implements AutomatedIngestDataSourceProcessor setDataSourceOptionsCalled = false; } + @Override + public int canProcess(Path dataSourcePath) throws AutoIngestDataSourceProcessorException { + + // verify that the data source is not a file or a directory + File file = dataSourcePath.toFile(); + // ELTODO this needs to be tested more. should I keep isDirectory or just test for isFile? + if (file.isFile() || file.isDirectory()) { + return 0; + } + + // check whether data source is an existing disk or partition + // ELTODO this needs to be tested more. do these methods actually work correctly? + // or should I use PlatformUtil.getPhysicalDrives() and PlatformUtil.getPartitions() instead? + String path = dataSourcePath.toString(); + if ( (DriveUtils.isPhysicalDrive(path) || DriveUtils.isPartition(path)) && DriveUtils.driveExists(path) ) { + return 90; + } + + return 0; + } + + @Override + public void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) throws AutoIngestDataSourceProcessorException { + this.deviceId = deviceId; + this.drivePath = dataSourcePath.toString(); + this.timeZone = Calendar.getInstance().getTimeZone().getID(); + this.ignoreFatOrphanFiles = false; + setDataSourceOptionsCalled = true; + run(deviceId, drivePath, timeZone, ignoreFatOrphanFiles, progressMonitor, callBack); + } + /** * Sets the configuration of the data source processor without using the * configuration panel. @@ -217,36 +248,5 @@ public class LocalDiskDSProcessor implements AutomatedIngestDataSourceProcessor this.ignoreFatOrphanFiles = ignoreFatOrphanFiles; setDataSourceOptionsCalled = true; } - - @Override - public int canProcess(Path dataSourcePath) throws AutomatedIngestDataSourceProcessorException { - - // verify that the data source is not a file or a directory - File file = dataSourcePath.toFile(); - // ELTODO this needs to be tested more. should I keep isDirectory or just test for isFile? - if (file.isFile() || file.isDirectory()) { - return 0; - } - - // check whether data source is an existing disk or partition - // ELTODO this needs to be tested more. do these methods actually work correctly? - // or should I use PlatformUtil.getPhysicalDrives() and PlatformUtil.getPartitions() instead? - String path = dataSourcePath.toString(); - if ( (DriveUtils.isPhysicalDrive(path) || DriveUtils.isPartition(path)) && DriveUtils.driveExists(path) ) { - return 90; - } - - return 0; - } - - @Override - public void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) throws AutomatedIngestDataSourceProcessorException { - this.deviceId = deviceId; - this.drivePath = dataSourcePath.toString(); - this.timeZone = Calendar.getInstance().getTimeZone().getID(); - this.ignoreFatOrphanFiles = false; - setDataSourceOptionsCalled = true; - run(deviceId, drivePath, timeZone, ignoreFatOrphanFiles, progressMonitor, callBack); - } - + } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java index 99b0ea67bd..9c19cb2cfc 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java @@ -26,10 +26,10 @@ import javax.swing.JPanel; import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; import org.openide.util.lookup.ServiceProviders; -import org.sleuthkit.autopsy.corecomponentinterfaces.AutomatedIngestDataSourceProcessor; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; +import org.sleuthkit.autopsy.corecomponentinterfaces.AutoIngestDataSourceProcessor; /** * A local/logical files and/or directories data source processor that @@ -39,9 +39,9 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; */ @ServiceProviders(value={ @ServiceProvider(service=DataSourceProcessor.class), - @ServiceProvider(service=AutomatedIngestDataSourceProcessor.class)} + @ServiceProvider(service=AutoIngestDataSourceProcessor.class)} ) -public class LocalFilesDSProcessor implements AutomatedIngestDataSourceProcessor { +public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDataSourceProcessor { private static final String DATA_SOURCE_TYPE = NbBundle.getMessage(LocalFilesDSProcessor.class, "LocalFilesDSProcessor.dsType"); private final LocalFilesPanel configPanel; @@ -185,6 +185,20 @@ public class LocalFilesDSProcessor implements AutomatedIngestDataSourceProcessor setDataSourceOptionsCalled = false; } + @Override + public int canProcess(Path dataSourcePath) throws AutoIngestDataSourceProcessorException { + // Local files DSP can process any file by simply adding it as a logical file. + // It should return lowest possible non-zero confidence level and be treated + // as the "option of last resort" for auto ingest purposes + return 1; + } + + @Override + public void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) throws AutoIngestDataSourceProcessorException { + this.localFilePaths = Arrays.asList(new String[]{dataSourcePath.toString()}); + run(deviceId, deviceId, this.localFilePaths, progressMonitor, callBack); + } + /** * Sets the configuration of the data source processor without using the * configuration panel. The data source processor will assign a UUID to the @@ -205,19 +219,5 @@ public class LocalFilesDSProcessor implements AutomatedIngestDataSourceProcessor this.localFilePaths = Arrays.asList(paths.split(",")); setDataSourceOptionsCalled = true; } - - @Override - public int canProcess(Path dataSourcePath) throws AutomatedIngestDataSourceProcessorException { - // Local files DSP can process any file by simply adding it as a logical file. - // It should return lowest possible non-zero confidence level and be treated - // as the "option of last resort" for auto ingest purposes - return 1; - } - - @Override - public void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) throws AutomatedIngestDataSourceProcessorException { - this.localFilePaths = Arrays.asList(new String[]{dataSourcePath.toString()}); - run(deviceId, deviceId, this.localFilePaths, progressMonitor, callBack); - } - + } diff --git a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java index 473c8fe1ab..519a1efda4 100755 --- a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java +++ b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java @@ -40,12 +40,12 @@ import org.sleuthkit.datamodel.TskData.DbType; */ public final class UserPreferences { - private static final boolean isWindowsOS = PlatformUtil.isWindowsOS(); + private static final boolean IS_WINDOWS_OS = PlatformUtil.isWindowsOS(); private static final Preferences preferences = NbPreferences.forModule(UserPreferences.class); public static final String KEEP_PREFERRED_VIEWER = "KeepPreferredViewer"; // NON-NLS - public static final String HIDE_KNOWN_FILES_IN_DATA_SOURCES_TREE = "HideKnownFilesInDataSourcesTree"; //NON-NLS + public static final String HIDE_KNOWN_FILES_IN_DATA_SRCS_TREE = "HideKnownFilesInDataSourcesTree"; //NON-NLS public static final String HIDE_KNOWN_FILES_IN_VIEWS_TREE = "HideKnownFilesInViewsTree"; //NON-NLS - public static final String HIDE_SLACK_FILES_IN_DATA_SOURCES_TREE = "HideSlackFilesInDataSourcesTree"; //NON-NLS + public static final String HIDE_SLACK_FILES_IN_DATA_SRCS_TREE = "HideSlackFilesInDataSourcesTree"; //NON-NLS public static final String HIDE_SLACK_FILES_IN_VIEWS_TREE = "HideSlackFilesInViewsTree"; //NON-NLS public static final String DISPLAY_TIMES_IN_LOCAL_TIME = "DisplayTimesInLocalTime"; //NON-NLS public static final String NUMBER_OF_FILE_INGEST_THREADS = "NumberOfFileIngestThreads"; //NON-NLS @@ -111,11 +111,11 @@ public final class UserPreferences { } public static boolean hideKnownFilesInDataSourcesTree() { - return preferences.getBoolean(HIDE_KNOWN_FILES_IN_DATA_SOURCES_TREE, false); + return preferences.getBoolean(HIDE_KNOWN_FILES_IN_DATA_SRCS_TREE, false); } public static void setHideKnownFilesInDataSourcesTree(boolean value) { - preferences.putBoolean(HIDE_KNOWN_FILES_IN_DATA_SOURCES_TREE, value); + preferences.putBoolean(HIDE_KNOWN_FILES_IN_DATA_SRCS_TREE, value); } public static boolean hideKnownFilesInViewsTree() { @@ -127,11 +127,11 @@ public final class UserPreferences { } public static boolean hideSlackFilesInDataSourcesTree() { - return preferences.getBoolean(HIDE_SLACK_FILES_IN_DATA_SOURCES_TREE, true); + return preferences.getBoolean(HIDE_SLACK_FILES_IN_DATA_SRCS_TREE, true); } public static void setHideSlackFilesInDataSourcesTree(boolean value) { - preferences.putBoolean(HIDE_SLACK_FILES_IN_DATA_SOURCES_TREE, value); + preferences.putBoolean(HIDE_SLACK_FILES_IN_DATA_SRCS_TREE, value); } public static boolean hideSlackFilesInViewsTree() { @@ -198,7 +198,7 @@ public final class UserPreferences { } public static boolean getIsMultiUserModeEnabled() { - if (!isWindowsOS) { + if (!IS_WINDOWS_OS) { return false; } return preferences.getBoolean(IS_MULTI_USER_MODE_ENABLED, false); diff --git a/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/AutomatedIngestDataSourceProcessor.java b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/AutoIngestDataSourceProcessor.java similarity index 86% rename from Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/AutomatedIngestDataSourceProcessor.java rename to Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/AutoIngestDataSourceProcessor.java index 9b7b0e4d6e..f7d50235da 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/AutomatedIngestDataSourceProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/AutoIngestDataSourceProcessor.java @@ -26,7 +26,7 @@ import java.nio.file.Path; * * @author elivis */ -public interface AutomatedIngestDataSourceProcessor extends DataSourceProcessor { +public interface AutoIngestDataSourceProcessor extends DataSourceProcessor { /** * Indicates whether the DataSourceProcessor is capable of processing the @@ -44,7 +44,7 @@ public interface AutomatedIngestDataSourceProcessor extends DataSourceProcessor * @throws * org.sleuthkit.autopsy.corecomponentinterfaces.AutomatedIngestDataSourceProcessor.AutomatedIngestDataSourceProcessorException */ - int canProcess(Path dataSourcePath) throws AutomatedIngestDataSourceProcessorException; + int canProcess(Path dataSourcePath) throws AutoIngestDataSourceProcessorException; /** * Adds a data source to the case database using a background task in a @@ -66,20 +66,20 @@ public interface AutomatedIngestDataSourceProcessor extends DataSourceProcessor * @throws * org.sleuthkit.autopsy.corecomponentinterfaces.AutomatedIngestDataSourceProcessor.AutomatedIngestDataSourceProcessorException */ - void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) throws AutomatedIngestDataSourceProcessorException; + void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) throws AutoIngestDataSourceProcessorException; /** * A custom exception for the use of AutomatedIngestDataSourceProcessor. */ - public class AutomatedIngestDataSourceProcessorException extends Exception { + public class AutoIngestDataSourceProcessorException extends Exception { private static final long serialVersionUID = 1L; - public AutomatedIngestDataSourceProcessorException(String message) { + public AutoIngestDataSourceProcessorException(String message) { super(message); } - public AutomatedIngestDataSourceProcessorException(String message, Throwable cause) { + public AutoIngestDataSourceProcessorException(String message, Throwable cause) { super(message, cause); } } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/KnownFileFilterNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/KnownFileFilterNode.java index 9a06ed470f..8a6dc86f3f 100755 --- a/Core/src/org/sleuthkit/autopsy/datamodel/KnownFileFilterNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/KnownFileFilterNode.java @@ -46,7 +46,7 @@ public class KnownFileFilterNode extends FilterNode { @Override public void preferenceChange(PreferenceChangeEvent evt) { switch (evt.getKey()) { - case UserPreferences.HIDE_KNOWN_FILES_IN_DATA_SOURCES_TREE: + case UserPreferences.HIDE_KNOWN_FILES_IN_DATA_SRCS_TREE: filterFromDataSources = UserPreferences.hideKnownFilesInDataSourcesTree(); break; case UserPreferences.HIDE_KNOWN_FILES_IN_VIEWS_TREE: diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/SlackFileFilterNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/SlackFileFilterNode.java index 54ce0daad5..af43970e8c 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/SlackFileFilterNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/SlackFileFilterNode.java @@ -45,7 +45,7 @@ public class SlackFileFilterNode extends FilterNode { @Override public void preferenceChange(PreferenceChangeEvent evt) { switch (evt.getKey()) { - case UserPreferences.HIDE_SLACK_FILES_IN_DATA_SOURCES_TREE: + case UserPreferences.HIDE_SLACK_FILES_IN_DATA_SRCS_TREE: filterFromDataSources = UserPreferences.hideSlackFilesInDataSourcesTree(); break; case UserPreferences.HIDE_SLACK_FILES_IN_VIEWS_TREE: diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index 496831fa88..20ce2db7e8 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -130,8 +130,8 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat @Override public void preferenceChange(PreferenceChangeEvent evt) { switch (evt.getKey()) { - case UserPreferences.HIDE_KNOWN_FILES_IN_DATA_SOURCES_TREE: - case UserPreferences.HIDE_SLACK_FILES_IN_DATA_SOURCES_TREE: + case UserPreferences.HIDE_KNOWN_FILES_IN_DATA_SRCS_TREE: + case UserPreferences.HIDE_SLACK_FILES_IN_DATA_SRCS_TREE: refreshContentTreeSafe(); break; case UserPreferences.HIDE_KNOWN_FILES_IN_VIEWS_TREE: diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestManager.java b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestManager.java index eec64f2b84..e213633e07 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestManager.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestManager.java @@ -120,13 +120,13 @@ import static org.sleuthkit.autopsy.experimental.autoingest.ManifestNodeData.Pro import static org.sleuthkit.autopsy.experimental.autoingest.ManifestNodeData.ProcessingStatus.PROCESSING; import static org.sleuthkit.autopsy.experimental.autoingest.ManifestNodeData.ProcessingStatus.COMPLETED; import static org.sleuthkit.autopsy.experimental.autoingest.ManifestNodeData.ProcessingStatus.DELETED; -import org.sleuthkit.autopsy.corecomponentinterfaces.AutomatedIngestDataSourceProcessor; -import org.sleuthkit.autopsy.corecomponentinterfaces.AutomatedIngestDataSourceProcessor.AutomatedIngestDataSourceProcessorException; +import org.sleuthkit.autopsy.corecomponentinterfaces.AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException; import org.sleuthkit.autopsy.coreutils.FileUtil; import org.sleuthkit.autopsy.experimental.autoingest.AutoIngestAlertFile.AutoIngestAlertFileException; import org.sleuthkit.autopsy.experimental.autoingest.AutoIngestJobLogger.AutoIngestJobLoggerException; import org.sleuthkit.autopsy.experimental.configuration.SharedConfiguration.SharedConfigurationException; import org.sleuthkit.autopsy.ingest.IngestJob.CancellationReason; +import org.sleuthkit.autopsy.corecomponentinterfaces.AutoIngestDataSourceProcessor; /** * An auto ingest manager is responsible for processing auto ingest jobs defined @@ -1426,7 +1426,7 @@ public final class AutoIngestManager extends Observable implements PropertyChang errorState = ErrorState.ALERT_FILE_ERROR; } else if (ex instanceof AutoIngestJobLoggerException) { errorState = ErrorState.JOB_LOGGER_ERROR; - } else if (ex instanceof AutomatedIngestDataSourceProcessorException) { + } else if (ex instanceof AutoIngestDataSourceProcessorException) { errorState = ErrorState.DATA_SOURCE_PROCESSOR_ERROR; } else if (ex instanceof InterruptedException) { throw (InterruptedException) ex; @@ -1607,7 +1607,7 @@ public final class AutoIngestManager extends Observable implements PropertyChang * i.e., if auto ingest is * shutting down. */ - private void processJobs() throws CoordinationServiceException, SharedConfigurationException, ServicesMonitorException, DatabaseServerDownException, KeywordSearchServerDownException, CaseManagementException, AnalysisStartupException, FileExportException, AutoIngestAlertFileException, AutoIngestJobLoggerException, InterruptedException, AutomatedIngestDataSourceProcessor.AutomatedIngestDataSourceProcessorException { + private void processJobs() throws CoordinationServiceException, SharedConfigurationException, ServicesMonitorException, DatabaseServerDownException, KeywordSearchServerDownException, CaseManagementException, AnalysisStartupException, FileExportException, AutoIngestAlertFileException, AutoIngestJobLoggerException, InterruptedException, AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException { SYS_LOGGER.log(Level.INFO, "Started processing pending jobs queue"); Lock manifestLock = JobProcessingTask.this.dequeueAndLockNextJob(); while (null != manifestLock) { @@ -1784,7 +1784,7 @@ public final class AutoIngestManager extends Observable implements PropertyChang * i.e., if auto ingest is * shutting down. */ - private void processJob() throws CoordinationServiceException, SharedConfigurationException, ServicesMonitorException, DatabaseServerDownException, KeywordSearchServerDownException, CaseManagementException, AnalysisStartupException, FileExportException, AutoIngestAlertFileException, AutoIngestJobLoggerException, InterruptedException, AutomatedIngestDataSourceProcessor.AutomatedIngestDataSourceProcessorException { + private void processJob() throws CoordinationServiceException, SharedConfigurationException, ServicesMonitorException, DatabaseServerDownException, KeywordSearchServerDownException, CaseManagementException, AnalysisStartupException, FileExportException, AutoIngestAlertFileException, AutoIngestJobLoggerException, InterruptedException, AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException { Manifest manifest = currentJob.getManifest(); String manifestPath = manifest.getFilePath().toString(); ManifestNodeData nodeData = new ManifestNodeData(coordinationService.getNodeData(CoordinationService.CategoryNode.MANIFESTS, manifestPath)); @@ -1873,7 +1873,7 @@ public final class AutoIngestManager extends Observable implements PropertyChang * i.e., if auto ingest is * shutting down. */ - private void attemptJob() throws CoordinationServiceException, SharedConfigurationException, ServicesMonitorException, DatabaseServerDownException, KeywordSearchServerDownException, CaseManagementException, AnalysisStartupException, FileExportException, AutoIngestAlertFileException, AutoIngestJobLoggerException, InterruptedException, AutomatedIngestDataSourceProcessor.AutomatedIngestDataSourceProcessorException { + private void attemptJob() throws CoordinationServiceException, SharedConfigurationException, ServicesMonitorException, DatabaseServerDownException, KeywordSearchServerDownException, CaseManagementException, AnalysisStartupException, FileExportException, AutoIngestAlertFileException, AutoIngestJobLoggerException, InterruptedException, AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException { updateConfiguration(); if (currentJob.isCancelled() || jobProcessingTaskFuture.isCancelled()) { return; @@ -2045,7 +2045,7 @@ public final class AutoIngestManager extends Observable implements PropertyChang * while blocked, i.e., if auto * ingest is shutting down. */ - private void runIngestForJob(Case caseForJob) throws CoordinationServiceException, AnalysisStartupException, FileExportException, AutoIngestAlertFileException, AutoIngestJobLoggerException, InterruptedException, AutomatedIngestDataSourceProcessor.AutomatedIngestDataSourceProcessorException { + private void runIngestForJob(Case caseForJob) throws CoordinationServiceException, AnalysisStartupException, FileExportException, AutoIngestAlertFileException, AutoIngestJobLoggerException, InterruptedException, AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException { Manifest manifest = currentJob.getManifest(); String manifestPath = manifest.getFilePath().toString(); try { @@ -2085,7 +2085,7 @@ public final class AutoIngestManager extends Observable implements PropertyChang * while blocked, i.e., if auto * ingest is shutting down. */ - private void ingestDataSource(Case caseForJob) throws AnalysisStartupException, FileExportException, AutoIngestAlertFileException, AutoIngestJobLoggerException, InterruptedException, AutomatedIngestDataSourceProcessor.AutomatedIngestDataSourceProcessorException { + private void ingestDataSource(Case caseForJob) throws AnalysisStartupException, FileExportException, AutoIngestAlertFileException, AutoIngestJobLoggerException, InterruptedException, AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException { if (currentJob.isCancelled() || jobProcessingTaskFuture.isCancelled()) { return; } @@ -2179,7 +2179,7 @@ public final class AutoIngestManager extends Observable implements PropertyChang * while blocked, i.e., if auto * ingest is shutting down. */ - private void runDataSourceProcessor(Case caseForJob, DataSource dataSource) throws InterruptedException, AutoIngestAlertFileException, AutoIngestJobLoggerException, AutomatedIngestDataSourceProcessor.AutomatedIngestDataSourceProcessorException { + private void runDataSourceProcessor(Case caseForJob, DataSource dataSource) throws InterruptedException, AutoIngestAlertFileException, AutoIngestJobLoggerException, AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException { Manifest manifest = currentJob.getManifest(); Path manifestPath = manifest.getFilePath(); SYS_LOGGER.log(Level.INFO, "Adding data source for {0} ", manifestPath); @@ -2193,16 +2193,16 @@ public final class AutoIngestManager extends Observable implements PropertyChang caseForJob.notifyAddingDataSource(taskId); // lookup all AutomatedIngestDataSourceProcessors - Collection processorCandidates = Lookup.getDefault().lookupAll(AutomatedIngestDataSourceProcessor.class); + Collection processorCandidates = Lookup.getDefault().lookupAll(AutoIngestDataSourceProcessor.class); - Map validDataSourceProcessorsMap = new HashMap<>(); - for (AutomatedIngestDataSourceProcessor processor : processorCandidates) { + Map validDataSourceProcessorsMap = new HashMap<>(); + for (AutoIngestDataSourceProcessor processor : processorCandidates) { try { int confidence = processor.canProcess(dataSource.getPath()); if(confidence > 0){ validDataSourceProcessorsMap.put(processor, confidence); } - } catch (AutomatedIngestDataSourceProcessor.AutomatedIngestDataSourceProcessorException ex) { + } catch (AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException ex) { SYS_LOGGER.log(Level.SEVERE, "Exception while determining whether data source processor {0} can process {1}", new Object[]{processor.getDataSourceType(), dataSource.getPath()}); // rethrow the exception. It will get caught & handled upstream and will result in AIM auto-pause. throw ex; @@ -2220,21 +2220,21 @@ public final class AutoIngestManager extends Observable implements PropertyChang } // Get an ordered list of data source processors to try - List validDataSourceProcessors = validDataSourceProcessorsMap.entrySet().stream() - .sorted(Map.Entry.comparingByValue().reversed()) + List validDataSourceProcessors = validDataSourceProcessorsMap.entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) .map(Map.Entry::getKey) .collect(Collectors.toList()); synchronized (ingestLock) { // Try each DSP in decreasing order of confidence - for(AutomatedIngestDataSourceProcessor selectedProcessor:validDataSourceProcessors){ + for(AutoIngestDataSourceProcessor selectedProcessor:validDataSourceProcessors){ jobLogger.logDataSourceProcessorSelected(selectedProcessor.getDataSourceType()); SYS_LOGGER.log(Level.INFO, "Identified data source type for {0} as {1}", new Object[]{manifestPath, selectedProcessor.getDataSourceType()}); try { selectedProcessor.process(dataSource.getDeviceId(), dataSource.getPath(), progressMonitor, callBack); ingestLock.wait(); return; - } catch (AutomatedIngestDataSourceProcessor.AutomatedIngestDataSourceProcessorException ex) { + } catch (AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException ex) { // Log that the current DSP failed and set the error flag. We consider it an error // if a DSP fails even if a later one succeeds since we expected to be able to process // the data source which each DSP on the list. @@ -2248,7 +2248,7 @@ public final class AutoIngestManager extends Observable implements PropertyChang SYS_LOGGER.log(Level.SEVERE, "All data source processors failed to process {0}", dataSource.getPath()); jobLogger.logFailedToAddDataSource(); // Throw an exception. It will get caught & handled upstream and will result in AIM auto-pause. - throw new AutomatedIngestDataSourceProcessor.AutomatedIngestDataSourceProcessorException("Failed to process " + dataSource.getPath() + " with all data source processors"); + throw new AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException("Failed to process " + dataSource.getPath() + " with all data source processors"); } } finally { currentJob.setDataSourceProcessor(null); diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownSingleKeywordSearchPanel.form b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownSingleTermSearchPanel.form similarity index 100% rename from KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownSingleKeywordSearchPanel.form rename to KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownSingleTermSearchPanel.form diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownSingleKeywordSearchPanel.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownSingleTermSearchPanel.java similarity index 88% rename from KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownSingleKeywordSearchPanel.java rename to KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownSingleTermSearchPanel.java index c6b079bc70..a5024fd7b0 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownSingleKeywordSearchPanel.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownSingleTermSearchPanel.java @@ -42,11 +42,11 @@ import org.sleuthkit.autopsy.coreutils.Logger; * perform this task at the desired size, and neither could numerous other * fonts. */ -public class DropdownSingleKeywordSearchPanel extends KeywordSearchPanel { +public class DropdownSingleTermSearchPanel extends KeywordSearchPanel { private static final long serialVersionUID = 1L; - private static final Logger LOGGER = Logger.getLogger(DropdownSingleKeywordSearchPanel.class.getName()); - private static DropdownSingleKeywordSearchPanel defaultInstance = null; + private static final Logger LOGGER = Logger.getLogger(DropdownSingleTermSearchPanel.class.getName()); + private static DropdownSingleTermSearchPanel defaultInstance = null; /** * Gets the default instance of a dropdown panel that provides GUI @@ -54,9 +54,9 @@ public class DropdownSingleKeywordSearchPanel extends KeywordSearchPanel { * searches. * @return the default instance of DropdownSingleKeywordSearchPanel */ - public static synchronized DropdownSingleKeywordSearchPanel getDefault() { + public static synchronized DropdownSingleTermSearchPanel getDefault() { if (null == defaultInstance) { - defaultInstance = new DropdownSingleKeywordSearchPanel(); + defaultInstance = new DropdownSingleTermSearchPanel(); } return defaultInstance; } @@ -65,7 +65,7 @@ public class DropdownSingleKeywordSearchPanel extends KeywordSearchPanel { * Constructs a dropdown panel that provides GUI components that allow a * user to do three types of ad hoc single keyword searches. */ - public DropdownSingleKeywordSearchPanel() { + public DropdownSingleTermSearchPanel() { initComponents(); customizeComponents(); } @@ -167,20 +167,20 @@ public class DropdownSingleKeywordSearchPanel extends KeywordSearchPanel { substringRadioButton = new javax.swing.JRadioButton(); regexRadioButton = new javax.swing.JRadioButton(); - org.openide.awt.Mnemonics.setLocalizedText(cutMenuItem, org.openide.util.NbBundle.getMessage(DropdownSingleKeywordSearchPanel.class, "DropdownSearchPanel.cutMenuItem.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(cutMenuItem, org.openide.util.NbBundle.getMessage(DropdownSingleTermSearchPanel.class, "DropdownSearchPanel.cutMenuItem.text")); // NOI18N rightClickMenu.add(cutMenuItem); - org.openide.awt.Mnemonics.setLocalizedText(copyMenuItem, org.openide.util.NbBundle.getMessage(DropdownSingleKeywordSearchPanel.class, "DropdownSearchPanel.copyMenuItem.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(copyMenuItem, org.openide.util.NbBundle.getMessage(DropdownSingleTermSearchPanel.class, "DropdownSearchPanel.copyMenuItem.text")); // NOI18N rightClickMenu.add(copyMenuItem); - org.openide.awt.Mnemonics.setLocalizedText(pasteMenuItem, org.openide.util.NbBundle.getMessage(DropdownSingleKeywordSearchPanel.class, "DropdownSearchPanel.pasteMenuItem.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(pasteMenuItem, org.openide.util.NbBundle.getMessage(DropdownSingleTermSearchPanel.class, "DropdownSearchPanel.pasteMenuItem.text")); // NOI18N rightClickMenu.add(pasteMenuItem); - org.openide.awt.Mnemonics.setLocalizedText(selectAllMenuItem, org.openide.util.NbBundle.getMessage(DropdownSingleKeywordSearchPanel.class, "DropdownSearchPanel.selectAllMenuItem.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(selectAllMenuItem, org.openide.util.NbBundle.getMessage(DropdownSingleTermSearchPanel.class, "DropdownSearchPanel.selectAllMenuItem.text")); // NOI18N rightClickMenu.add(selectAllMenuItem); keywordTextField.setFont(new java.awt.Font("Monospaced", 0, 14)); // NOI18N - keywordTextField.setText(org.openide.util.NbBundle.getMessage(DropdownSingleKeywordSearchPanel.class, "DropdownSearchPanel.keywordTextField.text")); // NOI18N + keywordTextField.setText(org.openide.util.NbBundle.getMessage(DropdownSingleTermSearchPanel.class, "DropdownSearchPanel.keywordTextField.text")); // NOI18N keywordTextField.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(192, 192, 192), 1, true)); keywordTextField.setMinimumSize(new java.awt.Dimension(2, 25)); keywordTextField.setPreferredSize(new java.awt.Dimension(2, 25)); @@ -196,7 +196,7 @@ public class DropdownSingleKeywordSearchPanel extends KeywordSearchPanel { }); searchButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/keywordsearch/search-icon.png"))); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(searchButton, org.openide.util.NbBundle.getMessage(DropdownSingleKeywordSearchPanel.class, "DropdownSearchPanel.searchButton.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(searchButton, org.openide.util.NbBundle.getMessage(DropdownSingleTermSearchPanel.class, "DropdownSearchPanel.searchButton.text")); // NOI18N searchButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { searchButtonActionPerformed(evt); @@ -205,13 +205,13 @@ public class DropdownSingleKeywordSearchPanel extends KeywordSearchPanel { queryTypeButtonGroup.add(exactRadioButton); exactRadioButton.setSelected(true); - org.openide.awt.Mnemonics.setLocalizedText(exactRadioButton, org.openide.util.NbBundle.getMessage(DropdownSingleKeywordSearchPanel.class, "DropdownSearchPanel.exactRadioButton.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(exactRadioButton, org.openide.util.NbBundle.getMessage(DropdownSingleTermSearchPanel.class, "DropdownSearchPanel.exactRadioButton.text")); // NOI18N queryTypeButtonGroup.add(substringRadioButton); - org.openide.awt.Mnemonics.setLocalizedText(substringRadioButton, org.openide.util.NbBundle.getMessage(DropdownSingleKeywordSearchPanel.class, "DropdownSearchPanel.substringRadioButton.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(substringRadioButton, org.openide.util.NbBundle.getMessage(DropdownSingleTermSearchPanel.class, "DropdownSearchPanel.substringRadioButton.text")); // NOI18N queryTypeButtonGroup.add(regexRadioButton); - org.openide.awt.Mnemonics.setLocalizedText(regexRadioButton, org.openide.util.NbBundle.getMessage(DropdownSingleKeywordSearchPanel.class, "DropdownSearchPanel.regexRadioButton.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(regexRadioButton, org.openide.util.NbBundle.getMessage(DropdownSingleTermSearchPanel.class, "DropdownSearchPanel.regexRadioButton.text")); // NOI18N javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownToolbar.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownToolbar.java index 70219e3f3e..68c482edd4 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownToolbar.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownToolbar.java @@ -43,7 +43,7 @@ class DropdownToolbar extends javax.swing.JPanel { private static DropdownToolbar instance; private SearchSettingsChangeListener searchSettingsChangeListener; private boolean active = false; - private DropdownSingleKeywordSearchPanel dropPanel = null; + private DropdownSingleTermSearchPanel dropPanel = null; /** * Gets the singleton panel that provides a toolbar button for the dropdown @@ -103,7 +103,7 @@ class DropdownToolbar extends javax.swing.JPanel { } }); - dropPanel = DropdownSingleKeywordSearchPanel.getDefault(); + dropPanel = DropdownSingleTermSearchPanel.getDefault(); dropPanel.addSearchButtonActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties b/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties index e67d04fa17..a0fc266c8a 100644 --- a/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties +++ b/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties @@ -1,5 +1,5 @@ #Updated by build script -#Sat, 22 Oct 2016 14:27:47 -0400 +#Mon, 02 Jan 2017 17:30:34 -0500 LBL_splash_window_title=Starting Autopsy SPLASH_HEIGHT=314 SPLASH_WIDTH=538 diff --git a/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties b/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties index 76d7bbbd58..109b05e9a8 100644 --- a/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties +++ b/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties @@ -1,3 +1,4 @@ #Updated by build script +#Mon, 02 Jan 2017 17:30:34 -0500 CTL_MainWindow_Title=Autopsy 4.2.0 CTL_MainWindow_Title_No_Project=Autopsy 4.2.0