package com.bdc.ociney.modele.Movie;
import com.google.gson.annotations.Expose;
import com.bdc.ociney.modele.Feature;
import com.bdc.ociney.modele.Link;
import com.bdc.ociney.modele.Media;
import com.bdc.ociney.modele.ModelObject;
import com.bdc.ociney.modele.News;
import com.bdc.ociney.modele.Person.CastMember;
import com.bdc.ociney.modele.Person.CastingShort;
import com.bdc.ociney.modele.Release;
import com.bdc.ociney.modele.Statistics;
import com.bdc.ociney.modele.Theater.Horaires;
import com.bdc.ociney.modele.Trivium;
import java.util.ArrayList;
import java.util.List;
public class Movie implements Comparable {
List<Horaires> horaires = new ArrayList<Horaires>();
List<Media> bandesAnnonces = new ArrayList<Media>();
String duree = null;
String genres = null;
@Expose
private Integer code;
@Expose
private String originalTitle;
@Expose
private MovieType movieType;
@Expose
private String title;
@Expose
private Integer productionYear;
@Expose
private List<ModelObject> nationality = new ArrayList<ModelObject>();
@Expose
private List<ModelObject> genre = new ArrayList<ModelObject>();
@Expose
private Release release;
@Expose
private ModelObject color;
@Expose
private List<ModelObject> language = new ArrayList<ModelObject>();
@Expose
private CastingShort castingShort;
@Expose
private Trailer trailer;
@Expose
private String trailerEmbed;
@Expose
private List<Link> link = new ArrayList<Link>();
@Expose
private Statistics statistics;
@Expose
private String synopsis;
@Expose
private String synopsisShort;
@Expose
private String keywords;
@Expose
private Integer runtime;
@Expose
private Poster poster;
@Expose
private List<CastMember> castMember = new ArrayList<CastMember>();
@Expose
private Integer hasBluRay;
@Expose
private Integer hasDVD;
@Expose
private Integer hasShowtime;
@Expose
private String dvdReleaseDate;
@Expose
private String bluRayReleaseDate;
@Expose
private List<News> news = new ArrayList<News>();
@Expose
private List<Feature> feature = new ArrayList<Feature>();
@Expose
private List<Trivium> trivia = new ArrayList<Trivium>();
@Expose
private List<HelpfulPositiveReview> helpfulPositiveReview = new ArrayList<HelpfulPositiveReview>();
@Expose
private List<HelpfulNegativeReview> helpfulNegativeReview = new ArrayList<HelpfulNegativeReview>();
@Expose
private DefaultMedia defaultMedia;
@Expose
private List<Media> media = new ArrayList<Media>();
/**
* Retourne les horraires, rangés selon la façon suivante :
* Les horraires sont rangés par
*/
public List<Horaires> getHoraires(String date) {
List<Horaires> hs = new ArrayList<Horaires>();
for (Horaires h : horaires)
if (h.getDate().equals(date))
hs.add(h);
return hs;
}
public boolean sameTitleAndOrignlalTitle() {
if (title != null)
return title.equals(originalTitle);
else
return false;
}
public String getDuree() {
if (duree == null) {
if (getRuntime() != null) {
int heures = (int) (getRuntime() / 3600);
int minutes = (getRuntime() / 60 - heures * 60);
duree = heures + "h";
if (minutes < 10)
duree += "0";
duree += minutes + "min";
} else
duree = "";
}
return duree;
}
public void setDuree(String duree) {
this.duree = duree;
}
public String getGenres() {
if (genres == null) {
StringBuffer sb = new StringBuffer();
int size = genre.size();
if (size > 3) //que les 3 premiers
size = 3;
for (int i = 0; i < size; ++i) {
sb.append(genre.get(i).get$());
if (i < size - 1)
sb.append(" / ");
}
this.genres = sb.toString();
}
return genres;
}
public void setGenres(String genres) {
this.genres = genres;
}
public String getUrlPoster(int hauteur) {
if (poster != null && poster.getHref() != null && poster.getHref().length() > 0)
return poster.getHref() + "/r_10000_" + hauteur;
else
return null;
}
@Override
public int compareTo(Object o) {
if (o instanceof Movie) {
Movie lui = (Movie) o;
Float maNote = (getUserRating() + getPressRating()) / 2;
Float saNote = (lui.getUserRating() + lui.getPressRating()) / 2;
return saNote.compareTo(maNote);
}
return 0;
}
public float getUserRating() {
float userRating = 0;
if (statistics != null && statistics.getUserRating() != null) {
userRating = statistics.getUserRating().floatValue();
}
return userRating;
}
public float getPressRating() {
float pressRating = 0;
if (statistics != null && statistics.getPressRating() != null) {
pressRating = statistics.getPressRating().floatValue();
}
return pressRating;
}
public String getUrlBandeAnnonce(int height) {
if (defaultMedia != null
&& defaultMedia.getMedia() != null
&& defaultMedia.getMedia().getThumbnail() != null
&& defaultMedia.getMedia().getThumbnail().getHref(0) != null)
return defaultMedia.getMedia().getThumbnail().getHref(height);
return null;
}
public List<String> getUrlImages(int height) {
List<String> urlImages = new ArrayList<String>();
for (Media m : media) {
if (m.getThumbnail() != null && m.getThumbnail().getHref(height) != null)
urlImages.add(m.getThumbnail().getHref(height));
}
return urlImages;
}
public CastMember getRealisateur() {
for (CastMember m : castMember) {
try {
if (m.getActivity().get$().contains("Réalisateur"))
return m;
} catch (Exception e) {
}
}
return null;
}
public boolean is2D() {
return true;
}
public boolean is3D() {
if (getRelease() != null
&& getRelease().getReleaseVersion() != null
&& getRelease().getReleaseVersion().get$().contains("3D"))
return true;
return false;
}
public boolean isVF() {
return true;
}
public boolean isVO() {
if (getLanguage() != null) {
for (ModelObject lanquage : getLanguage()) {
if (!"Français".equals(lanquage.get$()))
return true;
}
}
return false;
}
@Override
public String toString() {
return "Movie{" +
"horaires=" + horaires +
", duree='" + duree + '\'' +
", genres='" + genres + '\'' +
", code=" + code +
", originalTitle='" + originalTitle + '\'' +
", movieType=" + movieType +
", title='" + title + '\'' +
", productionYear=" + productionYear +
", nationality=" + nationality +
", genre=" + genre +
", release=" + release +
", color=" + color +
", language=" + language +
", castingShort=" + castingShort +
", trailer=" + trailer +
", trailerEmbed='" + trailerEmbed + '\'' +
", link=" + link +
", statistics=" + statistics +
", synopsis='" + synopsis + '\'' +
", synopsisShort='" + synopsisShort + '\'' +
", keywords='" + keywords + '\'' +
", runtime=" + runtime +
", poster=" + poster +
", castMember=" + castMember +
", hasBluRay=" + hasBluRay +
", hasDVD=" + hasDVD +
", hasShowtime=" + hasShowtime +
", dvdReleaseDate='" + dvdReleaseDate + '\'' +
", bluRayReleaseDate='" + bluRayReleaseDate + '\'' +
", news=" + news +
", feature=" + feature +
", trivia=" + trivia +
", helpfulPositiveReview=" + helpfulPositiveReview +
", helpfulNegativeReview=" + helpfulNegativeReview +
", defaultMedia=" + defaultMedia +
", media=" + media +
'}';
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getOriginalTitle() {
return originalTitle;
}
public void setOriginalTitle(String originalTitle) {
this.originalTitle = originalTitle;
}
public String getTitle() {
if (title == null)
return getOriginalTitle();
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Integer getProductionYear() {
return productionYear;
}
public void setProductionYear(Integer productionYear) {
this.productionYear = productionYear;
}
public List<ModelObject> getNationality() {
return nationality;
}
public void setNationality(List<ModelObject> nationality) {
this.nationality = nationality;
}
public List<ModelObject> getGenre() {
return genre;
}
public void setGenre(List<ModelObject> genre) {
this.genre = genre;
}
public Release getRelease() {
return release;
}
public void setRelease(Release release) {
this.release = release;
}
public ModelObject getColor() {
return color;
}
public void setColor(ModelObject color) {
this.color = color;
}
public List<ModelObject> getLanguage() {
return language;
}
public void setLanguage(List<ModelObject> language) {
this.language = language;
}
public CastingShort getCastingShort() {
return castingShort;
}
public void setCastingShort(CastingShort castingShort) {
this.castingShort = castingShort;
}
public Trailer getTrailer() {
return trailer;
}
public void setTrailer(Trailer trailer) {
this.trailer = trailer;
}
public String getTrailerEmbed() {
return trailerEmbed;
}
public void setTrailerEmbed(String trailerEmbed) {
this.trailerEmbed = trailerEmbed;
}
public List<Link> getLink() {
return link;
}
public void setLink(List<Link> link) {
this.link = link;
}
public Statistics getStatistics() {
return statistics;
}
public void setStatistics(Statistics statistics) {
this.statistics = statistics;
}
public String getSynopsisShort() {
String s = synopsisShort;
if (s != null) {
s = s.replace("<br>", "\n").replace("<br/>", "\n").replaceAll("\\<[^>]*>", "");
}
return s;
}
public void setSynopsisShort(String synopsisShort) {
this.synopsisShort = synopsisShort;
}
public String getKeywords() {
return keywords;
}
public void setKeywords(String keywords) {
this.keywords = keywords;
}
public Integer getRuntime() {
return runtime;
}
public void setRuntime(Integer runtime) {
this.runtime = runtime;
}
public Poster getPoster() {
return poster;
}
public void setPoster(Poster poster) {
this.poster = poster;
}
public String getSynopsis() {
String s = synopsis;
if (s != null) {
s = s.replace("<br>", "\n").replace("<br/>", "\n").replaceAll("\\<[^>]*>", "");
}
return s;
}
public void setSynopsis(String synopsis) {
this.synopsis = synopsis;
}
public List<CastMember> getCastMember(int number) {
List<CastMember> cast = new ArrayList<CastMember>();
int i = 0;
for (CastMember m : castMember) {
if (!m.getActivity().get$().contains("Réalisateur")) {
cast.add(m);
i++;
}
if (i == number)
break;
}
return cast;
}
public List<CastMember> getAllCastMember() {
return castMember;
}
public Integer getHasBluRay() {
return hasBluRay;
}
public void setHasBluRay(Integer hasBluRay) {
this.hasBluRay = hasBluRay;
}
public Integer getHasDVD() {
return hasDVD;
}
public void setHasDVD(Integer hasDVD) {
this.hasDVD = hasDVD;
}
public Integer getHasShowtime() {
return hasShowtime;
}
public void setHasShowtime(Integer hasShowtime) {
this.hasShowtime = hasShowtime;
}
public String getDvdReleaseDate() {
return dvdReleaseDate;
}
public void setDvdReleaseDate(String dvdReleaseDate) {
this.dvdReleaseDate = dvdReleaseDate;
}
public String getBluRayReleaseDate() {
return bluRayReleaseDate;
}
public void setBluRayReleaseDate(String bluRayReleaseDate) {
this.bluRayReleaseDate = bluRayReleaseDate;
}
public List<News> getNews() {
return news;
}
public void setNews(List<News> news) {
this.news = news;
}
public List<Feature> getFeature() {
return feature;
}
public void setFeature(List<Feature> feature) {
this.feature = feature;
}
public List<Trivium> getTrivia() {
return trivia;
}
public void setTrivia(List<Trivium> trivia) {
this.trivia = trivia;
}
public List<HelpfulPositiveReview> getHelpfulPositiveReview() {
return helpfulPositiveReview;
}
public void setHelpfulPositiveReview(List<HelpfulPositiveReview> helpfulPositiveReview) {
this.helpfulPositiveReview = helpfulPositiveReview;
}
public List<HelpfulNegativeReview> getHelpfulNegativeReview() {
return helpfulNegativeReview;
}
public void setHelpfulNegativeReview(List<HelpfulNegativeReview> helpfulNegativeReview) {
this.helpfulNegativeReview = helpfulNegativeReview;
}
public MovieType getMovieType() {
return movieType;
}
public void setMovieType(MovieType movieType) {
this.movieType = movieType;
}
public List<Media> getBandesAnnonces() {
return bandesAnnonces;
}
public void setBandesAnnonces(List<Media> bandesAnnonces) {
this.bandesAnnonces = bandesAnnonces;
}
public List<CastMember> getCastMember() {
return castMember;
}
public void setCastMember(List<CastMember> castMember) {
this.castMember = castMember;
}
public List<Media> getMedia() {
return media;
}
public void setMedia(List<Media> media) {
this.media = media;
}
public DefaultMedia getDefaultMedia() {
return defaultMedia;
}
public void setDefaultMedia(DefaultMedia defaultMedia) {
this.defaultMedia = defaultMedia;
}
public List<Horaires> getHoraires() {
return horaires;
}
public void setHoraires(List<Horaires> horaires) {
this.horaires = horaires;
}
}