package org.limewire.core.api.upload; import java.beans.PropertyChangeListener; import java.io.File; import java.util.Collection; import java.util.List; import org.limewire.core.api.Category; import org.limewire.core.api.endpoint.RemoteHost; import org.limewire.core.api.library.PropertiableFile; import org.limewire.core.api.transfer.SourceInfo; /** * A single upload. */ public interface UploadItem extends PropertiableFile { public enum UploadItemType { GNUTELLA, BITTORRENT } public enum BrowseType {FRIEND, P2P, NONE} /** * Cancels the upload. */ public void cancel(); /** * @return the {@link UploadState} of the upload */ public UploadState getState(); /** * Returns the amount of data that this uploader and all previous * uploaders exchanging this file have uploaded. */ public long getTotalAmountUploaded(); /** * @return the name of the file being uploaded. */ public String getFileName(); /** * @return the length of the file being uploaded. */ public long getFileSize(); public void addPropertyChangeListener(PropertyChangeListener listener); public void removePropertyChangeListener(PropertyChangeListener listener); /** * @return the <code>Category</code> of the File being uploaded */ public Category getCategory(); /** * Returns the source of this Upload. */ public RemoteHost getRemoteHost(); /** * Returns a renderer name of the RemoteHost. */ public String getRenderName(); /** * Returns the current queue position if queued. */ public int getQueuePosition(); public long getRemainingUploadTime(); float getUploadSpeed(); /** * Returns a collection of completed files for this upload item. */ Collection<File> getCompleteFiles(); /** * Returns the file backing this upload item. */ public File getFile(); /** * Returns the type of this upload item. */ public UploadItemType getUploadItemType(); /** * Returns the number of connections we are currently uploading to. */ public int getNumUploadConnections(); /** * @return the {@link BrowseType} of the upload */ BrowseType getBrowseType(); /** * Returns the time the upload was added to the upload list. */ long getStartTime(); /** * Returns the seed ratio for torrent uploaders. Other uploaders will return -1 indicating the seed ratio is not supported. */ public float getSeedRatio(); /** * Returns true if the upload is finished. */ boolean isFinished(); /** * Returns true if the upload has started. */ boolean isStarted(); /** * Pauses the UploadeItem if possible. */ public void pause(); /** * Resumes the UploadItem if possible. */ public void resume(); /** * @return A list of details pertaining to the sources associated with the download. * * <p>NOTE: May include upload only sources. */ public List<SourceInfo> getTransferDetails(); }