@Override protected void done() { activeDownloaders.remove(this); if (activeDownloaders.isEmpty()) { pm.done(); pm.setPreMessage("All downloads completed"); pm.setPostMessage(""); downloadedFilesCount = 0; } } }
private void downloadFilesWithDapAccess(File targetDir) throws IOException { for (Map.Entry<String, Boolean> entry : dapUris.entrySet()) { if (pm.isCanceled()) { break; } downloadDapFile(targetDir, entry.getKey(), entry.getValue()); } }
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 + "...")); }
@Override public void actionPerformed(ActionEvent ignored) { Map<String, Boolean> dapURIs = parameterProvider.getDapURIs(); List<String> fileURIs = parameterProvider.getFileURIs(); parameterProvider.reset(); if (dapURIs.size() == 0 && fileURIs.size() == 0) { return; } File targetDirectory = parameterProvider.getTargetDirectory(); DAPDownloader downloader = new DAPDownloader(dapURIs, fileURIs, this, pm); if (activeDownloaders.isEmpty()) { pm.beginTask("", (int) (parameterProvider.getDatasizeInKb())); pm.worked(0); pm.resetStartTime(); filesToDownloadCount = dapURIs.size() + fileURIs.size(); } else { pm.updateTask((int) (parameterProvider.getDatasizeInKb())); filesToDownloadCount += dapURIs.size() + fileURIs.size(); } DownloadWorker downloadWorker = new DownloadWorker(downloader, targetDirectory); downloadWorker.execute(); activeDownloaders.add(downloadWorker); }
downloadButtonPanel.setBorder(new EmptyBorder(8, 8, 8, 8)); cancelButton = new JButton("Cancel"); final DownloadProgressBarPM pm = new DownloadProgressBarPM(progressBar, preMessageLabel, postMessageLabel, cancelButton); progressBar.setVisible(false); folderChooserComboBox = new FolderChooserComboBox() {
private void downloadFilesWithFileAccess(File targetDir) throws IOException { for (String fileURI : fileURIs) { if (pm.isCanceled()) { break; } try { downloadFile(targetDir, fileURI); } catch (Exception e) { throw new IOException("Unable to download file '" + fileURI + "'.", e); } } }
if (!pm.isCanceled()) { downloadContext.notifyFileDownloaded(file);