package feedthistothat.Readers;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import feedthistothat.DataTypes.LinkEntry;
import feedthistothat.DataTypes.LinkSet;
import feedthistothat.DataTypes.LinkTag;
import uk.org.catnip.eddie.Category;
import uk.org.catnip.eddie.Detail;
import uk.org.catnip.eddie.Entry;
import uk.org.catnip.eddie.FeedData;
import uk.org.catnip.eddie.Link;
import uk.org.catnip.eddie.parser.Parser;
public class RSSReader implements ILinkSourceReader {
protected String feedURL;
public RSSReader(String feedURL)
{
this.feedURL = feedURL;
}
@SuppressWarnings("unchecked")
@Override
public LinkSet Read() throws Exception {
LinkSet links = new LinkSet();
byte[] feedContents = FeedReader.Read(feedURL);
Parser parser = new Parser();
FeedData feedData = null;
feedData = parser.parse(feedContents);
for(Iterator<Entry> entryIterator = feedData.entries();entryIterator.hasNext();)
{
Entry entry = entryIterator.next();
LinkEntry linkEntry = new LinkEntry();
linkEntry.Title = entry.getTitle().getValue();
Detail commentDetail = entry.getSummary();
if(commentDetail != null)
{
if (!commentDetail.getValue().trim().equals("<p></p>") && !commentDetail.getValue().trim().equals("")) {
linkEntry.Description = commentDetail.getValue();
}
}
linkEntry.PostedDate = Calendar.getInstance();
linkEntry.PostedDate.setTime(entry.getModified());
for(Iterator<Link> linkIterator = entry.links();linkIterator.hasNext();)
{
linkEntry.URL = linkIterator.next().getValue();
}
linkEntry.Tags = GetTagsFromCategories(entry.categories());
links.add(linkEntry);
}
if (links.isEmpty()) {
throw new Exception("No links found at that address - user does not exist?");
}
return links;
}
protected Boolean splitTags;
private List<LinkTag> GetTagsFromCategories(Iterator<Category> categoryIterator) {
List<LinkTag> Tags = new Vector<LinkTag>();
while(categoryIterator.hasNext())
{
String tagText = categoryIterator.next().getTerm();
String[] tags;
if (splitTags) {
tags = tagText.split(" ");
}
else {
tags = new String[1];
tags[0] = tagText;
}
for (String tag : tags) {
LinkTag linkTag = new LinkTag();
linkTag.Tag = tag;
linkTag.TagURL = GetURLForTag(tag);
Tags.add(linkTag);
}
}
return Tags;
}
protected String GetURLForTag(String tag) {
return null;
}
}