package com.trywildcard.pair.model.media; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.net.URL; import java.util.Date; /** * Created by karthiksenthil on 10/5/14. */ @JsonDeserialize(builder = VideoBuilder.class) public class Video extends Media { //required fields private String title; private URL embeddedUrl; private Integer embeddedUrlWidth; private Integer embeddedUrlHeight; //optional fields private URL streamUrl; private String streamContentType; private Date publicationDate; private String description; private URL posterImageUrl; private String creator; private String source; /** Needed for Jackson deserialization **/ private Video() { super(MediaType.VIDEO); } public Video(VideoBuilder builder) { super(MediaType.VIDEO); this.title = builder.title; this.embeddedUrl = builder.embeddedUrl; this.embeddedUrlHeight = builder.embeddedUrlHeight; this.embeddedUrlWidth = builder.embeddedUrlWidth; this.streamUrl = builder.streamUrl; this.streamContentType = builder.streamContentType; this.publicationDate = builder.publicationDate; this.description = builder.description; this.posterImageUrl = builder.posterImageUrl; this.creator = builder.creator; this.source = builder.source; } public MediaType getType() { return type; } public String getSource() { return source; } public String getCreator() { return creator; } public URL getPosterImageUrl() { return posterImageUrl; } public String getDescription() { return description; } public Date getPublicationDate() { return publicationDate; } public URL getStreamUrl() { return streamUrl; } public Integer getEmbeddedUrlHeight() { return embeddedUrlHeight; } public Integer getEmbeddedUrlWidth() { return embeddedUrlWidth; } public URL getEmbeddedUrl() { return embeddedUrl; } public String getTitle() { return title; } public String getStreamContentType() { return streamContentType; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Video video = (Video) o; if (creator != null ? !creator.equals(video.creator) : video.creator != null) return false; if (description != null ? !description.equals(video.description) : video.description != null) return false; if (embeddedUrl != null ? !embeddedUrl.equals(video.embeddedUrl) : video.embeddedUrl != null) return false; if (embeddedUrlHeight != null ? !embeddedUrlHeight.equals(video.embeddedUrlHeight) : video.embeddedUrlHeight != null) return false; if (embeddedUrlWidth != null ? !embeddedUrlWidth.equals(video.embeddedUrlWidth) : video.embeddedUrlWidth != null) return false; if (posterImageUrl != null ? !posterImageUrl.equals(video.posterImageUrl) : video.posterImageUrl != null) return false; if (publicationDate != null ? !publicationDate.equals(video.publicationDate) : video.publicationDate != null) return false; if (source != null ? !source.equals(video.source) : video.source != null) return false; if (streamContentType != null ? !streamContentType.equals(video.streamContentType) : video.streamContentType != null) return false; if (streamUrl != null ? !streamUrl.equals(video.streamUrl) : video.streamUrl != null) return false; if (title != null ? !title.equals(video.title) : video.title != null) return false; return true; } @Override public int hashCode() { int result = title != null ? title.hashCode() : 0; result = 31 * result + (embeddedUrl != null ? embeddedUrl.hashCode() : 0); result = 31 * result + (embeddedUrlWidth != null ? embeddedUrlWidth.hashCode() : 0); result = 31 * result + (embeddedUrlHeight != null ? embeddedUrlHeight.hashCode() : 0); result = 31 * result + (streamUrl != null ? streamUrl.hashCode() : 0); result = 31 * result + (streamContentType != null ? streamContentType.hashCode() : 0); result = 31 * result + (publicationDate != null ? publicationDate.hashCode() : 0); result = 31 * result + (description != null ? description.hashCode() : 0); result = 31 * result + (posterImageUrl != null ? posterImageUrl.hashCode() : 0); result = 31 * result + (creator != null ? creator.hashCode() : 0); result = 31 * result + (source != null ? source.hashCode() : 0); return result; } }