@Override protected void done() { activeDownloaders.remove(this); if (activeDownloaders.isEmpty()) { pm.done(); pm.setPreMessage("All downloads completed"); pm.setPostMessage(""); downloadedFilesCount = 0; } } }
public void cancel() { for (DownloadWorker activeDownloader : new HashSet<DownloadWorker>(activeDownloaders)) { activeDownloader.cancel(true); } activeDownloaders.clear(); pm.setCanceled(true); pm.setPreMessage("Download cancelled"); pm.setPostMessage(""); downloadedFilesCount = 0; }
private void updateProgressBar(String fileName, int work) { pm.worked(work); StringBuilder preMessageBuilder = new StringBuilder(fileName); int currentWork = pm.getCurrentWork(); preMessageBuilder.append(" (") .append(downloadContext.getAllDownloadedFilesCount() + 1) .append("/") .append(downloadContext.getAllFilesCount()) .append(")"); if (currentWork != 0) { final long currentTime = new GregorianCalendar().getTimeInMillis(); final long durationInMillis = currentTime - pm.getStartTime(); double downloadSpeed = getDownloadSpeed(durationInMillis, currentWork); char sizeIdentifier = downloadSpeed < 1000 ? 'k' : 'M'; downloadSpeed = downloadSpeed < 1000 ? downloadSpeed : downloadSpeed / 1024; String speedString = OpendapUtils.format(downloadSpeed); preMessageBuilder.append(" @ ").append(speedString).append(" ").append(sizeIdentifier).append("B/s"); } int totalWork = pm.getTotalWork(); double percentage = ((double) currentWork / totalWork) * 100.0; String workDone = OpendapUtils.format(currentWork / 1024.0); String totalWorkString = OpendapUtils.format(totalWork / 1024.0); pm.setPostMessage(workDone + " MB/" + totalWorkString + " MB (" + OpendapUtils.format(percentage) + "%)"); String preMessageString = preMessageBuilder.toString(); pm.setTooltip("Downloading " + preMessageString); final String shortenedFilename = fileName.substring(0, Math.min(fileName.length(), MAX_FILENAME_DISPLAY_LENGTH)); pm.setPreMessage("Downloading " + preMessageString.replace(fileName, shortenedFilename + "...")); }