diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index a3ab85cfc8..07a88ee07f 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -51,8 +51,7 @@ import org.sleuthkit.datamodel.TskCoreException; * independently of the wizard. */ @ServiceProviders(value = { - @ServiceProvider(service = DataSourceProcessor.class) - , + @ServiceProvider(service = DataSourceProcessor.class), @ServiceProvider(service = AutoIngestDataSourceProcessor.class)} ) public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSourceProcessor { @@ -83,7 +82,6 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour private String sha1; private String sha256; private Host host = null; - private boolean setDataSourceOptionsCalled; static { filtersList.add(allFilter); @@ -184,8 +182,8 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour @Override public void run(DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { run(null, progressMonitor, callback); - } - + } + /** * Adds a data source to the case database using a background task in a * separate thread and the settings provided by the selection and @@ -208,71 +206,71 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour this.host = host; try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); - errors.add(ex.getMessage()); + errors.add(ex.getMessage()); callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return; } - + doAddImageProcess(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, progressMonitor, callback); } - + /** * Adds a data source to the case database using a background task in a * separate thread and the settings provided by the selection and - * configuration panel. Files found during ingest will be sent directly to the - * IngestStream provided. Returns as soon as the background task is started. - * The background task uses a callback object to signal task completion and - * return results. + * configuration panel. Files found during ingest will be sent directly to + * the IngestStream provided. Returns as soon as the background task is + * started. The background task uses a callback object to signal task + * completion and return results. * - * This method should not be called unless isPanelValid returns true, and + * This method should not be called unless isPanelValid returns true, and * should only be called for DSPs that support ingest streams. - * - * @param settings The ingest job settings. - * @param progress Progress monitor that will be used by the - * background task to report progress. - * @param callBack Callback that will be used by the background task - * to return results. + * + * @param settings The ingest job settings. + * @param progress Progress monitor that will be used by the background task + * to report progress. + * @param callBack Callback that will be used by the background task to + * return results. */ @Override - public void runWithIngestStream(IngestJobSettings settings, DataSourceProcessorProgressMonitor progress, + public void runWithIngestStream(IngestJobSettings settings, DataSourceProcessorProgressMonitor progress, DataSourceProcessorCallback callBack) { runWithIngestStream(null, settings, progress, callBack); - } - + } + /** * Adds a data source to the case database using a background task in a * separate thread and the settings provided by the selection and - * configuration panel. Files found during ingest will be sent directly to the - * IngestStream provided. Returns as soon as the background task is started. - * The background task uses a callback object to signal task completion and - * return results. + * configuration panel. Files found during ingest will be sent directly to + * the IngestStream provided. Returns as soon as the background task is + * started. The background task uses a callback object to signal task + * completion and return results. * - * This method should not be called unless isPanelValid returns true, and + * This method should not be called unless isPanelValid returns true, and * should only be called for DSPs that support ingest streams. - * - * @param host The host for this data source. - * @param settings The ingest job settings. - * @param progress Progress monitor that will be used by the - * background task to report progress. - * @param callBack Callback that will be used by the background task - * to return results. + * + * @param host The host for this data source. + * @param settings The ingest job settings. + * @param progress Progress monitor that will be used by the background task + * to report progress. + * @param callBack Callback that will be used by the background task to + * return results. */ @Override - public void runWithIngestStream(Host host, IngestJobSettings settings, DataSourceProcessorProgressMonitor progress, + public void runWithIngestStream(Host host, IngestJobSettings settings, DataSourceProcessorProgressMonitor progress, DataSourceProcessorCallback callBack) { - + // Read the settings from the wizard readConfigSettings(); this.host = host; - + // Set up the data source before creating the ingest stream try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -291,46 +289,43 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour callBack.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return; } - doAddImageProcess(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, progress, callBack); } - + /** * Store the options from the config panel. */ private void readConfigSettings() { - if (!setDataSourceOptionsCalled) { - configPanel.storeSettings(); - deviceId = UUID.randomUUID().toString(); - imagePath = configPanel.getContentPaths(); - sectorSize = configPanel.getSectorSize(); - timeZone = configPanel.getTimeZone(); - ignoreFatOrphanFiles = configPanel.getNoFatOrphans(); - md5 = configPanel.getMd5(); - if (md5.isEmpty()) { - md5 = null; - } - sha1 = configPanel.getSha1(); - if (sha1.isEmpty()) { - sha1 = null; - } - sha256 = configPanel.getSha256(); - if (sha256.isEmpty()) { - sha256 = null; - } + configPanel.storeSettings(); + deviceId = UUID.randomUUID().toString(); + imagePath = configPanel.getContentPaths(); + sectorSize = configPanel.getSectorSize(); + timeZone = configPanel.getTimeZone(); + ignoreFatOrphanFiles = configPanel.getNoFatOrphans(); + md5 = configPanel.getMd5(); + if (md5.isEmpty()) { + md5 = null; + } + sha1 = configPanel.getSha1(); + if (sha1.isEmpty()) { + sha1 = null; + } + sha256 = configPanel.getSha256(); + if (sha256.isEmpty()) { + sha256 = null; } } - + /** * Check if this DSP supports ingest streams. - * + * * @return True if this DSP supports an ingest stream, false otherwise. */ @Override public boolean supportsIngestStream() { return true; - } + } /** * Adds a data source to the case database using a background task in a @@ -357,11 +352,11 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour ingestStream = new DefaultIngestStream(); try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId); + new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); - errors.add(ex.getMessage()); + errors.add(ex.getMessage()); callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return; } @@ -375,10 +370,10 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour * selection and configuration panel. Returns as soon as the background task * is started and uses the callback object to signal task completion and * return results. - * - * The image should be loaded in the database and stored in "image" - * before calling this method. Additionally, an ingest stream should be initialized - * and stored in "ingestStream". + * + * The image should be loaded in the database and stored in "image" before + * calling this method. Additionally, an ingest stream should be initialized + * and stored in "ingestStream". * * @param deviceId An ASCII-printable identifier for the device * associated with the data source that is @@ -400,28 +395,28 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour */ private void doAddImageProcess(String deviceId, String imagePath, int sectorSize, String timeZone, boolean ignoreFatOrphanFiles, String md5, String sha1, String sha256, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { - // If the data source or ingest stream haven't been initialized, stop processing - if (ingestStream == null) { - String message = "Ingest stream was not initialized before running the add image process on " + imagePath; - logger.log(Level.SEVERE, message); - final List errors = new ArrayList<>(); - errors.add(message); - callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); - return; - } - if (image == null) { - String message = "Image was not added to database before running the add image process on " + imagePath; - logger.log(Level.SEVERE, message); - final List errors = new ArrayList<>(); - errors.add(message); - callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); - return; - } + // If the data source or ingest stream haven't been initialized, stop processing + if (ingestStream == null) { + String message = "Ingest stream was not initialized before running the add image process on " + imagePath; + logger.log(Level.SEVERE, message); + final List errors = new ArrayList<>(); + errors.add(message); + callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); + return; + } + if (image == null) { + String message = "Image was not added to database before running the add image process on " + imagePath; + logger.log(Level.SEVERE, message); + final List errors = new ArrayList<>(); + errors.add(message); + callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); + return; + } - AddImageTask.ImageDetails imageDetails = new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, null); - addImageTask = new AddImageTask(imageDetails, - progressMonitor, - new StreamingAddDataSourceCallbacks(ingestStream), + AddImageTask.ImageDetails imageDetails = new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, null); + addImageTask = new AddImageTask(imageDetails, + progressMonitor, + new StreamingAddDataSourceCallbacks(ingestStream), new StreamingAddImageTaskCallback(ingestStream, callback)); new Thread(addImageTask).start(); } @@ -455,7 +450,6 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour ignoreFatOrphanFiles = false; host = null; configPanel.reset(); - setDataSourceOptionsCalled = false; } private static boolean isAcceptedByFiler(File file, List filters) { @@ -488,12 +482,12 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour // able to process the data source return 100; } - + @Override public void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { process(deviceId, dataSourcePath, null, progressMonitor, callBack); } - + @Override public void process(String deviceId, Path dataSourcePath, Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { // this method does not use the config panel @@ -503,31 +497,27 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour this.timeZone = Calendar.getInstance().getTimeZone().getID(); this.host = host; this.ignoreFatOrphanFiles = false; - setDataSourceOptionsCalled = true; - + ingestStream = new DefaultIngestStream(); try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, host); + new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); - errors.add(ex.getMessage()); + errors.add(ex.getMessage()); callBack.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return; } - + doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, progressMonitor, callBack); - - // reset the settings so that by default the config panel is used next time (JIRA-7337). - reset(); } - + @Override public IngestStream processWithIngestStream(String deviceId, Path dataSourcePath, IngestJobSettings settings, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { return processWithIngestStream(deviceId, dataSourcePath, null, settings, progressMonitor, callBack); } - + @Override public IngestStream processWithIngestStream(String deviceId, Path dataSourcePath, Host host, IngestJobSettings settings, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { // this method does not use the config panel @@ -537,12 +527,11 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour this.timeZone = Calendar.getInstance().getTimeZone().getID(); this.host = host; this.ignoreFatOrphanFiles = false; - setDataSourceOptionsCalled = true; - + // Set up the data source before creating the ingest stream try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, host); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -560,13 +549,10 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour errors.add(ex.getMessage()); callBack.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return null; - } - + } + doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, progressMonitor, callBack); - - // reset the settings so that by default the config panel is used next time (JIRA-7337). - reset(); - + return ingestStream; } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java index ef3733c039..c659727d74 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java @@ -59,7 +59,6 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { private Host host; private ImageWriterSettings imageWriterSettings; private boolean ignoreFatOrphanFiles; - private boolean setDataSourceOptionsCalled; /** * Constructs a local drive data source processor that implements the @@ -138,7 +137,7 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { public void run(DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { run(null, progressMonitor, callback); } - + /** * Adds a data source to the case database using a background task in a * separate thread and the settings provided by the selection and @@ -156,38 +155,36 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { */ @Override public void run(Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { - if (!setDataSourceOptionsCalled) { - deviceId = UUID.randomUUID().toString(); - drivePath = configPanel.getContentPath(); - sectorSize = configPanel.getSectorSize(); - timeZone = configPanel.getTimeZone(); - ignoreFatOrphanFiles = configPanel.getNoFatOrphans(); - if (configPanel.getImageWriterEnabled()) { - imageWriterSettings = configPanel.getImageWriterSettings(); - } else { - imageWriterSettings = null; - } + deviceId = UUID.randomUUID().toString(); + drivePath = configPanel.getContentPath(); + sectorSize = configPanel.getSectorSize(); + timeZone = configPanel.getTimeZone(); + ignoreFatOrphanFiles = configPanel.getNoFatOrphans(); + if (configPanel.getImageWriterEnabled()) { + imageWriterSettings = configPanel.getImageWriterSettings(); + } else { + imageWriterSettings = null; } - + this.host = host; Image image; try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{drivePath}, sectorSize, - timeZone, null, null, null, deviceId, this.host); + new String[]{drivePath}, sectorSize, + timeZone, null, null, null, deviceId, this.host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding local disk with path " + drivePath + " to database", ex); final List errors = new ArrayList<>(); errors.add(ex.getMessage()); callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return; - } + } addDiskTask = new AddImageTask( - new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings), + new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings), progressMonitor, - new StreamingAddDataSourceCallbacks(new DefaultIngestStream()), + new StreamingAddDataSourceCallbacks(new DefaultIngestStream()), new StreamingAddImageTaskCallback(new DefaultIngestStream(), callback)); new Thread(addDiskTask).start(); } @@ -243,19 +240,19 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { Image image; try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{drivePath}, sectorSize, - timeZone, null, null, null, deviceId); + new String[]{drivePath}, sectorSize, + timeZone, null, null, null, deviceId); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding local disk with path " + drivePath + " to database", ex); final List errors = new ArrayList<>(); errors.add(ex.getMessage()); callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return; - } - - addDiskTask = new AddImageTask(new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings), - progressMonitor, - new StreamingAddDataSourceCallbacks(new DefaultIngestStream()), + } + + addDiskTask = new AddImageTask(new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings), + progressMonitor, + new StreamingAddDataSourceCallbacks(new DefaultIngestStream()), new StreamingAddImageTaskCallback(new DefaultIngestStream(), callback)); new Thread(addDiskTask).start(); } @@ -284,6 +281,5 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { drivePath = null; timeZone = null; ignoreFatOrphanFiles = false; - setDataSourceOptionsCalled = false; } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java index 7f5161b290..d75fabbae9 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java @@ -78,7 +78,6 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat * when the deprecated method setDataSourceOptions is removed. */ private List localFilePaths; - private boolean setDataSourceOptionsCalled; /** * Constructs a local/logical files and/or directories data source processor @@ -139,7 +138,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat return configPanel.validatePanel(); } - /** + /** * Adds a data source to the case database using a background task in a * separate thread and the settings provided by the selection and * configuration panel. Returns as soon as the background task is started. @@ -156,8 +155,8 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat @Override public void run(DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { run(null, progressMonitor, callback); - } - + } + /** * Adds a data source to the case database using a background task in a * separate thread and the settings provided by the selection and @@ -175,23 +174,21 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat */ @Override public void run(Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { - if (!setDataSourceOptionsCalled) { - - localFilePaths = configPanel.getContentPaths(); - if (configPanel.subTypeIsLogicalEvidencePanel()) { - try { - //if the L01 option was chosen - localFilePaths = extractLogicalEvidenceFileContents(localFilePaths); - } catch (L01Exception ex) { - //contents of l01 could not be extracted don't add data source or run ingest - final List errors = new ArrayList<>(); - errors.add(ex.getMessage()); - callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); - return; - } catch (NoCurrentCaseException ex) { - logger.log(Level.WARNING, "Exception while getting open case.", ex); - return; - } + + localFilePaths = configPanel.getContentPaths(); + if (configPanel.subTypeIsLogicalEvidencePanel()) { + try { + //if the L01 option was chosen + localFilePaths = extractLogicalEvidenceFileContents(localFilePaths); + } catch (L01Exception ex) { + //contents of l01 could not be extracted don't add data source or run ingest + final List errors = new ArrayList<>(); + errors.add(ex.getMessage()); + callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); + return; + } catch (NoCurrentCaseException ex) { + logger.log(Level.WARNING, "Exception while getting open case.", ex); + return; } } run(UUID.randomUUID().toString(), configPanel.getFileSetName(), localFilePaths, host, progressMonitor, callback); @@ -220,7 +217,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat command.add("-f"); command.add("files"); command.add("-t"); - File l01Dir = new File(Case.getCurrentCaseThrows().getModuleDirectory(), L01_EXTRACTION_DIR); + File l01Dir = new File(Case.getCurrentCaseThrows().getModuleDirectory(), L01_EXTRACTION_DIR); if (!l01Dir.exists()) { l01Dir.mkdirs(); } @@ -307,7 +304,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat return executablePath; } - + /** * Adds a data source to the case database using a background task in a * separate thread and the given settings instead of those provided by the @@ -385,7 +382,6 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat public void reset() { configPanel.select(); localFilePaths = null; - setDataSourceOptionsCalled = false; } @Override @@ -421,7 +417,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat public void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { process(deviceId, dataSourcePath, null, progressMonitor, callBack); } - + @Override public void process(String deviceId, Path dataSourcePath, Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { List filePaths = Arrays.asList(new String[]{dataSourcePath.toString()});