/** * Reads the RSS feeds into the job posting collection */ package us.deans.zinc; import com.sun.syndication.feed.synd.SyndFeed; import com.sun.syndication.feed.synd.SyndEntry; import com.sun.syndication.feed.synd.SyndContentImpl; import com.sun.syndication.io.SyndFeedInput; import com.sun.syndication.io.XmlReader; import org.apache.log4j.Logger; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; // 2 Required Jar files // - rome-0.9.jar retrieved from http://rome.dev.java.net/ // - jdom.jar retrieved from http://www.jdom.org/ public class ZnRssReader { private Logger logger; ZnRssReader(){ logger = Logger.getLogger("RSSReader"); } public void readRss(ArrayList rssData, String rssFeedUrl, String jobLocation){ try { //open up a connection to the RSS feed URLConnection feedUrl = new URL(rssFeedUrl).openConnection(); //Create Feed Object SyndFeedInput input = new SyndFeedInput(); SyndFeed feed = input.build(new XmlReader(feedUrl)); logger.info("reading RSS feed..."); logger.debug("Examining rss feed:"+rssFeedUrl+"\n"+"Feed type="+feed.getFeedType()+"\n"); //Iterate through object to get details List list = feed.getEntries(); for (int i=0 ; i < list.size(); i++){ //store entry attributes SyndEntry entry = (SyndEntry)list.get(i); ZnJobRecord jobEntry = new ZnJobRecord(); jobEntry.setJobTitle(entry.getTitle()); jobEntry.setJobLink(entry.getLink()); jobEntry.setJobLocation(jobLocation); // inserted by application (properties file) String strJobDescription = entry.getDescription().toString(); jobEntry.setJobDescription(strJobDescription.trim()); //Add record to list rssData.add(jobEntry); //display entry attributes //logger.debug("Entry:"+i+"\ntitle:"+entry.getTitle()+"\nlink:"+entry.getLink()+"\ndescription:"+entry.getDescription()); String display = "Entry:"+i+"\ntitle:"+entry.getTitle()+"\nlink:"+entry.getLink()+"\ndescription:"+entry.getDescription(); //display += "\ntitle:"+entry.getTitle(); //display += "\nlink:"+entry.getLink(); //display += "\ndescription:"+entry.getDescription(); if (entry.getContents().size()==1) { SyndContentImpl imp = (SyndContentImpl)entry.getContents().get(0); display += "\ncontent value:"+imp.getValue(); } display += "\n"; // logger.debug("display"); } } catch(Exception e) { e.printStackTrace(); } } }