diff options
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.repository')
3 files changed, 94 insertions, 6 deletions
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/DownloadProgressEvent.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/DownloadProgressEvent.java new file mode 100644 index 000000000..fdc1b7c39 --- /dev/null +++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/DownloadProgressEvent.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright (c) 2012 Wind River 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: + * Wind River - initial API and implementation + *******************************************************************************/ +package org.eclipse.equinox.internal.p2.repository; + +import java.net.URI; +import java.util.EventObject; + +public class DownloadProgressEvent extends EventObject { + + private static final long serialVersionUID = -7880532297074721824L; + private ProgressStatistics stat; + + public DownloadProgressEvent(ProgressStatistics stat) { + super(stat); + this.stat = stat; + } + + public String getFileName() { + return stat.m_fileName; + } + + public URI getDownloadURI() { + return stat.m_uri; + } + + public long getAverageSpeed() { + return stat.getAverageSpeed(); + } + + public long getRecentSpeed() { + return stat.getRecentSpeed(); + } + + public long getFinished() { + return stat.m_current; + } + + public double getPercentage() { + return stat.getPercentage(); + } +} diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/DownloadStatus.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/DownloadStatus.java index de0597da7..ddcccb7ba 100644 --- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/DownloadStatus.java +++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/DownloadStatus.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 IBM Corporation and others. + * Copyright (c) 2008, 2012 IBM Corporation 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 @@ -74,4 +74,19 @@ public class DownloadStatus extends Status { public long getLastModified() { return lastModified; } + + @Override + public String toString() { + StringBuffer sb = new StringBuffer(super.toString()); + sb.append(' '); + sb.append("LastModified="); //$NON-NLS-1$ + sb.append(getLastModified()); + sb.append(' '); + sb.append("FileSize="); //$NON-NLS-1$ + sb.append(getFileSize() == UNKNOWN_SIZE ? "Unknown size" : getFileSize()); //$NON-NLS-1$ + sb.append(' '); + sb.append("Download rate="); //$NON-NLS-1$ + sb.append(getTransferRate() == UNKNOWN_RATE ? "Unknown rate" : getTransferRate()); //$NON-NLS-1$ + return sb.toString(); + } } diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/ProgressStatistics.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/ProgressStatistics.java index 6169fb36d..dd8c89a89 100644 --- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/ProgressStatistics.java +++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/ProgressStatistics.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2011 Cloudsmith Inc. + * Copyright (c) 2006, 2012 Cloudsmith 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 @@ -16,6 +16,9 @@ import java.net.URI; import java.text.NumberFormat; import java.util.SortedMap; import java.util.TreeMap; +import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper; +import org.eclipse.equinox.internal.provisional.p2.core.eventbus.IProvisioningEventBus; +import org.eclipse.equinox.p2.core.IProvisioningAgent; import org.eclipse.osgi.util.NLS; /** @@ -30,6 +33,8 @@ public class ProgressStatistics { private static final int SPEED_RESOLUTION = 1000; + private static IProvisioningAgent agent = null; + private static String convert(long amount) { NumberFormat fmt = NumberFormat.getInstance(); if (amount < 1024) @@ -42,13 +47,27 @@ public class ProgressStatistics { return fmt.format(((double) amount) / (1024 * 1024)) + "MB"; //$NON-NLS-1$ } - private final String m_fileName; + public static void setProvisioningAgent(IProvisioningAgent agent) { + ProgressStatistics.agent = agent; + } + + private void publishEvent(DownloadProgressEvent event) { + if (agent == null) { + agent = ServiceHelper.getService(Activator.getContext(), IProvisioningAgent.class); + } + IProvisioningEventBus eventBus = (IProvisioningEventBus) agent.getService(IProvisioningEventBus.SERVICE_NAME); + if (eventBus != null) { + eventBus.publishEvent(event); + } + } + + final String m_fileName; private final long m_total; private final long m_startTime; - private long m_current; + long m_current; private long m_lastReportTime; @@ -58,7 +77,7 @@ public class ProgressStatistics { private long m_recentSpeedMapKey; - private URI m_uri; + URI m_uri; public ProgressStatistics(URI uri, String fileName, long total) { m_startTime = System.currentTimeMillis(); @@ -125,6 +144,11 @@ public class ProgressStatistics { } public synchronized String report() { + publishEvent(new DownloadProgressEvent(this)); + return createReportString(); + } + + private String createReportString() { String uriString = m_uri.toString(); if (m_fileName != null && uriString.endsWith(m_fileName)) uriString = uriString.substring(0, uriString.lastIndexOf(m_fileName)); @@ -145,7 +169,7 @@ public class ProgressStatistics { } public String toString() { - return report(); + return createReportString(); } synchronized private void registerRecentSpeed(long key, long inc) { |