package com.robonobo.core.api.model; import java.io.File; import com.robonobo.mina.external.buffer.PageBuffer; public class DownloadingTrack extends Track { public enum DownloadStatus { Paused, Downloading, Finished }; private PageBuffer pageBuf; private File file; private DownloadStatus downloadStatus; private int numSources; public DownloadingTrack(Stream stream, File file, DownloadStatus status) { super(stream); this.file = file; this.downloadStatus = status; // Set our playback status here, it might get overridden if(downloadStatus == DownloadStatus.Downloading) setPlaybackStatus(PlaybackStatus.Downloading); else if(downloadStatus == DownloadStatus.Paused) setPlaybackStatus(PlaybackStatus.Queued); } public DownloadingTrack(DownloadingTrack t) { super(t); file = t.file; downloadStatus = t.downloadStatus; pageBuf = t.pageBuf; numSources = t.numSources; } @Override public DownloadingTrack clone() { return new DownloadingTrack(this); } public long getBytesDownloaded() { if(pageBuf == null) return 0; return pageBuf.getBytesReceived(); } public File getFile() { return file; } public PageBuffer getPageBuf() { return pageBuf; } public void setPageBuf(PageBuffer pageBuf) { this.pageBuf = pageBuf; } public DownloadStatus getDownloadStatus() { return downloadStatus; } public void setDownloadStatus(DownloadStatus downloadStatus) { this.downloadStatus = downloadStatus; } public void setNumSources(int numSources) { this.numSources = numSources; transferStatus = new DownloadingTransferStatus(numSources); } public int getNumSources() { return numSources; } }