package br.com.caelum.guj.feeds;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import br.com.caelum.guj.Config;
import de.nava.informa.core.ItemIF;
public class Agregator {
private final String intervalKey;
private final String maxItemsKey;
private final String feedUrl;
private List<ItemIF> items = new ArrayList<ItemIF>();
public Agregator(String intervalKey, String maxItemsKey, String feedUrl) {
this.intervalKey = intervalKey;
this.maxItemsKey = maxItemsKey;
this.feedUrl = feedUrl;
this.init();
}
public List<ItemIF> getItems() {
return this.items;
}
private void init() {
long interval = Config.getIntvalue(this.intervalKey) * 1000 * 60;
Timer infoqTimer = new Timer(true);
infoqTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try {
List<ItemIF> newFeeds = new ArrayList<ItemIF>(FeedReader.read(Config
.getValue(Agregator.this.feedUrl)));
int max = Config.getIntvalue(Agregator.this.maxItemsKey);
if (newFeeds.size() > max) {
newFeeds = newFeeds.subList(0, max);
}
if (!newFeeds.isEmpty()) {
Agregator.this.items = newFeeds;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}, new Date(), interval);
}
}