3 import java.io.UnsupportedEncodingException;
4 import java.net.URLEncoder;
6 import java.util.logging.Level;
7 import java.util.logging.Logger;
10 import pnews.Category;
11 import pnews.Language;
14 private static final String CLASS_NAME= HTML.class.getName();
15 private static final Logger LOG = Logger.getLogger(CLASS_NAME);
17 private static void appendA(StringBuffer buf, String child, String href, String cl) {
18 buf.append("<a href='");
22 buf.append(" class='");
31 private static void appendDiv(StringBuffer buf, String child) {
34 buf.append("</div>\n");
37 private static void appendP(StringBuffer buf, String child) {
43 private static void append(StringBuffer buf, Article a) throws UnsupportedEncodingException {
44 buf.append("<div class='article'>\n");
46 buf.append("<div class='article-image'>\n");
47 if (a.thumbnail != null) {
48 buf.append("<img class='left' src='");
49 buf.append(a.thumbnail);
52 buf.append("</div>\n");
54 buf.append("<div class='article-content'>\n");
56 buf.append("<div class='article-title'>\n");
57 appendA(buf, a.title, "/redirect?url=" + URLEncoder.encode(a.link, "UTF-8"), null);
58 buf.append("</div>\n");
60 buf.append("<div class='article-info'>" + a.website + " - " + a.publicationDate + "</div>");
62 buf.append("<div class='article-description'>\n");
63 if (a.description != null) {
65 buf.append(a.description);
68 buf.append("</div>\n");
70 buf.append("</div>\n");
72 buf.append("</div>\n");
75 private static void appendMenu(StringBuffer buf, Category catActive, Config cfg) {
78 buf.append("<nav>\n");
81 for (Category cat: cfg.getCategories()) {
82 if (!cat.getLanguage().equals(catActive.getLanguage()))
87 if (cat.equals(catActive))
92 appendA(buf, cat.getLabel(), cat.getURL(), cl);
96 for (Language l: cfg.getLanguages())
97 buf.append("<li><a href='" + l.toURL() + "'>" + l.getLabel() + "</a></li>");
99 buf.append("</ul>\n");
101 buf.append("</nav>\n");
104 public static String toHTML(List<Article> articles, Category catActive, Config cfg) {
109 buf = new StringBuffer();
110 buf.append("<!DOCTYPE html>\n");
111 buf.append("<html lang='fr'>\n");
112 buf.append("<head>\n");
113 buf.append("<meta charset=\"UTF-8\">\n");
114 buf.append("<link rel='stylesheet' href='/style.css' />\n");
115 buf.append("<title>");
116 buf.append(catActive.getTitle());
117 buf.append(" - PNews</title>\n");
118 buf.append("</head>\n");
119 buf.append("<body>\n");
121 cats = cfg.getCategories();
123 appendMenu(buf, catActive, cfg);
126 for (Article e: articles) {
129 } catch (UnsupportedEncodingException e1) {
130 LOG.log(Level.SEVERE, "Failed to convert article to HTML", e1);
138 buf.append("</body>\n");
139 buf.append("</html>\n");
141 return buf.toString();