ingest progress bar: show more accurately which file is being ingested now

This commit is contained in:
adam-m 2012-04-09 17:03:45 -04:00
parent 58ded3afa2
commit c266b4fd41

View File

@ -554,8 +554,6 @@ public class IngestManager {
return ret; return ret;
} }
//image worker to remove itself when complete or interrupted //image worker to remove itself when complete or interrupted
void removeImageIngestWorker(IngestImageThread worker) { void removeImageIngestWorker(IngestImageThread worker) {
//remove worker //remove worker
@ -643,7 +641,7 @@ public class IngestManager {
void enqueue(FsContent fsContent, IngestServiceFsContent service) { void enqueue(FsContent fsContent, IngestServiceFsContent service) {
//fsContentUnits.put(fsContent, Collections.singletonList(service)); //fsContentUnits.put(fsContent, Collections.singletonList(service));
List<IngestServiceFsContent> services = fsContentUnits.get(fsContent); List<IngestServiceFsContent> services = fsContentUnits.get(fsContent);
if(services == null) { if (services == null) {
services = new ArrayList<IngestServiceFsContent>(); services = new ArrayList<IngestServiceFsContent>();
fsContentUnits.put(fsContent, services); fsContentUnits.put(fsContent, services);
} }
@ -653,7 +651,7 @@ public class IngestManager {
void enqueue(FsContent fsContent, List<IngestServiceFsContent> services) { void enqueue(FsContent fsContent, List<IngestServiceFsContent> services) {
List<IngestServiceFsContent> oldServices = fsContentUnits.get(fsContent); List<IngestServiceFsContent> oldServices = fsContentUnits.get(fsContent);
if(oldServices == null) { if (oldServices == null) {
oldServices = new ArrayList<IngestServiceFsContent>(); oldServices = new ArrayList<IngestServiceFsContent>();
fsContentUnits.put(fsContent, oldServices); fsContentUnits.put(fsContent, oldServices);
} }
@ -691,9 +689,10 @@ public class IngestManager {
* @return true if the service is enqueued to do work * @return true if the service is enqueued to do work
*/ */
boolean hasServiceEnqueued(IngestServiceFsContent service) { boolean hasServiceEnqueued(IngestServiceFsContent service) {
for(List<IngestServiceFsContent> list : fsContentUnits.values()) { for (List<IngestServiceFsContent> list : fsContentUnits.values()) {
if(list.contains(service)) if (list.contains(service)) {
return true; return true;
}
} }
return false; return false;
} }
@ -706,8 +705,8 @@ public class IngestManager {
public String printQueue() { public String printQueue() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
/*for (QueueUnit<FsContent, IngestServiceFsContent> u : fsContentUnits) { /*for (QueueUnit<FsContent, IngestServiceFsContent> u : fsContentUnits) {
sb.append(u.toString()); sb.append(u.toString());
sb.append("\n"); sb.append("\n");
}*/ }*/
return sb.toString(); return sb.toString();
} }
@ -732,7 +731,7 @@ public class IngestManager {
void enqueue(Image image, IngestServiceImage service) { void enqueue(Image image, IngestServiceImage service) {
List<IngestServiceImage> services = imageUnits.get(image); List<IngestServiceImage> services = imageUnits.get(image);
if(services == null) { if (services == null) {
services = new ArrayList<IngestServiceImage>(); services = new ArrayList<IngestServiceImage>();
imageUnits.put(image, services); imageUnits.put(image, services);
} }
@ -741,7 +740,7 @@ public class IngestManager {
void enqueue(Image image, List<IngestServiceImage> services) { void enqueue(Image image, List<IngestServiceImage> services) {
List<IngestServiceImage> oldServices = imageUnits.get(image); List<IngestServiceImage> oldServices = imageUnits.get(image);
if(oldServices == null) { if (oldServices == null) {
oldServices = new ArrayList<IngestServiceImage>(); oldServices = new ArrayList<IngestServiceImage>();
imageUnits.put(image, oldServices); imageUnits.put(image, oldServices);
} }
@ -818,19 +817,19 @@ public class IngestManager {
public String toHtmlString() { public String toHtmlString() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("<html>"); sb.append("<html>");
sb.append("Ingest time: ").append(getTotalTimeString()).append("<br />"); sb.append("Ingest time: ").append(getTotalTimeString()).append("<br />");
sb.append("Total errors: ").append(errorsTotal).append("<br />"); sb.append("Total errors: ").append(errorsTotal).append("<br />");
/* /*
if (errorsTotal > 0) { if (errorsTotal > 0) {
sb.append("Errors per service:"); sb.append("Errors per service:");
for (IngestServiceAbstract service : errors.keySet()) { for (IngestServiceAbstract service : errors.keySet()) {
final int errorsService = errors.get(service); final int errorsService = errors.get(service);
sb.append("\t").append(service.getName()).append(": ").append(errorsService).append("<br />"); sb.append("\t").append(service.getName()).append(": ").append(errorsService).append("<br />");
} }
} }
* */ * */
sb.append("</html>"); sb.append("</html>");
return sb.toString(); return sb.toString();
} }
@ -927,20 +926,23 @@ public class IngestManager {
fsContentServiceResults.clear(); fsContentServiceResults.clear();
} }
final FsContent fileToProcess = unit.getKey();
for (IngestServiceFsContent service : unit.getValue()) { for (IngestServiceFsContent service : unit.getValue()) {
if (isCancelled()) { if (isCancelled()) {
return null; return null;
} }
final FsContent fileToProcess = unit.getKey(); progress.progress(fileToProcess.getName(), processedFiles);
if ( (fileToProcess.getMeta_flags() & TskData.TSK_FS_META_FLAG_ENUM.UNALLOC.getMetaFlag() ) != 0) {
if ((fileToProcess.getMeta_flags() & TskData.TSK_FS_META_FLAG_ENUM.UNALLOC.getMetaFlag()) != 0) {
//skip unallocated files, processing certain unalloc files may cause some modules to hang //skip unallocated files, processing certain unalloc files may cause some modules to hang
//TODO unallocated space and files are a future feature //TODO unallocated space and files are a future feature
progress.progress(unit.getKey().getName(), ++processedFiles); progress.progress(unit.getKey().getName(), ++processedFiles);
--numFsContents; --numFsContents;
continue; continue;
} }
try { try {
IngestServiceFsContent.ProcessResult result = service.process(fileToProcess); IngestServiceFsContent.ProcessResult result = service.process(fileToProcess);
//handle unconditional stop //handle unconditional stop
@ -966,7 +968,7 @@ public class IngestManager {
progress.switchToIndeterminate(); progress.switchToIndeterminate();
progress.switchToDeterminate(numFsContents); progress.switchToDeterminate(numFsContents);
} }
progress.progress(unit.getKey().getName(), ++processedFiles); progress.progress(fileToProcess.getName(), ++processedFiles);
--numFsContents; --numFsContents;
} //end of this fsContent } //end of this fsContent
logger.log(Level.INFO, "Done background processing"); logger.log(Level.INFO, "Done background processing");
@ -1011,7 +1013,6 @@ public class IngestManager {
} }
private void handleInterruption() { private void handleInterruption() {
for (IngestServiceFsContent s : fsContentServices) { for (IngestServiceFsContent s : fsContentServices) {
s.stop(); s.stop();
@ -1109,10 +1110,10 @@ public class IngestManager {
//addImage((IngestServiceImage) service, image); //addImage((IngestServiceImage) service, image);
break; break;
case FsContent: case FsContent:
if(fsContents == null) { if (fsContents == null) {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
fsContents = new GetAllFilesContentVisitor().visit(image); fsContents = new GetAllFilesContentVisitor().visit(image);
logger.info("Get all files took " + (System.currentTimeMillis()-start) + "ms"); logger.info("Get all files took " + (System.currentTimeMillis() - start) + "ms");
} }
//enqueue the same singleton fscontent service //enqueue the same singleton fscontent service
logger.log(Level.INFO, "Adding image " + image.getName() + " with " + fsContents.size() + " number of fsContent to service " + service.getName()); logger.log(Level.INFO, "Adding image " + image.getName() + " with " + fsContents.size() + " number of fsContent to service " + service.getName());
@ -1123,8 +1124,9 @@ public class IngestManager {
} }
progress.progress(serviceName + " " + imageName, ++processed); progress.progress(serviceName + " " + imageName, ++processed);
} }
if(fsContents != null) if (fsContents != null) {
fsContents.clear(); fsContents.clear();
}
} }
//logger.log(Level.INFO, fsContentQueue.printQueue()); //logger.log(Level.INFO, fsContentQueue.printQueue());