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
private final IngestScheduler scheduler;
//workers
private IngestAbstractFileThread abstractFileIngester;
private IngestAbstractFileProcessor abstractFileIngester;
private List<IngestImageThread> imageIngesters;
private SwingWorker<Object, Void> queueWorker;
//modules
@ -250,7 +250,9 @@ 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.
* Now we want to process this file with the same ingest context.
*
@ -346,7 +348,7 @@ public class IngestManager {
if (startAbstractFileIngester) {
stats = new IngestManagerStats();
abstractFileIngester = new IngestAbstractFileThread();
abstractFileIngester = new IngestAbstractFileProcessor();
//init all fs modules, everytime new worker starts
for (IngestModuleAbstractFile s : abstractFileModules) {
IngestModuleInit moduleInit = new IngestModuleInit();
@ -790,11 +792,13 @@ public class IngestManager {
//ingester worker for AbstractFile queue
//worker runs until AbstractFile queue is consumed
//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;
@Override
protected Object doInBackground() throws Exception {
@ -814,14 +818,16 @@ public class IngestManager {
if (progress != null) {
progress.setDisplayName(displayName + " (Cancelling...)");
}
return IngestAbstractFileThread.this.cancel(true);
return IngestAbstractFileProcessor.this.cancel(true);
}
});
final IngestScheduler.FileScheduler fileScheduler = scheduler.getFileScheduler();
//initialize the progress bar
progress.start();
progress.switchToIndeterminate();
//set initial totals and processed (to be updated as we process or new files are scheduled)
int totalEnqueuedFiles = fileScheduler.getFilesEnqueuedEst();
progress.switchToDeterminate(totalEnqueuedFiles);
int processedFiles = 0;
@ -858,7 +864,7 @@ public class IngestManager {
}
} 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);
}
}
@ -867,12 +873,12 @@ public class IngestManager {
if (newTotalEnqueuedFiles > totalEnqueuedFiles) {
//update if new enqueued
totalEnqueuedFiles = newTotalEnqueuedFiles + 1;// + processedFiles + 1;
processedFiles = 0;
//processedFiles = 0;
//reset
progress.switchToIndeterminate();
progress.switchToDeterminate(totalEnqueuedFiles);
}
if (processedFiles < totalEnqueuedFiles) { //fix for now to handle the same image enqueued twice
++processedFiles;
}
//--totalEnqueuedFiles;

View File

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