package pnews.servlet;
+import java.io.IOException;
+import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
+import com.rometools.rome.io.FeedException;
-import pnews.Article;
-import pnews.Category;
+import net.wpitchoune.pnews.Article;
+import net.wpitchoune.pnews.ArticleStore;
+import net.wpitchoune.pnews.Category;
+import net.wpitchoune.pnews.Config;
public class JSON {
private static final Logger LOG = Logger.getLogger(JSON.class.getName());
- public static String getStats(Category[] cats) {
+ public static String getStats(ArticleProvider provider, Config config) {
JsonObject jstats, jreadcounts, jcategories, jmemory;
Runtime runtime;
- Article[] articles;
+ List<Article> articles;
+ Article[] allArticles;
jstats = new JsonObject();
jreadcounts = new JsonObject();
jstats.add("read-counts", jreadcounts);
- articles = ArticleStore.singleton.getArticles();
- for (Article a: articles)
- if (a.readCount.get() > 0)
- jreadcounts.addProperty(a.link, a.readCount);
+ allArticles = ArticleStore.singleton.getArticles();
+ for (Article a: allArticles)
+ if (a.getReadCount() > 0)
+ jreadcounts.addProperty(a.getLink(), a.getReadCount());
jcategories = new JsonObject();
jstats.add("categories", jcategories);
- for (Category cat: cats)
+ for (Category cat: config.getCategories())
try {
+ articles = provider.getArticles(cat, null);
jcategories.addProperty(cat.getLabel(),
- articles.length);
- } catch (IllegalArgumentException e) {
+ articles.size());
+ } catch (IllegalArgumentException | FeedException | IOException e) {
LOG.log(Level.SEVERE, "Fail to retrieve articles", e);
}