rebuilding head
[mir.git] / source / mir / producer / RSSProducerNode.java
index 6dae7c6..9d62022 100755 (executable)
@@ -32,8 +32,9 @@ 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;
 
@@ -41,11 +42,17 @@ public class RSSProducerNode implements ProducerNode {
   private String key;
   private String url;
   private String version;
+  private String encoding;
 
-  public RSSProducerNode(String aKey, String anURL, String aVersion) {
+  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 {
@@ -54,16 +61,30 @@ 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);
+        }
       }
       ParameterExpander.setValueForKey(aValueMap, expandedKey, rssData);
     }