/*
This file is part of Libresonic.
Libresonic is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Libresonic is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Libresonic. If not, see <http://www.gnu.org/licenses/>.
Copyright 2016 (C) Libresonic Authors
Based upon Subsonic, Copyright 2009 (C) Sindre Mehus
*/
package org.libresonic.player.domain;
import java.util.Date;
/**
* A Podcast episode belonging to a channel.
*
* @author Sindre Mehus
* @see PodcastChannel
*/
public class PodcastEpisode {
private Integer id;
private Integer mediaFileId;
private Integer channelId;
private String url;
private String path;
private String title;
private String description;
private Date publishDate;
private String duration;
private Long bytesTotal;
private Long bytesDownloaded;
private PodcastStatus status;
private String errorMessage;
public PodcastEpisode(Integer id, Integer channelId, String url, String path, String title,
String description, Date publishDate, String duration, Long length, Long bytesDownloaded,
PodcastStatus status, String errorMessage) {
this.id = id;
this.channelId = channelId;
this.url = url;
this.path = path;
this.title = title;
this.description = description;
this.publishDate = publishDate;
this.duration = duration;
this.bytesTotal = length;
this.bytesDownloaded = bytesDownloaded;
this.status = status;
this.errorMessage = errorMessage;
}
public Integer getId() {
return id;
}
public Integer getChannelId() {
return channelId;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Date getPublishDate() {
return publishDate;
}
public void setPublishDate(Date publishDate) {
this.publishDate = publishDate;
}
public String getDuration() {
return duration;
}
public void setDuration(String duration) {
this.duration = duration;
}
public Long getBytesTotal() {
return bytesTotal;
}
public void setBytesTotal(Long bytesTotal) {
this.bytesTotal = bytesTotal;
}
public Long getBytesDownloaded() {
return bytesDownloaded;
}
public Double getCompletionRate() {
if (bytesTotal == null || bytesTotal == 0) {
return null;
}
if (bytesDownloaded == null) {
return 0.0;
}
double d = bytesDownloaded;
double t = bytesTotal;
return d / t;
}
public void setBytesDownloaded(Long bytesDownloaded) {
this.bytesDownloaded = bytesDownloaded;
}
public PodcastStatus getStatus() {
return status;
}
public void setStatus(PodcastStatus status) {
this.status = status;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public Integer getMediaFileId() {
return mediaFileId;
}
public void setMediaFileId(Integer mediaFileId) {
this.mediaFileId = mediaFileId;
}
}