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