diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java index df45f8c492..bf497be095 100755 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java @@ -960,14 +960,10 @@ public class IngestManager { public String toHtmlString() { StringBuilder sb = new StringBuilder(); sb.append(""); - if (startTime != null) { - sb.append("Start time: ").append(dateFormatter.format(startTime)).append("
"); - } - if (endTime != null) { - sb.append("End time: ").append(dateFormatter.format(endTime)).append("
"); - } - sb.append("Total ingest time: ").append(getTotalTimeString()).append("
"); + + sb.append("Ingest time: ").append(getTotalTimeString()).append("
"); sb.append("Total errors: ").append(errorsTotal).append("
"); + /* if (errorsTotal > 0) { sb.append("Errors per service:"); for (IngestServiceAbstract service : errors.keySet()) { @@ -975,6 +971,8 @@ public class IngestManager { sb.append("\t").append(service.getName()).append(": ").append(errorsService).append("
"); } } + * */ + sb.append(""); return sb.toString(); } diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java index 498dd1482d..192ecdcf6d 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.java @@ -229,8 +229,8 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing @Override public void displayReport(String ingestReport) { - Object[] options = {"Generate Report", - "Cancel"}; + Object[] options = {"OK", + "Generate Report"}; final int choice = JOptionPane.showOptionDialog(null, ingestReport, "Ingest Report", @@ -244,7 +244,7 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing Action reportAction = null; //find action by name from action lookup, without introducing cyclic dependency - if (choice == JOptionPane.YES_OPTION) { + if (choice == JOptionPane.NO_OPTION) { List actions = Utilities.actionsForPath("Toolbars/File"); for (Action a : actions) { //separators are null actions diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestServiceAbstract.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestServiceAbstract.java index 1e819cf66c..b8ffdf756f 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestServiceAbstract.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestServiceAbstract.java @@ -64,18 +64,25 @@ public interface IngestServiceAbstract { /** * A service can manage and use additional threads to perform some work in the background. * This method provides insight to the manager if the service has truly completed its work or not. + * + * * @return true if any background threads/workers managed by this service are still running - * false if all work has been done, or if background threads are not used by this service + * false if all work has been done, or if background threads are not managed by this service */ public boolean hasBackgroundJobsRunning(); /** - * Register listener to notify when all background jobs have completed and the service - * has truly finished. The service should first check if it has threads running, and then register the listener, all in atomic operation. - * The event fired off should be BCKGRND_JOBS_COMPLETED_EVT, with the instance of IngestServiceAbstract in the newValue parameter. + * Register listener to notify when all background jobs managed by this service have completed and the service + * has truly finished. The service should first check if it has threads running, and then register the listener, all in a single atomic, synchronized operation, and return the result of the registration. + * Do not register the listener if the background threads are not running and will not run during this service invocation. + * If the service does use background threads it is required to implement this method properly and ensure the event is fired when the service-managed threads complete (are finished or cancelled) + * The event fired off should be IngestServiceAbstract.BCKGRND_JOBS_COMPLETED_EVT, with the instance of IngestServiceAbstract in the newValue parameter. + * The listeners should be reset at service init() - listeners are expected to register again as needed during the new service run. + * Typical use case is for ingest manager to try to register the listener for every service when the queue has been consumed, + * for a precise indication when all work is truly done. * * @param l listener - * @return true if listener registered, false otherwise (i.e. no background jobs were running) + * @return true if listener registered, false otherwise (i.e. no background jobs were running, or the service does not manage additional threads) */ public boolean backgroundJobsCompleteListener(PropertyChangeListener l);