/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.dlect.model;
import java.net.URI;
import java.util.Objects;
import javax.xml.bind.annotation.XmlElement;
import org.dlect.events.EventID;
import org.dlect.events.listenable.EventBuilder;
import org.dlect.model.helper.XmlListenable;
/**
*
* @author lee
*/
public class LectureDownload extends XmlListenable<LectureDownload> {
@XmlElement(name = "url")
private URI downloadURL;
@XmlElement(name = "extension")
private String downloadExtension;
@XmlElement(name = "downloaded")
private boolean downloaded;
@XmlElement(name = "enabled")
private boolean downloadEnabled;
public LectureDownload() {
}
public LectureDownload(URI downloadURL, String downloadExtension, boolean downloaded, boolean downloadEnabled) {
this.downloadURL = downloadURL;
this.downloadExtension = downloadExtension;
this.downloaded = downloaded;
this.downloadEnabled = downloadEnabled;
}
public URI getDownloadURL() {
return downloadURL;
}
public void setDownloadURL(URI downloadURL) {
EventBuilder<URI> evt = event(LectureDownloadEventID.DOWNLOAD_URL).before(this.downloadURL);
this.downloadURL = downloadURL;
evt.after(this.downloadURL).fire();
}
public String getDownloadExtension() {
return downloadExtension;
}
public void setDownloadExtension(String downloadExtension) {
EventBuilder<String> evt = event(LectureDownloadEventID.DOWNLOAD_EXTENSION).before(this.downloadExtension);
this.downloadExtension = downloadExtension;
evt.after(this.downloadExtension).fire();
}
public boolean isDownloaded() {
return downloaded;
}
public void setDownloaded(boolean downloaded) {
EventBuilder<Boolean> evt = event(LectureDownloadEventID.DOWNLOADED).before(this.downloaded);
this.downloaded = downloaded;
evt.after(this.downloaded).fire();
}
public boolean isDownloadEnabled() {
return downloadEnabled;
}
public void setDownloadEnabled(boolean downloadEnabled) {
EventBuilder<Boolean> evt = event(LectureDownloadEventID.DOWNLOAD_ENABLED).before(this.downloadEnabled);
this.downloadEnabled = downloadEnabled;
evt.after(this.downloadEnabled).fire();
}
@Override
public String toString() {
return "LectureDownload{" + "downloadURL=" + downloadURL + ", downloadExtension=" + downloadExtension + ", downloaded=" + downloaded + ", downloadEnabled=" + downloadEnabled + '}';
}
@Override
public int hashCode() {
int hash = 7;
hash = 97 * hash + Objects.hashCode(this.downloadURL);
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final LectureDownload other = (LectureDownload) obj;
if (!Objects.equals(this.downloadURL, other.downloadURL)) {
return false;
}
return true;
}
public static enum LectureDownloadEventID implements EventID {
DOWNLOAD_URL, DOWNLOAD_EXTENSION, DOWNLOADED, DOWNLOAD_ENABLED;
@Override
public Class<?> getAppliedClass() {
return LectureDownload.class;
}
@Override
public String getName() {
return name();
}
}
}