Fix download order and comments/content storing
[gofetch.git] / src / be / nikiroo / gofetch / output / Html.java
index ab7489b47dedf593f409139057be1a24b9d03a72..b0ef7e2e834698b66791fdbf6784ece99d935200 100644 (file)
@@ -1,19 +1,30 @@
 package be.nikiroo.gofetch.output;
 
-import java.util.List;
-
 import be.nikiroo.gofetch.data.Comment;
 import be.nikiroo.gofetch.data.Story;
 import be.nikiroo.gofetch.support.BasicSupport.Type;
 
 public class Html extends Output {
-       public Html(Type type) {
-               super(type);
+       public Html(Type type, String hostname, String preselector, int port) {
+               super(type, hostname, preselector, port);
        }
 
        @Override
        public String getIndexHeader() {
-               return "<h1>Hello world!</h1><br/>TODO\n";
+               String sel = preselector;
+               if (!sel.isEmpty()) {
+                       sel = "/1" + sel;
+               }
+
+               String gopherUrl = "gopher://" + hostname + sel + ":" + port;
+
+               return "<h1>News</h1>\n"//
+                               + "<p>You will find here a few pages full of news, mirroring <a href='"
+                               + gopherUrl + "'>"
+                               + gopherUrl
+                               + "</a>.</p>\n"//
+                               + "<p>They are simply scrapped from their associated webpage and updated a few times a day.</p>\n"//
+               ;
        }
 
        @Override
@@ -22,23 +33,33 @@ public class Html extends Output {
        }
 
        @Override
-       public String export(Story story) {
-               return appendHtml(new StringBuilder(), story, true).append("<hr/>\n")
-                               .toString();
+       public String exportHeader(Story story) {
+               StringBuilder builder = new StringBuilder();
+
+               builder.append("<div class='story-header'>\n");
+               appendHtml(builder, story, true);
+               builder.append("<hr/>\n");
+               builder.append("</div>\n");
+
+               return builder.toString();
        }
 
        @Override
-       public String export(Story story, List<Comment> comments) {
+       public String export(Story story) {
                StringBuilder builder = new StringBuilder();
-               appendHtml(builder, story, false);
 
-               // TODO: ext link and link
+               builder.append("<div class='story'>\n");
+               appendHtml(builder, story, false);
+               builder.append("<hr/>\n");
 
-               builder.append("<hr/>");
-               for (Comment comment : comments) {
-                       appendHtml(builder, comment, "  ");
+               if (story.getComments() != null) {
+                       for (Comment comment : story.getComments()) {
+                               appendHtml(builder, comment, "  ");
+                       }
                }
 
+               builder.append("</div>\n");
+
                return builder.toString();
        }
 
@@ -59,22 +80,36 @@ public class Html extends Output {
        }
 
        private StringBuilder appendHtml(StringBuilder builder, Story story,
-                       boolean links) {
-               // TODO
-               builder.append("<div class='story'>");
-               if (links) {
+                       boolean resume) {
+               if (resume) {
                        builder.append("        <h1><a href='" + story.getId() + ".html'>"
-                                       + story.getTitle() + "</a></h1>");
+                                       + story.getTitle() + "</a></h1>\n");
                } else {
-                       builder.append("        <h1>" + story.getTitle() + "</h1>");
+                       builder.append("        <h1>" + story.getTitle() + "</h1>\n");
                }
                builder.append("        <div class='details'>(" + story.getDetails()
-                               + ")</div>");
-               builder.append("        <br/>");
-               builder.append("        <div class='content'>");
-               builder.append("                " + story.getContent());
-               builder.append("        </div>");
-               builder.append("</div>");
+                               + ")</div>\n");
+               builder.append("        <br/>\n");
+
+               if (!resume) {
+                       builder.append("    <ul>\n");
+                       builder.append("        <li>News link: <a href='"
+                                       + story.getUrlInternal() + "'>" + story.getUrlInternal()
+                                       + "</a></li>\n");
+                       builder.append("        <li>Source link: <a href='"
+                                       + story.getUrlExternal() + "'>" + story.getUrlExternal()
+                                       + "</a></li>\n");
+                       builder.append("    </ul>\n");
+                       builder.append("        <br/>\n");
+               }
+
+               builder.append("        <div class='content'>\n");
+               if (resume) {
+                       builder.append("                " + story.getContent() + "\n");
+               } else {
+                       builder.append("                " + story.getFullContent() + "\n");
+               }
+               builder.append("        </div>\n");
 
                return builder;
        }