better progress bar updates when new file scheduled, minor refactoring

This commit is contained in:
adam-m 2013-02-21 10:50:54 -05:00
parent e6c936957d
commit c6cb04463e
2 changed files with 20 additions and 17 deletions

View File

@ -59,7 +59,7 @@ public class IngestManager {
//queues //queues
private final IngestScheduler scheduler; private final IngestScheduler scheduler;
//workers //workers
private IngestAbstractFileThread abstractFileIngester; private IngestAbstractFileProcessor abstractFileIngester;
private List<IngestImageThread> imageIngesters; private List<IngestImageThread> imageIngesters;
private SwingWorker<Object, Void> queueWorker; private SwingWorker<Object, Void> queueWorker;
//modules //modules
@ -251,6 +251,8 @@ public class IngestManager {
/** /**
* Schedule a file for ingest. * Schedule a file for ingest.
* Scheduler updates the current progress.
*
* The file is usually a product of a recently ran ingest. * The file is usually a product of a recently ran ingest.
* Now we want to process this file with the same ingest context. * Now we want to process this file with the same ingest context.
* *
@ -346,7 +348,7 @@ public class IngestManager {
if (startAbstractFileIngester) { if (startAbstractFileIngester) {
stats = new IngestManagerStats(); stats = new IngestManagerStats();
abstractFileIngester = new IngestAbstractFileThread(); abstractFileIngester = new IngestAbstractFileProcessor();
//init all fs modules, everytime new worker starts //init all fs modules, everytime new worker starts
for (IngestModuleAbstractFile s : abstractFileModules) { for (IngestModuleAbstractFile s : abstractFileModules) {
IngestModuleInit moduleInit = new IngestModuleInit(); IngestModuleInit moduleInit = new IngestModuleInit();
@ -790,9 +792,11 @@ public class IngestManager {
//ingester worker for AbstractFile queue //ingester worker for AbstractFile queue
//worker runs until AbstractFile queue is consumed //worker runs until AbstractFile queue is consumed
//and if needed, new instance is created and started when data arrives //and if needed, new instance is created and started when data arrives
private class IngestAbstractFileThread extends SwingWorker<Object, Void> { private class IngestAbstractFileProcessor extends SwingWorker<Object, Void> {
private Logger logger = Logger.getLogger(IngestAbstractFileThread.class.getName()); private Logger logger = Logger.getLogger(IngestAbstractFileProcessor.class.getName());
//progress bar
private ProgressHandle progress; private ProgressHandle progress;
@Override @Override
@ -814,14 +818,16 @@ public class IngestManager {
if (progress != null) { if (progress != null) {
progress.setDisplayName(displayName + " (Cancelling...)"); progress.setDisplayName(displayName + " (Cancelling...)");
} }
return IngestAbstractFileThread.this.cancel(true); return IngestAbstractFileProcessor.this.cancel(true);
} }
}); });
final IngestScheduler.FileScheduler fileScheduler = scheduler.getFileScheduler(); final IngestScheduler.FileScheduler fileScheduler = scheduler.getFileScheduler();
//initialize the progress bar
progress.start(); progress.start();
progress.switchToIndeterminate(); progress.switchToIndeterminate();
//set initial totals and processed (to be updated as we process or new files are scheduled)
int totalEnqueuedFiles = fileScheduler.getFilesEnqueuedEst(); int totalEnqueuedFiles = fileScheduler.getFilesEnqueuedEst();
progress.switchToDeterminate(totalEnqueuedFiles); progress.switchToDeterminate(totalEnqueuedFiles);
int processedFiles = 0; int processedFiles = 0;
@ -858,7 +864,7 @@ public class IngestManager {
} }
} catch (Exception e) { } catch (Exception e) {
logger.log(Level.WARNING, "Exception from module: " + module.getName(), e); logger.log(Level.SEVERE, "Error: unexpected exception from module: " + module.getName(), e);
stats.addError(module); stats.addError(module);
} }
} }
@ -867,12 +873,12 @@ public class IngestManager {
if (newTotalEnqueuedFiles > totalEnqueuedFiles) { if (newTotalEnqueuedFiles > totalEnqueuedFiles) {
//update if new enqueued //update if new enqueued
totalEnqueuedFiles = newTotalEnqueuedFiles + 1;// + processedFiles + 1; totalEnqueuedFiles = newTotalEnqueuedFiles + 1;// + processedFiles + 1;
processedFiles = 0; //processedFiles = 0;
//reset
progress.switchToIndeterminate(); progress.switchToIndeterminate();
progress.switchToDeterminate(totalEnqueuedFiles); progress.switchToDeterminate(totalEnqueuedFiles);
} }
if (processedFiles < totalEnqueuedFiles) { //fix for now to handle the same image enqueued twice if (processedFiles < totalEnqueuedFiles) { //fix for now to handle the same image enqueued twice
++processedFiles; ++processedFiles;
} }
//--totalEnqueuedFiles; //--totalEnqueuedFiles;

View File

@ -18,7 +18,6 @@
*/ */
package org.sleuthkit.autopsy.ingest; package org.sleuthkit.autopsy.ingest;
import java.sql.ResultSet;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Comparator; import java.util.Comparator;
@ -160,11 +159,11 @@ class IngestScheduler {
/** /**
* query num files enqueued total num of files to be enqueued. * query num files enqueued total num of files to be enqueued.
* *
* Checks files for all the images currently in the queues. * Counts all files for all the images currently in the queues.
* *
* @return approx. total num of files enqueued (or to be enqueued) * @return approx. total num of files enqueued (or to be enqueued)
*/ */
private synchronized int queryNumFiles() { private synchronized int queryNumFilesinEnqueuedImages() {
int totalFiles = 0; int totalFiles = 0;
List<Image> images = getImages(); List<Image> images = getImages();
@ -368,7 +367,7 @@ class IngestScheduler {
ProcessTask fileTask = new ProcessTask(file, originalContext); ProcessTask fileTask = new ProcessTask(file, originalContext);
if (shouldEnqueueTask(fileTask)) { if (shouldEnqueueTask(fileTask)) {
this.curFileProcessTasks.addFirst(fileTask); this.curFileProcessTasks.addFirst(fileTask);
this.filesEnqueuedEst = queryNumFiles(); ++filesEnqueuedEst;
} }
@ -403,7 +402,7 @@ class IngestScheduler {
//adds and resorts the tasks //adds and resorts the tasks
this.rootProcessTasks.addAll(rootTasks); this.rootProcessTasks.addAll(rootTasks);
this.filesEnqueuedEst = queryNumFiles(); this.filesEnqueuedEst = queryNumFilesinEnqueuedImages();
//update the dir and file level queues if needed //update the dir and file level queues if needed
updateQueues(); updateQueues();
@ -774,8 +773,6 @@ class IngestScheduler {
//queryB.append( "AND (type = "); //queryB.append( "AND (type = ");
//queryB.append(TskData.TSK_DB_FILES_TYPE_ENUM.FS.getFileType()); //queryB.append(TskData.TSK_DB_FILES_TYPE_ENUM.FS.getFileType());
//queryB.append(")"); //queryB.append(")");
ResultSet rs = null;
try { try {
final String query = queryB.toString(); final String query = queryB.toString();
logger.log(Level.INFO, "Executing count files query: " + query); logger.log(Level.INFO, "Executing count files query: " + query);