package io.github.xwz.sbs.api;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import io.github.xwz.base.api.EpisodeBaseModel;
import io.github.xwz.base.content.ContentManagerBase;
public class EpisodeModel extends EpisodeBaseModel {
private static final String TAG = "EpisodeModel";
private boolean fetchedRelated = false;
private boolean extras = false;
public static EpisodeModel create(SBSApi.Entry data) {
EpisodeModel ep = new EpisodeModel();
ep.set(data);
return ep;
}
private void set(SBSApi.Entry data) {
setSeriesTitle(data.series);
setHref(data.id);
setChannel(data.getChannel());
setThumbnail(data.getThumbnail());
setEpisodeHouseNumber(data.guid);
setTitle(data.title);
setDuration(data.getDuration());
setRating(data.getRating());
setIsFilm(data.isFilm());
setCover(data.getCover());
setCategories(data.getCategories());
setDescription(data.synopsis);
setExpiry(data.expiry);
setPubDate(data.pubDate);
}
public void setHasFetchedRelated(boolean fetched) {
fetchedRelated = fetched;
}
public void setHasExtra(boolean extras) {
this.extras = extras;
}
public boolean hasExtras() {
return extras;
}
public boolean hasOtherEpisodes() {
return fetchedRelated || hasOther(ContentManagerBase.MORE_LIKE_THIS);
}
@Override
public Map<String, List<EpisodeBaseModel>> getOtherEpisodes() {
LinkedHashMap<String, List<EpisodeBaseModel>> all = new LinkedHashMap<>();
for (Map.Entry<String, List<EpisodeBaseModel>> more : others().entrySet()) {
List<EpisodeBaseModel> episodes = new ArrayList<>(more.getValue());
if (ContentManagerBase.OTHER_EPISODES.equals(more.getKey())) {
Collections.sort(episodes, compareTitle());
}
all.put(more.getKey(), episodes);
}
return all;
}
}