package com.florianmski.tracktoid.data;
import com.florianmski.tracktoid.data.database.utils.CVUtils;
import com.uwetrottmann.trakt.v2.entities.BaseEntity;
import com.uwetrottmann.trakt.v2.entities.BaseIds;
import com.uwetrottmann.trakt.v2.entities.Episode;
import com.uwetrottmann.trakt.v2.entities.Images;
import com.uwetrottmann.trakt.v2.entities.Movie;
import com.uwetrottmann.trakt.v2.entities.Season;
import com.uwetrottmann.trakt.v2.entities.Show;
import com.uwetrottmann.trakt.v2.enums.Rating;
import org.joda.time.DateTime;
public class TraktBase
{
// item content
public DateTime firstAired;
public String homepage;
public Images images;
public String overview;
public Integer runtime;
public String title;
public DateTime updatedAt;
// item user data
public boolean watched;
public DateTime watchedAt;
public boolean collected;
public DateTime collectedAt;
public boolean watchlisted;
public DateTime watchlistedAt;
public Rating rating;
public DateTime ratedAt;
public Integer plays;
// item ratings
public Double publicRating;
public Integer votes;
// item ids
public String imdb;
public String slug;
public Integer trakt;
public Integer tmdb;
public Integer tvdb;
public Integer tvrage;
private TraktBase(BaseEntity traktItem, BaseIds ids)
{
this.images = traktItem.images;
this.title = traktItem.title;
this.updatedAt = traktItem.updated_at;
this.imdb = ids.imdb;
this.tmdb = ids.tmdb;
this.trakt = ids.trakt;
}
private void setTraktoidItem(TraktoidItem traktoidItem)
{
// it's not a local item so we don't have any syncinfos available
if(!traktoidItem.isLocal())
return;
// item user data
this.watched = traktoidItem.syncInfos.watched;
this.watchedAt = traktoidItem.syncInfos.lastWatchedAt;
this.collected = traktoidItem.syncInfos.collected;
this.collectedAt = traktoidItem.syncInfos.collectedAt;
this.watchlisted = traktoidItem.syncInfos.watchlisted;
this.watchlistedAt = traktoidItem.syncInfos.watchlistedAt;
this.rating = traktoidItem.syncInfos.rating;
this.ratedAt = traktoidItem.syncInfos.ratedAt;
this.plays = traktoidItem.syncInfos.plays;
}
public static TraktBase fromShow(WShow wShow)
{
TraktBase traktBase = fromShow(wShow.getTraktItem());
traktBase.setTraktoidItem(wShow);
return traktBase;
}
public static TraktBase fromShow(Show show)
{
TraktBase traktBase = new TraktBase(show, show.ids);
traktBase.firstAired = show.first_aired;
traktBase.homepage = show.homepage;
traktBase.overview = show.overview;
traktBase.runtime = show.runtime;
traktBase.slug = show.ids.slug;
traktBase.tvdb = show.ids.tvdb;
traktBase.tvrage = show.ids.tvrage;
// item ratings
traktBase.publicRating = show.rating;
traktBase.votes = show.votes;
return traktBase;
}
public static TraktBase fromSeason(WSeason wSeason)
{
TraktBase traktBase = fromSeason(wSeason.getTraktItem());
traktBase.setTraktoidItem(wSeason);
return traktBase;
}
public static TraktBase fromSeason(CVUtils.SeasonCV.SeasonEntity seasonEntity)
{
TraktBase traktBase = new TraktBase(seasonEntity, new CVUtils.SeasonCV.SeasonEntityIds(seasonEntity.season.ids));
Season season = seasonEntity.season;
// traktBase.firstAired = season.first_aired;
// traktBase.homepage = season.homepage;
traktBase.overview = season.overview;
// traktBase.runtime = season.runtime;
traktBase.tvdb = season.ids.tvdb;
// item ratings
traktBase.publicRating = season.rating;
traktBase.votes = season.votes;
return traktBase;
}
public static TraktBase fromEpisode(WEpisode wEpisode)
{
TraktBase traktBase = fromEpisode(wEpisode.getTraktItem());
traktBase.setTraktoidItem(wEpisode);
return traktBase;
}
public static TraktBase fromEpisode(Episode episode)
{
TraktBase traktBase = new TraktBase(episode, episode.ids);
traktBase.firstAired = episode.first_aired;
// traktBase.homepage = episode.homepage;
traktBase.overview = episode.overview;
// traktBase.runtime = episode.runtime;
traktBase.tvdb = episode.ids.tvdb;
traktBase.tvrage = episode.ids.tvrage;
// item ratings
traktBase.publicRating = episode.rating;
traktBase.votes = episode.votes;
return traktBase;
}
public static TraktBase fromMovie(WMovie wMovie)
{
TraktBase traktBase = fromMovie(wMovie.getTraktItem());
traktBase.setTraktoidItem(wMovie);
return traktBase;
}
public static TraktBase fromMovie(Movie movie)
{
TraktBase traktBase = new TraktBase(movie, movie.ids);
traktBase.firstAired = movie.released;
traktBase.homepage = movie.homepage;
traktBase.overview = movie.overview;
traktBase.runtime = movie.runtime;
traktBase.slug = movie.ids.slug;
// item ratings
traktBase.publicRating = movie.rating;
traktBase.votes = movie.votes;
return traktBase;
}
}