Trim details to allow incomplete parts in HTML
[gofetch.git] / src / be / nikiroo / gofetch / data / Story.java
CommitLineData
73785268
NR
1package be.nikiroo.gofetch.data;
2
3import java.net.URL;
5c056aad 4import java.util.List;
73785268
NR
5
6import be.nikiroo.gofetch.support.BasicSupport;
7import be.nikiroo.gofetch.support.BasicSupport.Type;
8
9/**
10 * A news story.
11 *
12 * @author niki
13 */
14public class Story {
15 private Type type;
16 private String id;
17 private String title;
b34d1f35
NR
18 private String author;
19 private String date;
20 private String category;
73785268
NR
21 private String details;
22 private String urlInternal;
23 private String urlExternal;
24 private String content;
25
5c056aad
NR
26 private String fullContent;
27 private List<Comment> comments;
28
73785268
NR
29 /**
30 * Create a news story.
31 *
32 * @param type
33 * the source {@link Type}
34 * @param id
35 * the news ID
36 * @param title
37 * the news title
b34d1f35
NR
38 * @param author
39 * the author name for the details
40 * @param date
41 * the post date for the details
42 * @param category
43 * the category for the details
73785268 44 * @param details
b34d1f35
NR
45 * some details to add to the title (author, date and category
46 * will be added in the getter if available)
73785268
NR
47 * @param urlInternal
48 * the {@link URL} to get this news on the associated news site
49 * @param urlExternal
50 * an external {@link URL} that serve as the news' source, if any
51 * @param content
52 * the story content
53 */
b34d1f35
NR
54 public Story(Type type, String id, String title, String author,
55 String date, String category, String details, String urlInternal,
56 String urlExternal, String content) {
73785268
NR
57 this.type = type;
58 this.id = id;
59 this.title = title;
b34d1f35
NR
60 this.author = author;
61 this.date = date;
62 this.category = category;
73785268
NR
63 this.details = details;
64 this.urlInternal = urlInternal;
65 this.urlExternal = urlExternal;
66 this.content = content;
5c056aad
NR
67
68 // Defaults fullContent to content
69 this.fullContent = content;
73785268
NR
70 }
71
72 public String getSelector() {
73 return BasicSupport.getSelector(type) + id;
74 }
75
76 /**
77 * @return the id
78 */
79 public String getId() {
80 return id;
81 }
82
83 /**
84 * @return the title
85 */
86 public String getTitle() {
87 return title;
88 }
89
90 /**
91 * @return the details
92 */
93 public String getDetails() {
b34d1f35
NR
94 String details = "";
95
96 if (category != null && !category.trim().isEmpty())
97 details += "[" + category + "] ";
98 if (date != null && !date.trim().isEmpty())
99 details += date + " ";
100 if (author != null && !author.trim().isEmpty())
101 details += "(" + this.author + ") ";
102 if (this.details != null && !this.details.trim().isEmpty())
103 details += "\n" + this.details;
104
6a4d1416 105 return details.trim();
73785268
NR
106 }
107
108 /**
109 * @return the url
110 */
111 public String getUrlInternal() {
112 return urlInternal;
113 }
114
115 /**
116 * @return the urlExternal
117 */
118 public String getUrlExternal() {
119 return urlExternal;
120 }
121
122 /**
123 * @return the body
124 */
125 public String getContent() {
126 return content;
127 }
5c056aad
NR
128
129 /**
130 * @return the fullContent
131 */
132 public String getFullContent() {
133 return fullContent;
134 }
135
136 /**
137 * @param fullContent
138 * the fullContent to set
139 */
140 public void setFullContent(String fullContent) {
141 this.fullContent = fullContent;
142 }
143
144 /**
145 * @return the comments
146 */
147 public List<Comment> getComments() {
148 return comments;
149 }
150
151 /**
152 * @param comments
153 * the comments to set
154 */
155 public void setComments(List<Comment> comments) {
156 this.comments = comments;
157 }
72f39832
NR
158
159 /**
160 * Find a comment or sub-comment by its id.
161 *
162 * @param id
163 * the id to look for F
164 * @return this if it has the given id, or a child of this if the child have
165 * the given id, or NULL if not
166 */
167 public Comment getCommentById(String id) {
168 if (id != null && comments != null) {
169 for (Comment comment : comments) {
170 Comment found = comment.getById(id);
171 if (found != null) {
172 return found;
173 }
174 }
175 }
176
177 return null;
178 }
73785268 179}