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;
13 private static final String CLASS_NAME= HTML.class.getName();
14 private static final Logger LOG = Logger.getLogger(CLASS_NAME);
16 private static void appendA(StringBuffer buf, String child, String href, String cl) {
17 buf.append("<a href='");
21 buf.append(" class='");
30 private static void appendDiv(StringBuffer buf, String child) {
33 buf.append("</div>\n");
36 private static void appendP(StringBuffer buf, String child) {
42 private static void append(StringBuffer buf, Article a) throws UnsupportedEncodingException {
43 buf.append("<div class='article'>\n");
45 buf.append("<div class='article-image'>\n");
46 if (a.thumbnail != null) {
47 buf.append("<img class='left' src='");
48 buf.append(a.thumbnail);
51 buf.append("</div>\n");
53 buf.append("<div class='article-content'>\n");
55 buf.append("<div class='article-title'>\n");
56 appendA(buf, a.title, "redirect?url=" + URLEncoder.encode(a.link, "UTF-8"), null);
57 buf.append("</div>\n");
59 buf.append("<div class='article-info'>" + a.website + " - " + a.publicationDate + "</div>");
61 buf.append("<div class='article-description'>\n");
62 if (a.description != null) {
64 buf.append(a.description);
67 buf.append("</div>\n");
69 buf.append("</div>\n");
71 buf.append("</div>\n");
74 private static void appendMenu(StringBuffer buf, Category catActive) {
77 buf.append("<nav>\n");
80 for (Category cat: Category.values()) {
83 if (cat.equals(catActive))
88 appendA(buf, cat.getId(), cat.getId(), cl);
92 buf.append("</ul>\n");
93 buf.append("</nav>\n");
96 public static String toHTML(List<Article> articles, Category catActive) {
100 buf = new StringBuffer();
101 buf.append("<!DOCTYPE html>\n");
102 buf.append("<html lang='fr'>\n");
103 buf.append("<head>\n");
104 buf.append("<meta charset=\"UTF-8\">\n");
105 buf.append("<link rel='stylesheet' href='style.css' />\n");
106 buf.append("<title>");
107 buf.append(catActive.getTitle());
108 buf.append(" - PNews</title>\n");
109 buf.append("</head>\n");
110 buf.append("<body>\n");
112 appendMenu(buf, catActive);
115 for (Article e: articles) {
118 } catch (UnsupportedEncodingException e1) {
119 LOG.log(Level.SEVERE, "fail to convert article to HTML", e1);
127 buf.append("</body>\n");
128 buf.append("</html>\n");
130 return buf.toString();