package org.podcastpedia.web.feeds;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.podcastpedia.common.domain.Episode;
import org.podcastpedia.common.domain.Podcast;
import org.springframework.web.servlet.view.feed.AbstractRssFeedView;
import com.rometools.rome.feed.rss.Channel;
import com.rometools.rome.feed.rss.Description;
import com.rometools.rome.feed.rss.Enclosure;
import com.rometools.rome.feed.rss.Item;
public class GenericRssFeedView extends AbstractRssFeedView {
protected void buildFeedMetadata(Map model, Channel feed, HttpServletRequest request) {
feed.setTitle("" + model.get("feed_title"));
feed.setDescription(" " + model.get("feed_description"));
feed.setLink("" + model.get("feed_link"));
}
protected List buildFeedItems(Map model, HttpServletRequest request, HttpServletResponse response)
throws Exception {
List<Podcast> podcasts = (List<Podcast>) model.get("list_of_podcasts");
List<Item> items = new ArrayList<Item>(podcasts.size());
for (Podcast podcast : podcasts) {
Episode episode = podcast.getLastEpisode();
Item item = new Item();
String date = String.format("%1$tY-%1$tm-%1$td", episode.getPublicationDate());
item.setTitle(podcast.getTitle()+ " - " + episode.getTitle());
item.setPubDate(podcast.getPublicationDate());
item.setLink( model.get("HOST_AND_PORT_URL") + "/podcasts/" + podcast.getPodcastId()
+ "/" + podcast.getTitleInUrl() );
Description episodeDescription = new Description();
episodeDescription.setValue(episode.getDescription());
item.setDescription(episodeDescription);
//set enclosures
List<Enclosure> enclosures = new ArrayList<Enclosure>();
Enclosure enclosure = new Enclosure();
enclosure.setUrl(episode.getMediaUrl());
if(episode.getLength() != null) enclosure.setLength(episode.getLength());
if(episode.getEnclosureType() != null ) enclosure.setType(episode.getEnclosureType());
enclosures.add(enclosure);
item.setEnclosures(enclosures);
items.add(item);
}
return items;
}
}