1 package com.moiseum.wolnelektury.connection.models;
3 import com.google.gson.annotations.SerializedName;
4 import com.moiseum.wolnelektury.utils.StringUtils;
6 import org.parceler.Parcel;
8 import java.util.ArrayList;
12 * Created by piotrostrowski on 17.11.2017.
15 @Parcel(Parcel.Serialization.BEAN)
16 public class BookDetailsModel {
18 private static final String HREF_BASE = "http://wolnelektury.pl/api/books/";
19 private static final String MEDIA_TYPE_MP3 = "mp3";
21 private List<CategoryModel> genres;
22 private List<CategoryModel> kinds;
23 private BookModel parent;
26 private List<MediaModel> media;
27 @SerializedName("simple_cover")
29 private List<CategoryModel> epochs;
30 private List<CategoryModel> authors;
33 @SerializedName("simple_thumb")
34 private String coverThumb;
35 @SerializedName("fragment_data")
36 private FragmentModel fragment;
37 @SerializedName("audio_length")
38 private String audioLength;
39 private ReadingStateModel.ReadingState state;
40 private Boolean favouriteState;
41 @SerializedName("cover_color")
42 private String coverColor;
45 public BookDetailsModel() {
48 public List<CategoryModel> getGenres() {
52 public void setGenres(List<CategoryModel> genres) {
56 public List<CategoryModel> getKinds() {
60 public void setKinds(List<CategoryModel> kinds) {
64 public BookModel getParent() {
68 public void setParent(BookModel parent) {
72 public String getTitle() {
76 public void setTitle(String title) {
80 public String getUrl() {
84 public void setUrl(String url) {
88 public List<MediaModel> getMedia() {
92 public void setMedia(List<MediaModel> media) {
96 public String getCover() {
100 public void setCover(String cover) {
104 public List<CategoryModel> getEpochs() {
108 public void setEpochs(List<CategoryModel> epochs) {
109 this.epochs = epochs;
112 public List<CategoryModel> getAuthors() {
116 public void setAuthors(List<CategoryModel> authors) {
117 this.authors = authors;
120 public String getPdf() {
124 public void setPdf(String pdf) {
128 public String getEpub() {
132 public void setEpub(String epub) {
136 public String getCoverThumb() {
140 public void setCoverThumb(String coverThumb) {
141 this.coverThumb = coverThumb;
144 public String getCoverColor() {
148 public void setCoverColor(String coverColor) {
149 this.coverColor = coverColor;
152 public FragmentModel getFragment() {
156 public void setFragment(FragmentModel fragment) {
157 this.fragment = fragment;
160 public String getAudioLength() {
164 public void setAudioLength(String audioLength) {
165 this.audioLength = audioLength;
168 public boolean hasAudio() {
169 return media != null && media.size() > 0;
172 public ReadingStateModel.ReadingState getState() {
176 public void setState(ReadingStateModel.ReadingState state) {
180 public String getSlug() {
184 public void setSlug(String slug) {
188 public BookModel getStorageModel(String slug) {
189 BookModel model = new BookModel();
190 model.setAuthor(StringUtils.joinCategory(getAuthors(), ", "));
191 model.setCover(getCover());
192 model.setCoverColor(getCoverColor());
193 model.setCoverThumb(getCoverThumb());
194 model.setEpoch(StringUtils.joinCategory(getEpochs(), ", "));
195 model.setGenre(StringUtils.joinCategory(getGenres(), ", "));
196 model.setKind(StringUtils.joinCategory(getKinds(), ", "));
197 model.setHref(HREF_BASE + slug + "/");
198 model.setTitle(getTitle());
200 model.setUrl(getUrl());
201 model.setHasAudio(hasAudio());
205 public ArrayList<MediaModel> getAudiobookMediaModels() {
206 ArrayList<MediaModel> mediaModels = new ArrayList<>();
207 for (MediaModel mediaFile : getMedia()) {
208 if (MEDIA_TYPE_MP3.equals(mediaFile.getType())) {
209 mediaModels.add(mediaFile);
215 public ArrayList<String> getAudiobookFilesUrls() {
216 ArrayList<String> urls = new ArrayList<>();
217 for (MediaModel mediaFile : getMedia()) {
218 if (MEDIA_TYPE_MP3.equals(mediaFile.getType())) {
219 urls.add(mediaFile.getUrl());
225 public boolean getFavouriteState() {
226 return favouriteState;
229 public void setFavouriteState(boolean favouriteState) {
230 this.favouriteState = favouriteState;
233 public String getFavouriteString(boolean favouriteState) {
234 return favouriteState ? "like" : "unlike";