new admin templates! with many thanks to init...
[mir.git] / source / mir / producer / RSSProducerNode.java
1 package mir.producer;
2
3 import java.util.Map;
4
5 import mir.log.LoggerWrapper;
6 import mir.rss.RSSData;
7 import mir.rss.RSSReader;
8 import mir.rss.RSSToMapConverter;
9 import mir.util.ParameterExpander;
10 import mir.util.ExceptionFunctions;
11
12 public class RSSProducerNode implements ProducerNode {
13   private String key;
14   private String url;
15
16   public RSSProducerNode(String aKey, String anURL) {
17     key = aKey;
18     url = anURL;
19   }
20
21   public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure {
22     try {
23       String expandedKey = ParameterExpander.expandExpression( aValueMap, key );
24       String expandedUrl = ParameterExpander.expandExpression( aValueMap, url );
25
26       ParameterExpander.setValueForKey(aValueMap, expandedKey, null);
27       RSSReader reader = new RSSReader();
28       RSSData rssData = reader.parseUrl(expandedUrl);
29       ParameterExpander.setValueForKey(aValueMap, expandedKey, RSSToMapConverter.convertRSSData(rssData));
30     }
31     catch (Throwable t) {
32       Throwable s = ExceptionFunctions.traceCauseException(t);
33       aLogger.error("Error while processing RSS data: " + s.getClass().getName()+","+ s.getMessage());
34     }
35   };
36 }