package net.spy.diggwatch;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.spy.digg.Comment;
import net.spy.digg.Story;
import net.spy.digg.User;
/**
* Display comments for the given domain.
*/
public class DomainCommentsDisplayServlet extends BaseDiggServlet {
@Override
protected void processPath(String path, HttpServletRequest req,
HttpServletResponse res) throws Exception {
req.setAttribute("domain", path);
Collection<Comment> comments=di.getCommentsForDomain(path);
if(comments.isEmpty()) {
req.getRequestDispatcher("/nodcomments.jsp").forward(req, res);
} else {
Map<Integer, Story> stories = di.getStoriesForComments(comments);
Map<String, User> users = di.getCachedUsersForComments(comments);
List<StoryComment> sc=new ArrayList<StoryComment>(comments.size());
for(Comment c : comments) {
// Skip broken stories.
if(stories.containsKey(c.getStoryId())) {
String url="/diggwatch/icon/" + c.getUser();
User user=users.get(c.getUser());
if(user != null) {
url=user.getIcon();
}
sc.add(new StoryComment(stories.get(c.getStoryId()),
c, url));
}
}
req.setAttribute("storyComments", sc);
req.getRequestDispatcher("/dcomments.jsp").forward(req, res);
}
}
@Override
protected String getEtag(String path) throws Exception {
return getEtagFromEvents(di.getCommentsForDomain(path));
}
}