package pnews.servlet;
+import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
+import com.rometools.rome.io.FeedException;
+
import pnews.Article;
import pnews.Category;
+import pnews.EntityStat;
+import pnews.Language;
public class HTML {
private static final String CLASS_NAME= HTML.class.getName();
buf.append("<div class='article-description'>\n");
if (a.description != null) {
buf.append("<p>");
- buf.append(a.description);
+ if (a.description.length() < 512) {
+ buf.append(a.description);
+ } else {
+ buf.append(a.description.substring(0, 512));
+ buf.append("[..]");
+ }
buf.append("</p>");
}
buf.append("</div>\n");
buf.append("</div>\n");
}
- private static void appendMenu(StringBuffer buf, Category catActive, Category[] cats) {
+ private static void appendMenu(StringBuffer buf, Category catActive, Config cfg) {
String cl;
buf.append("<nav>\n");
buf.append("<ul>\n");
- for (Category cat: cats) {
+ for (Category cat: cfg.getCategories()) {
+ if (!cat.getLanguage().equals(catActive.getLanguage()))
+ continue;
+
buf.append("<li>");
if (cat.equals(catActive))
buf.append("</li>");
}
+ for (Language l: cfg.getLanguages())
+ buf.append("<li><a href='" + l.toURL() + "'>" + l.getLabel() + "</a></li>");
+
buf.append("</ul>\n");
+
buf.append("</nav>\n");
}
- public static String toHTML(List<Article> articles, Category catActive, Category[] cats) {
+ private static String toURL(Category catActive, String entity) {
+ try {
+ return catActive.getURL() + "?entity=" + URLEncoder.encode(entity, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ LOG.log(Level.SEVERE, "Failed to generate link to entity " + entity, e);
+ return catActive.getURL();
+ }
+ }
+
+ public static String toHTML(List<Article> articles, Category catActive, String entityActive, Config cfg, ArticleProvider provider) {
StringBuffer buf;
int i;
+ List<EntityStat> entities;
+ String cl;
buf = new StringBuffer();
buf.append("<!DOCTYPE html>\n");
buf.append("</head>\n");
buf.append("<body>\n");
- appendMenu(buf, catActive, cats);
+ appendMenu(buf, catActive, cfg);
+
+ try {
+ entities = provider.getEntityStats(catActive);
+
+ if (entities.size() > 0) {
+ buf.append("<nav>");
+ buf.append("<ul>");
+ i = 0;
+ for (EntityStat s: entities) {
+ buf.append("<li>");
+ if (entityActive != null && s.getEntity().equals(entityActive))
+ cl = "active";
+ else
+ cl = null;
+ appendA(buf, s.getEntity(), toURL(catActive, s.getEntity()), cl);
+ buf.append("</li>\n");
+ i++;
+ if (i > 10)
+ break;
+ }
+ buf.append("</ul>\n");
+ buf.append("</nav>\n");
+ }
+ } catch (IllegalArgumentException | FeedException | IOException e2) {
+ LOG.log(Level.SEVERE, "Failed to get entities", e2);
+ }
i = 0;
for (Article e: articles) {
try {
append(buf, e);
} catch (UnsupportedEncodingException e1) {
- LOG.log(Level.SEVERE, "fail to convert article to HTML", e1);
+ LOG.log(Level.SEVERE, "Failed to convert article to HTML", e1);
}
if (i == 100)
break;