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);
};
public Iterator verbs() {
- return verbs.keySet().iterator();
+ return verbs.iterator();
}
}
\ No newline at end of file