rebuilding head
[mir.git] / source / mir / producer / RSSProducerNode.java
index ac41f28..9d62022 100755 (executable)
@@ -32,28 +32,60 @@ package mir.producer;
 import java.util.Map;
 
 import mir.log.LoggerWrapper;
+import mir.rss.RSS091Reader;
 import mir.rss.RSSData;
-import mir.rss.*;
+import mir.rss.RSSReader;
 import mir.util.ExceptionFunctions;
 import mir.util.ParameterExpander;
 
 public class RSSProducerNode implements ProducerNode {
   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);
+
+      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);
+        }
+      }
       ParameterExpander.setValueForKey(aValueMap, expandedKey, rssData);
     }
     catch (Throwable t) {