import pnews.Article;
import pnews.Category;
+import pnews.Feed;
public class ArticleProvider {
- public final static ArticleProvider singleton = new ArticleProvider();
private static final Logger LOG = Logger.getLogger(ArticleProvider.class.getName());
private final Map<Category, List<Article>> articlesByCategory = new HashMap<>();
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);
+ private final Config config;
- private ArticleProvider() {
- for (Category cat:Category.values())
+ public ArticleProvider(Config config) {
+ this.config = config;
+ for (Category cat: config.getCategories())
scheduler.scheduleAtFixedRate(new Refresher(cat), 2, 600, TimeUnit.SECONDS);
}
return new SyndFeedInput().build(r);
}
-
-
private List<Article> getArticlesForUpdate(Category cat) {
List<Article> result;
feedTitle = feed.getTitle().trim();
- LOG.info("addArticles " + cat.getId() + " " + feedTitle + " number of articles: " + feed.getEntries().size());
+ LOG.info("addArticles " + cat.getLabel() + " " + feedTitle + " number of articles: " + feed.getEntries().size());
for (SyndEntry entry: feed.getEntries()) {
String link = entry.getLink().trim();
}
}
- LOG.info("addArticles done " + cat.getId());
+ LOG.info("addArticles done " + cat.getLabel());
}
private void retrieveArticles(Category cat) throws IllegalArgumentException, MalformedURLException, FeedException, IOException {
- String[] feeds;
+ List<Feed> feeds;
- feeds = Config.getFeedsByCategory().get(cat);
+ feeds = config.getFeedsByCategory().get(cat);
if (feeds != null)
- for (String str: feeds)
+ for (Feed f: feeds)
try {
- addArticles(cat, getSyndFeed(str));
+ addArticles(cat, getSyndFeed(f.getURL()));
} catch (Throwable e) {
LOG.log(Level.SEVERE,
- "retrieveArticles failure " + cat.getId() + " " + str,
+ "retrieveArticles failure " + cat.getLabel() + " " + f.toString(),
e);
}
else
@Override
public void run() {
- LOG.info("refresher "+ category.getId());
+ LOG.info("refresher "+ category.getLabel());
try {
retrieveArticles(category);
LOG.log(Level.SEVERE, "refresher failure", e);
}
- LOG.info("refresher "+ category.getId() + " done");
+ LOG.info("refresher "+ category.getLabel() + " done");
}
}
}