diff options
author | slewis | 2008-02-29 21:13:57 +0000 |
---|---|---|
committer | slewis | 2008-02-29 21:13:57 +0000 |
commit | dcdce45558fd41c6c3ce51d23b03e25c007c43cf (patch) | |
tree | 11b5f37b90b510aa0eb7418c26103195c9b99b56 /providers/bundles/org.eclipse.ecf.provider.filetransfer | |
parent | ce49705701aafae2dfbb2cc8a3a589a0091ff926 (diff) | |
download | org.eclipse.ecf-dcdce45558fd41c6c3ce51d23b03e25c007c43cf.tar.gz org.eclipse.ecf-dcdce45558fd41c6c3ce51d23b03e25c007c43cf.tar.xz org.eclipse.ecf-dcdce45558fd41c6c3ce51d23b03e25c007c43cf.zip |
Applied patch from bug 220258. Download jobs now show download speed.
Diffstat (limited to 'providers/bundles/org.eclipse.ecf.provider.filetransfer')
3 files changed, 51 insertions, 6 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Messages.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Messages.java index bfd4c886b..541319ea1 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Messages.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Messages.java @@ -20,11 +20,17 @@ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.ecf.internal.provider.filetransfer.messages"; //$NON-NLS-1$ public static String AbstractOutgoingFileTransfer_EXCEPTION_FILE_TRANSFER_INFO_NOT_NULL; public static String AbstractOutgoingFileTransfer_EXCEPTION_IN_FINALLY; + public static String AbstractRetrieveFileTransfer_TransferRateFormat; public static String AbstractRetrieveFileTransfer_MalformedURLException; public static String AbstractRetrieveFileTransfer_Progress_Data; public static String AbstractRetrieveFileTransfer_EXCEPTION_IN_FINALLY; public static String AbstractRetrieveFileTransfer_Exception_User_Cancelled; + public static String AbstractRetrieveFileTransfer_InfoTransferRate; public static String AbstractRetrieveFileTransfer_RemoteFileID_Not_Null; + public static String AbstractRetrieveFileTransfer_SizeUnitBytes; + public static String AbstractRetrieveFileTransfer_SizeUnitGB; + public static String AbstractRetrieveFileTransfer_SizeUnitKB; + public static String AbstractRetrieveFileTransfer_SizeUnitMB; public static String AbstractRetrieveFileTransfer_Status_Transfer_Completed_OK; public static String AbstractRetrieveFileTransfer_Status_Transfer_Exception; public static String AbstractRetrieveFileTransfer_TransferListener_Not_Null; diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/messages.properties b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/messages.properties index 89fa1831e..8675b0524 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/messages.properties +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/messages.properties @@ -11,9 +11,11 @@ AbstractOutgoingFileTransfer_EXCEPTION_FILE_TRANSFER_INFO_NOT_NULL=File transfer info cannot be null. AbstractOutgoingFileTransfer_EXCEPTION_IN_FINALLY=Exception in send done event handler. +AbstractRetrieveFileTransfer_TransferRateFormat=0.00 {0} AbstractRetrieveFileTransfer_Progress_Data=\ - data AbstractRetrieveFileTransfer_EXCEPTION_IN_FINALLY=Exception in receive done/paused event handler. AbstractRetrieveFileTransfer_Exception_User_Cancelled=Cancelled by user +AbstractRetrieveFileTransfer_InfoTransferRate=({0}/s) AbstractRetrieveFileTransfer_Status_Transfer_Completed_OK=Transfer Completed OK UrlConnectionRetrieveFileTransfer_CONNECT_EXCEPTION_NOT_CONNECTED=not connected UrlConnectionRetrieveFileTransfer_EXCEPTION_FILE_MODIFIED_SINCE_LAST_ACCESS=file modified since last access @@ -42,6 +44,10 @@ HttpClientRetrieveFileTransfer_Username_Prefix=Username: HttpClientRetrieveFileTransfer_Unauthorized=Unauthorized HttpClientRetrieveFileTransfer_Proxy_Auth_Required=Proxy Authentication Required AbstractRetrieveFileTransfer_MalformedURLException=Exception creating URL for {0} +AbstractRetrieveFileTransfer_SizeUnitBytes=bytes +AbstractRetrieveFileTransfer_SizeUnitGB=GB +AbstractRetrieveFileTransfer_SizeUnitKB=KB +AbstractRetrieveFileTransfer_SizeUnitMB=MB FileSystemBrowser_EXCEPTION_DIRECTORY_DOES_NOT_EXIST=Directory {0} does not exist. FileSystemBrowser_EXCEPTION_NOT_DIRECTORY={0} is not a directory. FileTransferNamespace_Namespace_Protocol=ecf.provider.filetransfer diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java index 1147e81e7..df4dce593 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java @@ -1,16 +1,20 @@ /******************************************************************************* - * Copyright (c) 2004, 2007 Composent, Inc. All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html + * Copyright (c) 2004, 2008 Composent, Inc. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html * - * Contributors: Composent, Inc. - initial API and implementation + * Contributors: + * Composent, Inc. - initial API and implementation + * Benjamin Cabe <benjamin.cabe@anyware-tech.com> - bug 220258 ******************************************************************************/ package org.eclipse.ecf.provider.filetransfer.retrieve; import java.io.*; import java.net.MalformedURLException; import java.net.URL; +import java.text.DecimalFormat; import java.util.Map; import org.eclipse.core.net.proxy.IProxyData; import org.eclipse.core.net.proxy.IProxyService; @@ -69,12 +73,17 @@ public abstract class AbstractRetrieveFileTransfer implements IIncomingFileTrans protected IConnectContext connectContext; + protected long transferStartTime; + + protected double downloadRateBytesPerSecond = 0L; + public AbstractRetrieveFileTransfer() { // } private IFileTransferRunnable fileTransferRunnable = new IFileTransferRunnable() { public IStatus performFileTransfer(IProgressMonitor monitor) { + transferStartTime = System.currentTimeMillis(); final byte[] buf = new byte[buff_length]; final long totalWork = ((fileLength == -1) ? 100 : fileLength); double factor = (totalWork > Integer.MAX_VALUE) ? (((double) Integer.MAX_VALUE) / ((double) totalWork)) : 1.0; @@ -136,12 +145,36 @@ public abstract class AbstractRetrieveFileTransfer implements IIncomingFileTrans if (bytes != -1) { bytesReceived += bytes; localFileContents.write(buf, 0, bytes); - fireTransferReceiveDataEvent(); + downloadRateBytesPerSecond = (bytesReceived / ((System.currentTimeMillis() + 1 - transferStartTime) / 1000.0)); + monitor.setTaskName(createJobName() + Messages.AbstractRetrieveFileTransfer_Progress_Data + NLS.bind(Messages.AbstractRetrieveFileTransfer_InfoTransferRate, toHumanReadableBytes(downloadRateBytesPerSecond))); monitor.worked((int) Math.round(factor * bytes)); + fireTransferReceiveDataEvent(); } else done = true; } + public static String toHumanReadableBytes(double size) { + double convertedSize; + String unit; + + if (size / (1024 * 1024 * 1024) >= 1) { + convertedSize = size / (1024 * 1024 * 1024); + unit = Messages.AbstractRetrieveFileTransfer_SizeUnitGB; + } else if (size / (1024 * 1024) >= 1) { + convertedSize = size / (1024 * 1024); + unit = Messages.AbstractRetrieveFileTransfer_SizeUnitMB; + } else if (size / 1024 >= 1) { + convertedSize = size / 1024; + unit = Messages.AbstractRetrieveFileTransfer_SizeUnitKB; + } else { + convertedSize = size; + unit = Messages.AbstractRetrieveFileTransfer_SizeUnitBytes; + } + + DecimalFormat df = new DecimalFormat(NLS.bind(Messages.AbstractRetrieveFileTransfer_TransferRateFormat, unit)); + return df.format(convertedSize); + } + /* (non-Javadoc) * @see org.eclipse.ecf.core.identity.IIdentifiable#getID() */ |