Trim details to allow incomplete parts in HTML
[gofetch.git] / src / be / nikiroo / gofetch / data / Story.java
index aa5aecc25501d9a90377d1006d6bb180a257c045..c0719d2d6b43bcd6812984fa7a59f8b2a8ea8306 100644 (file)
@@ -1,6 +1,7 @@
 package be.nikiroo.gofetch.data;
 
 import java.net.URL;
+import java.util.List;
 
 import be.nikiroo.gofetch.support.BasicSupport;
 import be.nikiroo.gofetch.support.BasicSupport.Type;
@@ -14,11 +15,17 @@ public class Story {
        private Type type;
        private String id;
        private String title;
+       private String author;
+       private String date;
+       private String category;
        private String details;
        private String urlInternal;
        private String urlExternal;
        private String content;
 
+       private String fullContent;
+       private List<Comment> comments;
+
        /**
         * Create a news story.
         * 
@@ -28,8 +35,15 @@ public class Story {
         *            the news ID
         * @param title
         *            the news title
+        * @param author
+        *            the author name for the details
+        * @param date
+        *            the post date for the details
+        * @param category
+        *            the category for the details
         * @param details
-        *            some details to add to the title
+        *            some details to add to the title (author, date and category
+        *            will be added in the getter if available)
         * @param urlInternal
         *            the {@link URL} to get this news on the associated news site
         * @param urlExternal
@@ -37,15 +51,22 @@ public class Story {
         * @param content
         *            the story content
         */
-       public Story(Type type, String id, String title, String details,
-                       String urlInternal, String urlExternal, String content) {
+       public Story(Type type, String id, String title, String author,
+                       String date, String category, String details, String urlInternal,
+                       String urlExternal, String content) {
                this.type = type;
                this.id = id;
                this.title = title;
+               this.author = author;
+               this.date = date;
+               this.category = category;
                this.details = details;
                this.urlInternal = urlInternal;
                this.urlExternal = urlExternal;
                this.content = content;
+
+               // Defaults fullContent to content
+               this.fullContent = content;
        }
 
        public String getSelector() {
@@ -70,7 +91,18 @@ public class Story {
         * @return the details
         */
        public String getDetails() {
-               return details;
+               String details = "";
+
+               if (category != null && !category.trim().isEmpty())
+                       details += "[" + category + "] ";
+               if (date != null && !date.trim().isEmpty())
+                       details += date + " ";
+               if (author != null && !author.trim().isEmpty())
+                       details += "(" + this.author + ") ";
+               if (this.details != null && !this.details.trim().isEmpty())
+                       details += "\n" + this.details;
+
+               return details.trim();
        }
 
        /**
@@ -93,4 +125,55 @@ public class Story {
        public String getContent() {
                return content;
        }
+
+       /**
+        * @return the fullContent
+        */
+       public String getFullContent() {
+               return fullContent;
+       }
+
+       /**
+        * @param fullContent
+        *            the fullContent to set
+        */
+       public void setFullContent(String fullContent) {
+               this.fullContent = fullContent;
+       }
+
+       /**
+        * @return the comments
+        */
+       public List<Comment> getComments() {
+               return comments;
+       }
+
+       /**
+        * @param comments
+        *            the comments to set
+        */
+       public void setComments(List<Comment> comments) {
+               this.comments = comments;
+       }
+
+       /**
+        * Find a comment or sub-comment by its id.
+        * 
+        * @param id
+        *            the id to look for F
+        * @return this if it has the given id, or a child of this if the child have
+        *         the given id, or NULL if not
+        */
+       public Comment getCommentById(String id) {
+               if (id != null && comments != null) {
+                       for (Comment comment : comments) {
+                               Comment found = comment.getById(id);
+                               if (found != null) {
+                                       return found;
+                               }
+                       }
+               }
+
+               return null;
+       }
 }
\ No newline at end of file