1 package mircoders.producer;
7 public class CompositeProducerFactory implements ProducerFactory {
8 Map factories; // verb -> Vector ( ProducerFactory )
10 public CompositeProducerFactory() {
11 factories = new HashMap();
14 public CompositeProducerFactory(ProducerFactory[] aSubProducerFactories) {
19 for (i=0; i<aSubProducerFactories.length; i++) {
20 addFactory(aSubProducerFactories[i]);
24 private List factoriesForVerb(String aVerb) {
27 result=(List) factories.get(aVerb);
32 factories.put(aVerb, result);
38 public void addFactory(ProducerFactory aFactory) {
44 factoriesForVerb((String) i.next()).add(aFactory);
48 public mir.producer.Producer makeProducer(String aVerb) throws ProducerFailure {
49 CompositeProducer result = new CompositeProducer();
51 Iterator i=factoriesForVerb(aVerb).iterator();
54 result.addProducer(((ProducerFactory) i.next()).makeProducer(aVerb));
59 public Iterator verbs() {
60 return factories.keySet().iterator();