X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Fproducer%2FRSSProducerNode.java;h=2d485a908885451b59a9bf080deb61f113d7ad41;hb=0b28407d4cbb0b1fd2f99c998192292a4a486943;hp=05c77e64a80d3bf839e128a8a362af4f08b6d9eb;hpb=a459f111d85598df56c6ab711cec11632676b39c;p=mir.git diff --git a/source/mir/producer/RSSProducerNode.java b/source/mir/producer/RSSProducerNode.java index 05c77e64..2d485a90 100755 --- a/source/mir/producer/RSSProducerNode.java +++ b/source/mir/producer/RSSProducerNode.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001, 2002 The Mir-coders group + * Copyright (C) 2001-2006 The Mir-coders group * * This file is part of Mir. * @@ -18,48 +18,86 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, The Mir-coders gives permission to link - * the code of this program with any library licensed under the Apache Software License, - * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library - * (or with modified versions of the above that use the same license as the above), - * and distribute linked combinations including the two. You must obey the - * GNU General Public License in all respects for all of the code used other than - * the above mentioned libraries. If you modify this file, you may extend this - * exception to your version of the file, but you are not obligated to do so. + * the code of this program with any library licensed under the Apache Software License, + * and distribute linked combinations including the two. You must obey the + * GNU General Public License in all respects for all of the code used other than + * the above mentioned libraries. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. * If you do not wish to do so, delete this exception statement from your version. */ package mir.producer; -import java.util.Map; - import mir.log.LoggerWrapper; +import mir.rss.RSS091Reader; +import mir.rss.RSS2Reader; import mir.rss.RSSData; import mir.rss.RSSReader; -import mir.rss.RSSToMapConverter; -import mir.util.ExceptionFunctions; import mir.util.ParameterExpander; -public class RSSProducerNode implements ProducerNode { +import java.util.Map; + +public class RSSProducerNode extends AbstractProducerNode { private String key; private String url; + private String version; + private String encoding; - public RSSProducerNode(String aKey, String anURL) { + public RSSProducerNode(String aKey, String aURL, String aVersion) { + this (aKey, aURL, aVersion, null); + } + + public RSSProducerNode(String aKey, String aURL, String aVersion, String anEncoding) { key = aKey; - url = anURL; + url = aURL; + version = aVersion; + encoding = anEncoding; } public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { try { + RSSData rssData = null; String expandedKey = ParameterExpander.expandExpression( aValueMap, key ); String expandedUrl = ParameterExpander.expandExpression( aValueMap, url ); + String expandedVersion = ParameterExpander.expandExpression( aValueMap, version ); + String expandedEncoding = null; + if (encoding!=null) { + expandedEncoding = ParameterExpander.expandExpression( aValueMap, encoding ); + } ParameterExpander.setValueForKey(aValueMap, expandedKey, null); - RSSReader reader = new RSSReader(); - RSSData rssData = reader.parseUrl(expandedUrl); - ParameterExpander.setValueForKey(aValueMap, expandedKey, RSSToMapConverter.convertRSSData(rssData)); + + if (expandedVersion.equals("1.0")) { + RSSReader reader = new RSSReader(); + if (expandedEncoding!=null) { + rssData = reader.parseUrl(expandedUrl, expandedEncoding); + } + else { + rssData = reader.parseUrl(expandedUrl); + } + } + else if (expandedVersion.equals("0.91")) { + RSS091Reader reader = new RSS091Reader(); + if (expandedEncoding!=null) { + rssData = reader.parseUrl(expandedUrl, expandedEncoding); + } + else { + rssData = reader.parseUrl(expandedUrl); + } + } + else if (expandedVersion.equals("2")) { + RSS2Reader reader = new RSS2Reader(); + if (expandedEncoding!=null) { + rssData = reader.parseUrl(expandedUrl, expandedEncoding); + } + else { + rssData = reader.parseUrl(expandedUrl); + } + } + + ParameterExpander.setValueForKey(aValueMap, expandedKey, rssData); } catch (Throwable t) { - Throwable s = ExceptionFunctions.traceCauseException(t); - aLogger.error("Error while processing RSS data: " + s.getClass().getName()+","+ s.getMessage()); + aLogger.warn("Error while processing RSS data", t); } - }; -} \ No newline at end of file + } +}