| /******************************************************************************* |
| * Copyright (c) 2009, Cloudsmith Inc. |
| * The code, documentation and other materials contained herein have been |
| * licensed under the Eclipse Public License - v 1.0 by the copyright holder |
| * listed above, as the Initial Contributor under such license. The text or |
| * such license is available at www.eclipse.org. |
| ******************************************************************************/ |
| package org.eclipse.equinox.internal.p2.repository; |
| |
| import java.util.Properties; |
| |
| /** |
| * Carries information about a file transfer. |
| * |
| */ |
| public class FileInfo { |
| public static final String PROPERTY_CONTENT_TYPE = "contentType"; //$NON-NLS-1$ |
| |
| public static final String PROPERTY_LAST_MODIFIED = "lastModified"; //$NON-NLS-1$ |
| |
| public static final String PROPERTY_NAME = "name"; //$NON-NLS-1$ |
| |
| public static final String PROPERTY_SIZE = "size"; //$NON-NLS-1$ |
| |
| public static final String PROPERTY_SPEED = "speed"; //$NON-NLS-1$ |
| |
| public static final long UNKNOWN_RATE = -1L; |
| |
| private String contentType; |
| |
| private long lastModified = 0L; |
| |
| private String name; |
| |
| private long size = -1L; |
| |
| private long averageSpeed = UNKNOWN_RATE; |
| |
| public FileInfo() { |
| contentType = ""; //$NON-NLS-1$ |
| name = ""; //$NON-NLS-1$ |
| } |
| |
| public FileInfo(FileInfo fileInfo) { |
| initFrom(fileInfo); |
| } |
| |
| /* |
| * (non java doc) |
| * properties based method for possible use with resumable download |
| */ |
| public FileInfo(Properties properties) { |
| name = properties.getProperty(PROPERTY_NAME); |
| contentType = properties.getProperty(PROPERTY_CONTENT_TYPE); |
| |
| String v = properties.getProperty(PROPERTY_LAST_MODIFIED); |
| if (v != null) |
| lastModified = Long.parseLong(v); |
| |
| v = properties.getProperty(PROPERTY_SIZE); |
| if (v != null) |
| size = Long.parseLong(v); |
| v = properties.getProperty(PROPERTY_SPEED); |
| if (v != null) |
| averageSpeed = Long.parseLong(v); |
| } |
| |
| /* |
| * (non java doc) |
| * properties based method for possible use with resumable download |
| */ |
| public void addProperties(Properties properties) { |
| if (contentType != null) |
| properties.setProperty(PROPERTY_CONTENT_TYPE, contentType); |
| if (lastModified != 0L) |
| properties.setProperty(PROPERTY_LAST_MODIFIED, Long.toString(lastModified)); |
| if (name != null) |
| properties.setProperty(PROPERTY_NAME, name); |
| if (size != -1L) |
| properties.setProperty(PROPERTY_SIZE, Long.toString(size)); |
| if (averageSpeed != UNKNOWN_RATE) |
| properties.setProperty(PROPERTY_SPEED, Long.toString(averageSpeed)); |
| |
| } |
| |
| public final String getContentType() { |
| return contentType; |
| } |
| |
| public long getLastModified() { |
| return lastModified; |
| } |
| |
| public final String getRemoteName() { |
| return name; |
| } |
| |
| public final long getSize() { |
| return size; |
| } |
| |
| public void initFrom(FileInfo info) { |
| setName(info.getRemoteName()); |
| setContentType(info.getContentType()); |
| setSize(info.getSize()); |
| setLastModified(info.getLastModified()); |
| } |
| |
| public void reset() { |
| name = null; |
| contentType = null; |
| size = -1; |
| lastModified = 0; |
| } |
| |
| public final void setContentType(String contentType) { |
| this.contentType = contentType; |
| } |
| |
| public void setLastModified(long timestamp) { |
| lastModified = timestamp; |
| } |
| |
| public final void setName(String name) { |
| this.name = name; |
| } |
| |
| public final void setSize(long size) { |
| this.size = size; |
| } |
| |
| /** |
| * Set the average transfer rate measured in bytes/second |
| * @param averageSpeed rate in bytes/second, or {@link #UNKNOWN_RATE} |
| */ |
| public void setAverageSpeed(long averageSpeed) { |
| this.averageSpeed = averageSpeed; |
| } |
| |
| /** |
| * Returns the average transfer rate measured in bytes/second. |
| * @return transfer rate in bytes/second or {@link #UNKNOWN_RATE} |
| */ |
| public long getAverageSpeed() { |
| return averageSpeed; |
| } |
| } |