add in advanced query parameters used by media and comment search to mergeData so...
[mir.git] / source / mir / producer / ResourceBundleProducerNode.java
1 package mir.producer;
2
3 import java.util.*;
4 import java.io.*;
5 import org.apache.struts.util.MessageResources;
6 import mir.util.*;
7 import mir.misc.*;
8
9 public class ResourceBundleProducerNode extends ProducerNodeDecorator {
10   private String key;
11   private String bundleIdentifier;
12   private String languageIdentifier;
13
14   public ResourceBundleProducerNode(String aKey, String aBundleIdentifier, ProducerNode aSubNode) {
15     this (aKey, aBundleIdentifier, null, aSubNode);
16   }
17
18   public ResourceBundleProducerNode(String aKey, String aBundleIdentifier, String aLanguageIdentifier, ProducerNode aSubNode) {
19     super(aSubNode);
20
21     bundleIdentifier = aBundleIdentifier;
22     languageIdentifier = aLanguageIdentifier;
23     key = aKey;
24   }
25
26   public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
27     Object messages;
28
29
30     try {
31       if (languageIdentifier!=null) {
32         messages =
33             new ResourceBundleGeneratorFunction(
34                 new Locale(ParameterExpander.expandExpression( aValueMap, languageIdentifier ), "" ),
35                 MessageResources.getMessageResources( ParameterExpander.expandExpression( aValueMap, bundleIdentifier ))
36             );
37       }
38       else {
39         messages =
40           MessageResources.getMessageResources(
41               ParameterExpander.expandExpression( aValueMap, bundleIdentifier ));
42       }
43       ParameterExpander.setValueForKey( aValueMap, key, messages );
44
45       super.produce(aValueMap, aVerb, aLogger);
46     }
47     catch (Throwable t) {
48       throw new ProducerFailure(t.getMessage(), t);
49     }
50   };
51
52 }