Fix download order and comments/content storing
[gofetch.git] / src / be / nikiroo / gofetch / output / Html.java
CommitLineData
73785268
NR
1package be.nikiroo.gofetch.output;
2
73785268
NR
3import be.nikiroo.gofetch.data.Comment;
4import be.nikiroo.gofetch.data.Story;
5import be.nikiroo.gofetch.support.BasicSupport.Type;
6
7public class Html extends Output {
70b18499
NR
8 public Html(Type type, String hostname, String preselector, int port) {
9 super(type, hostname, preselector, port);
73785268
NR
10 }
11
12 @Override
13 public String getIndexHeader() {
e236e220
NR
14 String sel = preselector;
15 if (!sel.isEmpty()) {
16 sel = "/1" + sel;
17 }
5c056aad 18
e236e220 19 String gopherUrl = "gopher://" + hostname + sel + ":" + port;
70b18499
NR
20
21 return "<h1>News</h1>\n"//
22 + "<p>You will find here a few pages full of news, mirroring <a href='"
23 + gopherUrl + "'>"
24 + gopherUrl
25 + "</a>.</p>\n"//
70b18499 26 + "<p>They are simply scrapped from their associated webpage and updated a few times a day.</p>\n"//
70b18499 27 ;
73785268
NR
28 }
29
30 @Override
31 public String getIndexFooter() {
32 return "";
33 }
34
35 @Override
5c056aad 36 public String exportHeader(Story story) {
70b18499
NR
37 StringBuilder builder = new StringBuilder();
38
39 builder.append("<div class='story-header'>\n");
40 appendHtml(builder, story, true);
41 builder.append("<hr/>\n");
42 builder.append("</div>\n");
43
44 return builder.toString();
73785268
NR
45 }
46
47 @Override
5c056aad 48 public String export(Story story) {
73785268 49 StringBuilder builder = new StringBuilder();
73785268 50
70b18499
NR
51 builder.append("<div class='story'>\n");
52 appendHtml(builder, story, false);
53 builder.append("<hr/>\n");
73785268 54
5c056aad
NR
55 if (story.getComments() != null) {
56 for (Comment comment : story.getComments()) {
70b18499
NR
57 appendHtml(builder, comment, " ");
58 }
73785268
NR
59 }
60
70b18499
NR
61 builder.append("</div>\n");
62
73785268
NR
63 return builder.toString();
64 }
65
66 private void appendHtml(StringBuilder builder, Comment comment, String space) {
67 builder.append(space).append(
68 "<div class='comment' style='display: block; margin-left: "
69 + (20 * space.length()) + "px'>");
70 builder.append(space).append(" <h2>").append(comment.getTitle())
71 .append("</h2>\n");
72 builder.append(space).append(" <div class='by'>")
73 .append(comment.getAuthor()).append("</div>\n");
74 builder.append(space).append(" <div class='comment_content'>")
75 .append(comment.getContent()).append("</div>\n");
76 for (Comment subComment : comment) {
77 appendHtml(builder, subComment, space + " ");
78 }
79 builder.append(space).append("</div>");
80 }
81
82 private StringBuilder appendHtml(StringBuilder builder, Story story,
70b18499
NR
83 boolean resume) {
84 if (resume) {
73785268 85 builder.append(" <h1><a href='" + story.getId() + ".html'>"
70b18499 86 + story.getTitle() + "</a></h1>\n");
73785268 87 } else {
70b18499 88 builder.append(" <h1>" + story.getTitle() + "</h1>\n");
73785268
NR
89 }
90 builder.append(" <div class='details'>(" + story.getDetails()
70b18499
NR
91 + ")</div>\n");
92 builder.append(" <br/>\n");
93
94 if (!resume) {
95 builder.append(" <ul>\n");
96 builder.append(" <li>News link: <a href='"
97 + story.getUrlInternal() + "'>" + story.getUrlInternal()
98 + "</a></li>\n");
99 builder.append(" <li>Source link: <a href='"
100 + story.getUrlExternal() + "'>" + story.getUrlExternal()
101 + "</a></li>\n");
102 builder.append(" </ul>\n");
103 builder.append(" <br/>\n");
104 }
105
106 builder.append(" <div class='content'>\n");
5c056aad
NR
107 if (resume) {
108 builder.append(" " + story.getContent() + "\n");
109 } else {
110 builder.append(" " + story.getFullContent() + "\n");
111 }
70b18499 112 builder.append(" </div>\n");
73785268
NR
113
114 return builder;
115 }
116}