doc
[nikiroo-utils.git] / data / Story.java
1 package be.nikiroo.fanfix.data;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6
7 /**
8 * The main data class, where the whole story resides.
9 *
10 * @author niki
11 */
12 public class Story implements Iterable<Chapter> {
13 private MetaData meta;
14 private List<Chapter> chapters = new ArrayList<Chapter>();
15 private List<Chapter> empty = new ArrayList<Chapter>();
16
17 /**
18 * The metadata about this {@link Story}.
19 *
20 * @return the meta
21 */
22 public MetaData getMeta() {
23 return meta;
24 }
25
26 /**
27 * The metadata about this {@link Story}.
28 *
29 * @param meta
30 * the meta to set
31 */
32 public void setMeta(MetaData meta) {
33 this.meta = meta;
34 }
35
36 /**
37 * The chapters of the story.
38 *
39 * @return the chapters
40 */
41 public List<Chapter> getChapters() {
42 return chapters;
43 }
44
45 /**
46 * The chapters of the story.
47 *
48 * @param chapters
49 * the chapters to set
50 */
51 public void setChapters(List<Chapter> chapters) {
52 this.chapters = chapters;
53 }
54
55 /**
56 * Get an iterator on the {@link Chapter}s.
57 */
58 @Override
59 public Iterator<Chapter> iterator() {
60 return chapters == null ? empty.iterator() : chapters.iterator();
61 }
62
63 /**
64 * Display a DEBUG {@link String} representation of this object.
65 * <p>
66 * This is not efficient, nor intended to be.
67 */
68 @Override
69 public String toString() {
70 String title = "";
71 if (meta != null && meta.getTitle() != null) {
72 title = meta.getTitle();
73 }
74
75 String tags = "";
76 if (meta != null && meta.getTags() != null) {
77 for (String tag : meta.getTags()) {
78 if (!tags.isEmpty()) {
79 tags += ", ";
80 }
81 tags += tag;
82 }
83 }
84
85 String resume = "";
86 if (meta != null && meta.getResume() != null) {
87 for (Paragraph para : meta.getResume()) {
88 resume += "\n\t";
89 resume += para.toString().substring(0,
90 Math.min(para.toString().length(), 120));
91 }
92 resume += "\n";
93 }
94
95 String cover = (meta == null || meta.getCover() == null) ? "none"
96 : meta.getCover().getWidth() + "x"
97 + meta.getCover().getHeight();
98 return String.format(
99 "Title: [%s]\nAuthor: [%s]\nDate: [%s]\nTags: [%s]\n"
100 + "Resume: [%s]\nCover: [%s]", title, meta == null ? ""
101 : meta.getAuthor(), meta == null ? "" : meta.getDate(),
102 tags, resume, cover);
103 }
104 }