1adbb49411dc67852527ba0105fc18047eab1091
[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     super(aSubNode);
16
17     bundleIdentifier = aBundleIdentifier;
18     key = aKey;
19   }
20
21   public ResourceBundleProducerNode(String aKey, String aBundleIdentifier, String aLanguageIdentifier, ProducerNode aSubNode) {
22     super(aSubNode);
23
24     bundleIdentifier = aBundleIdentifier;
25     languageIdentifier = aLanguageIdentifier;
26     key = aKey;
27   }
28
29   public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
30     Object messages;
31
32     try {
33       if (languageIdentifier!=null) {
34         messages =
35             new MessageMethodModel(
36                 new Locale(ParameterExpander.expandExpression( aValueMap, languageIdentifier ), null ),
37                 MessageResources.getMessageResources(ParameterExpander.expandExpression( aValueMap, bundleIdentifier ))
38             );
39       }
40       else {
41         messages =
42           MessageResources.getMessageResources(
43               ParameterExpander.expandExpression( aValueMap, bundleIdentifier ));
44       }
45       aValueMap.put(
46           key, messages
47       );
48
49       super.produce(aValueMap, aVerb, aLogger);
50     }
51     catch (Throwable t) {
52       throw new ProducerFailure(t.getMessage(), t);
53     }
54   };
55
56 }