X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=source%2Fmir%2Fproducer%2FRSSProducerNode.java;h=2d485a908885451b59a9bf080deb61f113d7ad41;hb=0b28407d4cbb0b1fd2f99c998192292a4a486943;hp=d61c96ef2495672ab811bbfef537a0adb49323f0;hpb=0d512e810fc3838b6787c2a866864481d79c93ca;p=mir.git diff --git a/source/mir/producer/RSSProducerNode.java b/source/mir/producer/RSSProducerNode.java index d61c96ef..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. * @@ -19,8 +19,6 @@ * * 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 @@ -29,24 +27,30 @@ */ 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.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 aURL, String aVersion) { + this (aKey, aURL, aVersion, null); + } - public RSSProducerNode(String aKey, String anURL, String aVersion) { + 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 { @@ -55,22 +59,45 @@ public class RSSProducerNode implements ProducerNode { 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); - if (version.equals("1.0")) { + if (expandedVersion.equals("1.0")) { RSSReader reader = new RSSReader(); - rssData = reader.parseUrl(expandedUrl); + if (expandedEncoding!=null) { + rssData = reader.parseUrl(expandedUrl, expandedEncoding); + } + else { + rssData = reader.parseUrl(expandedUrl); + } } - else if (version.equals("0.91")) { + else if (expandedVersion.equals("0.91")) { RSS091Reader reader = new RSS091Reader(); - rssData = reader.parseUrl(expandedUrl); + 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 + } +}