package net.spy.diggwatch;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.spy.digg.Story;
import net.spy.jwebkit.rss.RSSChannel;
import net.spy.jwebkit.rss.RSSItem;
public class DomainRSSServlet extends BaseDiggServlet {
@Override
protected void processPath(String path, HttpServletRequest req,
HttpServletResponse res) throws Exception {
Collection<Story> stories = di.getStoriesForDomain(path);
sendXml(new DomainCommentFeed(path,
"Stories linking to " + path + " on digg", stories), res);
}
@Override
protected String getEtag(String path) throws Exception {
Collection<Story> stories = di.getStoriesForDomain(path);
String rv="0";
if(!stories.isEmpty()) {
Story s=stories.iterator().next();
rv = String.valueOf(s.getId());
}
return rv;
}
private static class DomainCommentFeed extends RSSChannel {
private Collection<Story> stories=null;
public DomainCommentFeed(String path, String descr,
Collection<Story> s) {
super(path + " @ digg", CommentFeed.BASE_URL, descr);
stories=s;
}
@Override
protected Collection<? extends RSSItem> getItems() {
Collection<RSSItem> rv=new ArrayList<RSSItem>();
for(Story s : stories) {
rv.add(new StoryAdaptor(s));
}
return rv;
}
}
private static class StoryAdaptor implements RSSItem {
private Story story=null;
public StoryAdaptor(Story s) {
super();
story=s;
}
public String getDescription() {
return story.getDescription();
}
public String getGuid() {
return story.getDiggLink();
}
public String getLink() {
return story.getDiggLink();
}
public Date getPubDate() {
return new Date(story.getSubmittedTimestamp());
}
public String getTitle() {
return story.getTitle();
}
}
}