package com.ronakmanglani.watchlist.model;
import android.os.Parcel;
import android.os.Parcelable;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
public class MovieDetail implements Parcelable {
// Attributes
public String id;
public String imdbId;
public String title;
public String tagline;
public String releaseDate;
public String runtime;
public String overview;
public String voteAverage;
public String voteCount;
public String backdropImage;
public String posterImage;
public String video;
public ArrayList<Credit> cast;
public ArrayList<Credit> crew;
// Getters
public String getYear() {
String year = "";
if (releaseDate != null && !releaseDate.equals("null")) {
year = releaseDate.substring(0, 4);
}
return year;
}
// Constructors
public MovieDetail(String id, String imdbId, String title, String tagline, String releaseDate, String runtime,
String overview, String voteAverage, String voteCount, String backdropImage, String posterImage,
String video, ArrayList<Credit> cast, ArrayList<Credit> crew) {
this.id = id;
this.imdbId = imdbId;
this.title = title;
this.tagline = tagline;
this.releaseDate = releaseDate;
this.runtime = runtime;
this.overview = overview;
this.voteAverage = voteAverage;
this.voteCount = voteCount;
this.backdropImage = backdropImage;
this.posterImage = posterImage;
this.video = video;
this.cast = cast;
this.crew = crew;
}
public MovieDetail(Parcel in) {
this.id = in.readString();
this.imdbId = in.readString();
this.title = in.readString();
this.tagline = in.readString();
this.releaseDate = in.readString();
this.runtime = in.readString();
this.overview = in.readString();
this.voteAverage = in.readString();
this.voteCount = in.readString();
this.backdropImage = in.readString();
this.posterImage = in.readString();
this.video = in.readString();
in.readList(cast, Credit.class.getClassLoader());
in.readList(crew, Credit.class.getClassLoader());
}
// Parcelable Creator
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public MovieDetail createFromParcel(Parcel in) {
return new MovieDetail(in);
}
public MovieDetail[] newArray(int size) {
return new MovieDetail[size];
}
};
// Helper methods
public String getSubtitle() {
try {
boolean isReleaseDateNull = (releaseDate == null || releaseDate.equals("null"));
boolean isRuntimeNull = (runtime == null || runtime.equals("null") || runtime.equals("0"));
if (isReleaseDateNull && isRuntimeNull) {
return "";
} else if (isReleaseDateNull) {
return runtime + " mins";
} else if (isRuntimeNull) {
return getFormattedDate();
} else {
return getFormattedDate() + "\n" + runtime + " mins";
}
} catch (Exception ex) {
return "";
}
}
private String getFormattedDate() {
SimpleDateFormat oldFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = oldFormat.parse(releaseDate);
} catch (Exception ignored) { }
SimpleDateFormat newFormat = new SimpleDateFormat("dd MMMM yyyy");
return newFormat.format(date);
}
// Parcelling methods
@Override
public void writeToParcel(Parcel out, int i) {
out.writeString(id);
out.writeString(imdbId);
out.writeString(title);
out.writeString(tagline);
out.writeString(releaseDate);
out.writeString(runtime);
out.writeString(overview);
out.writeString(voteAverage);
out.writeString(voteCount);
out.writeString(backdropImage);
out.writeString(posterImage);
out.writeString(video);
out.writeList(cast);
out.writeList(crew);
}
@Override
public int describeContents() {
return 0;
}
}