Added Android code
[wl-app.git] / Android / app / src / main / java / com / moiseum / wolnelektury / connection / models / BookDetailsModel.java
1 package com.moiseum.wolnelektury.connection.models;
2
3 import com.google.gson.annotations.SerializedName;
4 import com.moiseum.wolnelektury.utils.StringUtils;
5
6 import org.parceler.Parcel;
7
8 import java.util.ArrayList;
9 import java.util.List;
10
11 /**
12  * Created by piotrostrowski on 17.11.2017.
13  */
14
15 @Parcel(Parcel.Serialization.BEAN)
16 public class BookDetailsModel {
17
18         private static final String HREF_BASE = "http://wolnelektury.pl/api/books/";
19         private static final String MEDIA_TYPE_MP3 = "mp3";
20
21         private List<CategoryModel> genres;
22         private List<CategoryModel> kinds;
23         private BookModel parent;
24         private String title;
25         private String url;
26         private List<MediaModel> media;
27         @SerializedName("simple_cover")
28         private String cover;
29         private List<CategoryModel> epochs;
30         private List<CategoryModel> authors;
31         private String pdf;
32         private String epub;
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;
43         private String slug;
44
45         public BookDetailsModel() {
46         }
47
48         public List<CategoryModel> getGenres() {
49                 return genres;
50         }
51
52         public void setGenres(List<CategoryModel> genres) {
53                 this.genres = genres;
54         }
55
56         public List<CategoryModel> getKinds() {
57                 return kinds;
58         }
59
60         public void setKinds(List<CategoryModel> kinds) {
61                 this.kinds = kinds;
62         }
63
64         public BookModel getParent() {
65                 return parent;
66         }
67
68         public void setParent(BookModel parent) {
69                 this.parent = parent;
70         }
71
72         public String getTitle() {
73                 return title;
74         }
75
76         public void setTitle(String title) {
77                 this.title = title;
78         }
79
80         public String getUrl() {
81                 return url;
82         }
83
84         public void setUrl(String url) {
85                 this.url = url;
86         }
87
88         public List<MediaModel> getMedia() {
89                 return media;
90         }
91
92         public void setMedia(List<MediaModel> media) {
93                 this.media = media;
94         }
95
96         public String getCover() {
97                 return cover;
98         }
99
100         public void setCover(String cover) {
101                 this.cover = cover;
102         }
103
104         public List<CategoryModel> getEpochs() {
105                 return epochs;
106         }
107
108         public void setEpochs(List<CategoryModel> epochs) {
109                 this.epochs = epochs;
110         }
111
112         public List<CategoryModel> getAuthors() {
113                 return authors;
114         }
115
116         public void setAuthors(List<CategoryModel> authors) {
117                 this.authors = authors;
118         }
119
120         public String getPdf() {
121                 return pdf;
122         }
123
124         public void setPdf(String pdf) {
125                 this.pdf = pdf;
126         }
127
128         public String getEpub() {
129                 return epub;
130         }
131
132         public void setEpub(String epub) {
133                 this.epub = epub;
134         }
135
136         public String getCoverThumb() {
137                 return coverThumb;
138         }
139
140         public void setCoverThumb(String coverThumb) {
141                 this.coverThumb = coverThumb;
142         }
143
144         public String getCoverColor() {
145                 return coverColor;
146         }
147
148         public void setCoverColor(String coverColor) {
149                 this.coverColor = coverColor;
150         }
151
152         public FragmentModel getFragment() {
153                 return fragment;
154         }
155
156         public void setFragment(FragmentModel fragment) {
157                 this.fragment = fragment;
158         }
159
160         public String getAudioLength() {
161                 return audioLength;
162         }
163
164         public void setAudioLength(String audioLength) {
165                 this.audioLength = audioLength;
166         }
167
168         public boolean hasAudio() {
169                 return media != null && media.size() > 0;
170         }
171
172         public ReadingStateModel.ReadingState getState() {
173                 return state;
174         }
175
176         public void setState(ReadingStateModel.ReadingState state) {
177                 this.state = state;
178         }
179
180         public String getSlug() {
181                 return slug;
182         }
183
184         public void setSlug(String slug) {
185                 this.slug = slug;
186         }
187
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());
199                 model.setSlug(slug);
200                 model.setUrl(getUrl());
201                 model.setHasAudio(hasAudio());
202                 return model;
203         }
204
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);
210                         }
211                 }
212                 return mediaModels;
213         }
214
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());
220                         }
221                 }
222                 return urls;
223         }
224
225         public boolean getFavouriteState() {
226                 return favouriteState;
227         }
228
229         public void setFavouriteState(boolean favouriteState) {
230                 this.favouriteState = favouriteState;
231         }
232
233         public String getFavouriteString(boolean favouriteState) {
234                 return favouriteState ? "like" : "unlike";
235         }
236 }
237