19 package org.sleuthkit.autopsy.casemodule;
21 import java.util.ArrayList;
22 import java.util.List;
23 import org.openide.util.NbBundle;
38 class AddLocalFilesTask
implements Runnable {
40 private final String deviceId;
41 private final String rootVirtualDirectoryName;
42 private final List<String> localFilePaths;
43 private final DataSourceProcessorProgressMonitor progress;
44 private final DataSourceProcessorCallback callback;
68 AddLocalFilesTask(String deviceId, String rootVirtualDirectoryName, List<String> localFilePaths, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) {
69 this.deviceId = deviceId;
70 this.rootVirtualDirectoryName = rootVirtualDirectoryName;
71 this.localFilePaths = localFilePaths;
72 this.callback = callback;
73 this.progress = progressMonitor;
83 List<Content> newDataSources =
new ArrayList<>();
84 List<String> errors =
new ArrayList<>();
86 progress.setIndeterminate(
true);
87 FileManager fileManager = Case.getCurrentCase().getServices().getFileManager();
88 LocalFilesDataSource newDataSource = fileManager.addLocalFilesDataSource(deviceId, rootVirtualDirectoryName,
"", localFilePaths,
new ProgressUpdater());
89 newDataSources.add(newDataSource.getRootDirectory());
90 }
catch (TskDataException | TskCoreException ex) {
91 errors.add(ex.getMessage());
93 DataSourceProcessorCallback.DataSourceProcessorResult result;
94 if (!errors.isEmpty()) {
95 result = DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS;
97 result = DataSourceProcessorCallback.DataSourceProcessorResult.NO_ERRORS;
99 callback.done(result, errors, newDataSources);
118 if (count % 10 == 0) {
119 progress.setProgressText(NbBundle.getMessage(
this.getClass(),
120 "AddLocalFilesTask.localFileAdd.progress.text",
121 file.getParentPath(),
void fileAdded(final AbstractFile file)