/** * Gets an available <code>ProgressMonitor</code> to use for the next task. * @return An available <code>ProgressMonitor</code>. */ private synchronized ProgressMonitor getWorkerProgressMonitor() { ProgressMonitor monitor; if (numProgressMonitors < maxConcurrentWorkers) { String title = String.format("Worker (%d)", numProgressMonitors++); monitor = new PermanentProgressMonitor(monitorFactory.createProgressMonitor(title)); } else { monitor = workerMonitorQueue.remove(); } return monitor; }
/** * Gets the <code>JobMonitor</code> for the job that the specified * <code>JobStatus</code> event is for. * @param status The <code>JobStatus</code> event for which to obtain the * corresponding <code>JobMonitor</code>. * @return The <code>JobMonitor</code>. */ private synchronized JobMonitor getJobMonitor(JobStatus status) { UUID jobId = status.getJobId(); JobMonitor monitor = monitors.get(jobId); if (monitor == null) { monitor = new JobMonitor(factory.createProgressMonitor(status.getDescription())); monitors.put(jobId, monitor); } return monitor; }