Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2008-02-29 21:13:57 +0000
committerslewis2008-02-29 21:13:57 +0000
commitdcdce45558fd41c6c3ce51d23b03e25c007c43cf (patch)
tree11b5f37b90b510aa0eb7418c26103195c9b99b56 /providers/bundles/org.eclipse.ecf.provider.filetransfer
parentce49705701aafae2dfbb2cc8a3a589a0091ff926 (diff)
downloadorg.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')
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Messages.java6
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/messages.properties6
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java45
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()
*/

Back to the top