19 package org.sleuthkit.autopsy.logicalimager.dsp;
22 import java.io.IOException;
23 import java.nio.file.Path;
24 import java.nio.file.Paths;
25 import java.util.ArrayList;
26 import java.util.Calendar;
27 import java.util.List;
28 import java.util.UUID;
29 import javax.swing.JPanel;
30 import org.openide.util.NbBundle.Messages;
31 import org.openide.util.lookup.ServiceProvider;
32 import org.openide.util.lookup.ServiceProviders;
46 @ServiceProviders(value={
47 @ServiceProvider(service=DataSourceProcessor.class)}
51 private static final String LOGICAL_IMAGER_DIR =
"LogicalImager";
72 @Messages({
"LogicalImagerDSProcessor.dataSourceType=Autopsy Imager"})
74 return Bundle.LogicalImagerDSProcessor_dataSourceType();
86 return Bundle.LogicalImagerDSProcessor_dataSourceType();
112 return configPanel.validatePanel();
130 "# {0} - imageDirPath",
"LogicalImagerDSProcessor.imageDirPathNotFound={0} not found.\nUSB drive has been ejected.",
131 "# {0} - directory",
"LogicalImagerDSProcessor.failToCreateDirectory=Failed to create directory {0}",
132 "# {0} - directory",
"LogicalImagerDSProcessor.directoryAlreadyExists=Directory {0} already exists",
133 "# {0} - file",
"LogicalImagerDSProcessor.failToGetCanonicalPath=Fail to get canonical path for {0}",
134 "LogicalImagerDSProcessor.noCurrentCase=No current case",
138 configPanel.storeSettings();
140 Path imageDirPath = configPanel.getImageDirPath();
141 List<String> errorList =
new ArrayList<>();
142 List<Content> emptyDataSources =
new ArrayList<>();
144 if (!imageDirPath.toFile().exists()) {
148 String msg = Bundle.LogicalImagerDSProcessor_imageDirPathNotFound(imageDirPath.toString());
156 File logicalImagerDir = Paths.get(moduleDirectory, LOGICAL_IMAGER_DIR).toFile();
157 if (!logicalImagerDir.exists() && !logicalImagerDir.mkdir()) {
159 String msg = Bundle.LogicalImagerDSProcessor_failToCreateDirectory(logicalImagerDir);
164 File dest = Paths.get(logicalImagerDir.toString(), imageDirPath.getFileName().toString()).toFile();
167 String msg = Bundle.LogicalImagerDSProcessor_directoryAlreadyExists(dest.toString());
172 File src = imageDirPath.toFile();
175 List<String> imagePaths =
new ArrayList<>();
176 for (File f : src.listFiles()) {
177 if (f.getName().endsWith(
".vhd")) {
179 imagePaths.add(f.getCanonicalPath());
180 }
catch (IOException ex) {
181 String msg = Bundle.LogicalImagerDSProcessor_failToGetCanonicalPath(f.getName());
189 String deviceId = UUID.randomUUID().toString();
190 String timeZone = Calendar.getInstance().getTimeZone().getID();
191 run(deviceId, imagePaths,
193 progressMonitor, callback);
195 String msg = Bundle.LogicalImagerDSProcessor_noCurrentCase();
223 private void run(String deviceId, List<String> imagePaths, String timeZone,
227 addLogicalImageTask =
new AddLogicalImageTask(deviceId, imagePaths, timeZone, src, dest,
228 progressMonitor, callback);
229 new Thread(addLogicalImageTask).start();
234 if (addLogicalImageTask != null) {
235 addLogicalImageTask.cancelTask();
void run(String deviceId, List< String > imagePaths, String timeZone, File src, File dest, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback)
void done(DataSourceProcessorResult result, List< String > errList, List< Content > newDataSources)
AddLogicalImageTask addLogicalImageTask
String getDataSourceType()
String getModuleDirectory()
void run(DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback)
static Case getCurrentCase()
LogicalImagerDSProcessor()
final LogicalImagerPanel configPanel