1 package mir.producer.reader;
6 public class ScriptedProducerFactory implements ProducerFactory {
8 private ProducerNode body;
9 private String defaultVerb;
11 public ScriptedProducerFactory(Map aVerbs, ProducerNode aBody, String aDefaultVerb) {
14 defaultVerb = aDefaultVerb;
17 public ScriptedProducerFactory(Map aVerbs, ProducerNode aBody) {
18 this(aVerbs, aBody, null);
21 public Producer makeProducer(String aVerb, Map aStartingValues) throws ProducerFailure, ProducerExc {
22 CompositeProducerNode rootNode;
23 ProducerNode verbNode;
25 if (verbs.containsKey(aVerb)) {
26 verbNode = (ProducerNode) verbs.get(aVerb);
28 else if (defaultVerb!=null && verbs.containsKey(defaultVerb)) {
29 verbNode = (ProducerNode) verbs.get(defaultVerb);
31 else throw new ProducerExc("Undefined verb: " + aVerb);
33 rootNode = new CompositeProducerNode();
34 rootNode.addSubNode(verbNode);
35 rootNode.addSubNode(body);
37 return new NodedProducer(rootNode, aVerb, aStartingValues);
40 public Iterator verbs() {
41 return verbs.keySet().iterator();