merge of localization branch into HEAD. mh and zap
[mir.git] / source / mir / producer / NodedProducerFactory.java
1 package mir.producer;
2
3 import java.util.*;
4 import mir.producer.*;
5
6 public class NodedProducerFactory implements ProducerFactory {
7   private ProducerNode rootNode;
8
9   public NodedProducerFactory(ProducerNode aRootNode) {
10     rootNode = aRootNode;
11   }
12
13   public mir.producer.Producer makeProducer(String aVerb, Map aBasicValueSet) throws ProducerFailure {
14     Map baseValues;
15
16     try {
17       baseValues = new HashMap();
18       baseValues.putAll(aBasicValueSet);
19
20       return new NodedProducer(rootNode, aVerb, baseValues);
21     }
22     catch (Throwable t) {
23       throw new ProducerFailure(t.getMessage(), t);
24     }
25   };
26
27   public Iterator verbs() {
28     Set verbSet = rootNode.buildVerbSet();
29
30     if (verbSet.isEmpty()) {
31       verbSet = new HashSet();
32
33       verbSet.add("(default)");
34     }
35
36     return verbSet.iterator();
37   };
38 }
39