Commit | Line | Data |
---|---|---|
08fe2e33 NR |
1 | package be.nikiroo.fanfix.data; |
2 | ||
3 | import java.awt.image.BufferedImage; | |
301791d3 | 4 | import java.util.ArrayList; |
08fe2e33 NR |
5 | import java.util.List; |
6 | ||
7 | /** | |
8 | * The meta data associated to a {@link Story} object. | |
9 | * | |
10 | * @author niki | |
11 | */ | |
22848428 | 12 | public class MetaData implements Cloneable, Comparable<MetaData> { |
08fe2e33 NR |
13 | private String title; |
14 | private String author; | |
15 | private String date; | |
16 | private Chapter resume; | |
17 | private List<String> tags; | |
18 | private BufferedImage cover; | |
19 | private String subject; | |
20 | private String source; | |
2206ef66 | 21 | private String url; |
08fe2e33 NR |
22 | private String uuid; |
23 | private String luid; | |
24 | private String lang; | |
25 | private String publisher; | |
fe999aa4 | 26 | private String type; |
08fe2e33 | 27 | private boolean imageDocument; |
793f1071 NR |
28 | private long words; |
29 | private String creationDate; | |
a9eb3f46 | 30 | private boolean fakeCover; |
08fe2e33 NR |
31 | |
32 | /** | |
33 | * The title of the story. | |
34 | * | |
35 | * @return the title | |
36 | */ | |
37 | public String getTitle() { | |
38 | return title; | |
39 | } | |
40 | ||
41 | /** | |
42 | * The title of the story. | |
43 | * | |
44 | * @param title | |
45 | * the title to set | |
46 | */ | |
47 | public void setTitle(String title) { | |
48 | this.title = title; | |
49 | } | |
50 | ||
51 | /** | |
52 | * The author of the story. | |
53 | * | |
54 | * @return the author | |
55 | */ | |
56 | public String getAuthor() { | |
57 | return author; | |
58 | } | |
59 | ||
60 | /** | |
61 | * The author of the story. | |
62 | * | |
63 | * @param author | |
64 | * the author to set | |
65 | */ | |
66 | public void setAuthor(String author) { | |
67 | this.author = author; | |
68 | } | |
69 | ||
70 | /** | |
71 | * The story publication date. | |
72 | * | |
73 | * @return the date | |
74 | */ | |
75 | public String getDate() { | |
76 | return date; | |
77 | } | |
78 | ||
79 | /** | |
80 | * The story publication date. | |
81 | * | |
82 | * @param date | |
83 | * the date to set | |
84 | */ | |
85 | public void setDate(String date) { | |
86 | this.date = date; | |
87 | } | |
88 | ||
89 | /** | |
90 | * The tags associated with this story. | |
91 | * | |
92 | * @return the tags | |
93 | */ | |
94 | public List<String> getTags() { | |
95 | return tags; | |
96 | } | |
97 | ||
98 | /** | |
99 | * The tags associated with this story. | |
100 | * | |
101 | * @param tags | |
102 | * the tags to set | |
103 | */ | |
104 | public void setTags(List<String> tags) { | |
105 | this.tags = tags; | |
106 | } | |
107 | ||
108 | /** | |
109 | * The story resume (a.k.a. description). | |
110 | * | |
111 | * @return the resume | |
112 | */ | |
113 | public Chapter getResume() { | |
114 | return resume; | |
115 | } | |
116 | ||
117 | /** | |
118 | * The story resume (a.k.a. description). | |
119 | * | |
120 | * @param resume | |
121 | * the resume to set | |
122 | */ | |
123 | public void setResume(Chapter resume) { | |
124 | this.resume = resume; | |
125 | } | |
126 | ||
127 | /** | |
128 | * The cover image of the story if any (can be NULL). | |
129 | * | |
130 | * @return the cover | |
131 | */ | |
132 | public BufferedImage getCover() { | |
133 | return cover; | |
134 | } | |
135 | ||
136 | /** | |
137 | * The cover image of the story if any (can be NULL). | |
138 | * | |
139 | * @param cover | |
140 | * the cover to set | |
141 | */ | |
142 | public void setCover(BufferedImage cover) { | |
143 | this.cover = cover; | |
144 | } | |
145 | ||
146 | /** | |
147 | * The subject of the story (or instance, if it is a fanfiction, what is the | |
148 | * original work; if it is a technical text, what is the technical | |
149 | * subject...). | |
150 | * | |
151 | * @return the subject | |
152 | */ | |
153 | public String getSubject() { | |
154 | return subject; | |
155 | } | |
156 | ||
157 | /** | |
158 | * The subject of the story (for instance, if it is a fanfiction, what is | |
159 | * the original work; if it is a technical text, what is the technical | |
160 | * subject...). | |
161 | * | |
162 | * @param subject | |
163 | * the subject to set | |
164 | */ | |
165 | public void setSubject(String subject) { | |
166 | this.subject = subject; | |
167 | } | |
168 | ||
169 | /** | |
2206ef66 | 170 | * The source of this story (which online library it was downloaded from). |
08fe2e33 NR |
171 | * |
172 | * @return the source | |
173 | */ | |
174 | public String getSource() { | |
175 | return source; | |
176 | } | |
177 | ||
178 | /** | |
2206ef66 | 179 | * The source of this story (which online library it was downloaded from). |
08fe2e33 NR |
180 | * |
181 | * @param source | |
182 | * the source to set | |
183 | */ | |
184 | public void setSource(String source) { | |
185 | this.source = source; | |
186 | } | |
187 | ||
188 | /** | |
2206ef66 NR |
189 | * The original URL from which this {@link Story} was imported. |
190 | * | |
191 | * @return the url | |
192 | */ | |
193 | public String getUrl() { | |
194 | return url; | |
195 | } | |
196 | ||
197 | /** | |
198 | * The original URL from which this {@link Story} was imported. | |
199 | * | |
200 | * @param url | |
201 | * the new url to set | |
202 | */ | |
203 | public void setUrl(String url) { | |
204 | this.url = url; | |
205 | } | |
206 | ||
207 | /** | |
208 | * A unique value representing the story (it is often a URL). | |
08fe2e33 NR |
209 | * |
210 | * @return the uuid | |
211 | */ | |
212 | public String getUuid() { | |
213 | return uuid; | |
214 | } | |
215 | ||
216 | /** | |
2206ef66 | 217 | * A unique value representing the story (it is often a URL). |
08fe2e33 NR |
218 | * |
219 | * @param uuid | |
220 | * the uuid to set | |
221 | */ | |
222 | public void setUuid(String uuid) { | |
223 | this.uuid = uuid; | |
224 | } | |
225 | ||
226 | /** | |
227 | * A unique value representing the story in the local library. | |
228 | * | |
229 | * @return the luid | |
230 | */ | |
231 | public String getLuid() { | |
232 | return luid; | |
233 | } | |
234 | ||
235 | /** | |
236 | * A unique value representing the story in the local library. | |
237 | * | |
0efd25e3 | 238 | * @param luid |
08fe2e33 NR |
239 | * the luid to set |
240 | */ | |
241 | public void setLuid(String luid) { | |
242 | this.luid = luid; | |
243 | } | |
244 | ||
245 | /** | |
246 | * The 2-letter code language of this story. | |
247 | * | |
248 | * @return the lang | |
249 | */ | |
250 | public String getLang() { | |
251 | return lang; | |
252 | } | |
253 | ||
254 | /** | |
255 | * The 2-letter code language of this story. | |
256 | * | |
257 | * @param lang | |
258 | * the lang to set | |
259 | */ | |
260 | public void setLang(String lang) { | |
261 | this.lang = lang; | |
262 | } | |
263 | ||
264 | /** | |
265 | * The story publisher (other the same as the source). | |
266 | * | |
267 | * @return the publisher | |
268 | */ | |
269 | public String getPublisher() { | |
270 | return publisher; | |
271 | } | |
272 | ||
273 | /** | |
274 | * The story publisher (other the same as the source). | |
275 | * | |
276 | * @param publisher | |
277 | * the publisher to set | |
278 | */ | |
279 | public void setPublisher(String publisher) { | |
280 | this.publisher = publisher; | |
281 | } | |
282 | ||
fe999aa4 NR |
283 | /** |
284 | * The output type this {@link Story} is in. | |
285 | * | |
286 | * @return the type the type | |
287 | */ | |
288 | public String getType() { | |
289 | return type; | |
290 | } | |
291 | ||
292 | /** | |
293 | * The output type this {@link Story} is in. | |
294 | * | |
295 | * @param type | |
296 | * the new type to set | |
297 | */ | |
298 | public void setType(String type) { | |
299 | this.type = type; | |
300 | } | |
301 | ||
08fe2e33 NR |
302 | /** |
303 | * Document catering mostly to image files. | |
304 | * | |
305 | * @return the imageDocument state | |
306 | */ | |
307 | public boolean isImageDocument() { | |
308 | return imageDocument; | |
309 | } | |
310 | ||
311 | /** | |
312 | * Document catering mostly to image files. | |
313 | * | |
314 | * @param imageDocument | |
315 | * the imageDocument state to set | |
316 | */ | |
317 | public void setImageDocument(boolean imageDocument) { | |
318 | this.imageDocument = imageDocument; | |
319 | } | |
301791d3 | 320 | |
793f1071 NR |
321 | /** |
322 | * The number of words in the related {@link Story}. | |
323 | * | |
324 | * @return the number of words | |
325 | */ | |
326 | public long getWords() { | |
327 | return words; | |
328 | } | |
329 | ||
330 | /** | |
331 | * The number of words in the related {@link Story}. | |
332 | * | |
333 | * @param words | |
334 | * the number of words to set | |
335 | */ | |
336 | public void setWords(long words) { | |
337 | this.words = words; | |
338 | } | |
339 | ||
340 | /** | |
341 | * The (Fanfix) {@link Story} creation date. | |
342 | * | |
343 | * @return the creationDate | |
344 | */ | |
345 | public String getCreationDate() { | |
346 | return creationDate; | |
347 | } | |
348 | ||
349 | /** | |
350 | * The (Fanfix) {@link Story} creation date. | |
351 | * | |
352 | * @param creationDate | |
353 | * the creationDate to set | |
354 | */ | |
355 | public void setCreationDate(String creationDate) { | |
356 | this.creationDate = creationDate; | |
357 | } | |
358 | ||
a9eb3f46 NR |
359 | /** |
360 | * The cover in this {@link MetaData} object is "fake", in the sens that it | |
361 | * comes from the actual content images. | |
362 | * | |
363 | * @return TRUE for a fake cover | |
364 | */ | |
365 | public boolean isFakeCover() { | |
366 | return fakeCover; | |
367 | } | |
368 | ||
369 | /** | |
370 | * The cover in this {@link MetaData} object is "fake", in the sens that it | |
371 | * comes from the actual content images | |
372 | * | |
373 | * @param fakeCover | |
374 | * TRUE for a fake cover | |
375 | */ | |
376 | public void setFakeCover(boolean fakeCover) { | |
377 | this.fakeCover = fakeCover; | |
378 | } | |
379 | ||
211f7ddb | 380 | @Override |
22848428 NR |
381 | public int compareTo(MetaData o) { |
382 | String oUuid = o == null ? null : o.getUuid(); | |
383 | return getUuid().compareTo(oUuid); | |
384 | } | |
385 | ||
301791d3 NR |
386 | @Override |
387 | public MetaData clone() { | |
388 | MetaData meta = null; | |
389 | try { | |
390 | meta = (MetaData) super.clone(); | |
391 | } catch (CloneNotSupportedException e) { | |
392 | // Did the clones rebel? | |
393 | System.err.println(e); | |
394 | } | |
395 | ||
396 | if (tags != null) { | |
397 | meta.tags = new ArrayList<String>(); | |
398 | meta.tags.addAll(tags); | |
399 | } | |
400 | if (resume != null) { | |
401 | meta.resume = new Chapter(resume.getNumber(), resume.getName()); | |
402 | for (Paragraph para : resume) { | |
403 | meta.resume.getParagraphs().add(para); | |
404 | } | |
405 | } | |
406 | ||
407 | return meta; | |
408 | } | |
08fe2e33 | 409 | } |