- producer links are moved to an "advanced" page, not intended for normal
[mir.git] / source / mir / producer / reader / ScriptedProducerFactory.java
index 9e328d5..483754f 100755 (executable)
@@ -35,31 +35,39 @@ import java.util.*;
 import mir.producer.*;
 
 public class ScriptedProducerFactory implements ProducerFactory {
-  private Map verbs;
+  private List verbs;
+  private Map verbNodes;
   private ProducerNode body;
   private String defaultVerb;
+  private String name;
 
-  public ScriptedProducerFactory(Map aVerbs, ProducerNode aBody, String aDefaultVerb) {
+  public ScriptedProducerFactory(String aName, List aVerbs, Map aVerbNodes, ProducerNode aBody, String aDefaultVerb) {
     verbs = aVerbs;
+    verbNodes = aVerbNodes;
     body = aBody;
     defaultVerb = aDefaultVerb;
+    name = aName;
   }
 
-  public ScriptedProducerFactory(Map aVerbs, ProducerNode aBody) {
-    this(aVerbs, aBody, null);
+  public String getName() {
+    return name;
+  }
+
+  public ScriptedProducerFactory(String aName, List aVerbs, Map aVerbNodes, ProducerNode aBody) {
+    this(aName, aVerbs, aVerbNodes, aBody, null);
   }
 
   public Producer makeProducer(String aVerb, Map aStartingValues) throws ProducerFailure, ProducerExc {
     CompositeProducerNode rootNode;
     ProducerNode verbNode;
 
-    if (verbs.containsKey(aVerb)) {
-      verbNode = (ProducerNode) verbs.get(aVerb);
+    if (verbNodes.containsKey(aVerb)) {
+      verbNode = (ProducerNode) verbNodes.get(aVerb);
     }
-    else if (defaultVerb!=null && verbs.containsKey(defaultVerb)) {
-      verbNode = (ProducerNode) verbs.get(defaultVerb);
+    else if (defaultVerb!=null && verbNodes.containsKey(defaultVerb)) {
+      verbNode = (ProducerNode) verbNodes.get(defaultVerb);
     }
-    else throw new ProducerExc("Undefined verb: " + aVerb);
+    else throw new ProducerExc("Undefined verb: " + aVerb + " (and no default verb was defined)");
 
     rootNode = new CompositeProducerNode();
     rootNode.addSubNode(verbNode);
@@ -69,6 +77,6 @@ public class ScriptedProducerFactory implements ProducerFactory {
   };
 
   public Iterator verbs() {
-    return verbs.keySet().iterator();
+    return verbs.iterator();
   }
 }
\ No newline at end of file