merge of localization branch into HEAD. mh and zap
[mir.git] / source / mir / producer / reader / ProducerNodeBuilderLibrary.java
1 package mir.producer.reader;
2
3 import java.util.*;
4 import mir.producer.*;
5
6 public class ProducerNodeBuilderLibrary {
7   private Map nodeBuilders;
8
9   public ProducerNodeBuilderLibrary() {
10     nodeBuilders = new HashMap();
11   }
12
13   public void registerBuilder(String aName, Class aProducerNodeBuilderClass) {
14     registerFactory(aName, new ProducerNodeBuilder.DefaultProducerNodeBuilderFactory( aProducerNodeBuilderClass ));
15   }
16
17   public void registerFactory(String aName, ProducerNodeBuilder.ProducerNodeBuilderFactory aFactory) {
18     nodeBuilders.put(aName, aFactory);
19   }
20
21   public boolean hasBuilderForName(String aName) {
22     return nodeBuilders.containsKey(aName);
23   }
24
25   public ProducerNodeBuilder constructBuilder(String aName) throws ProducerConfigExc {
26     if (hasBuilderForName(aName))
27       return ((ProducerNodeBuilder.ProducerNodeBuilderFactory) nodeBuilders.get(aName)).makeBuilder();
28     else
29       throw new ProducerConfigExc("ProducerNodeBuilder: no builder with name '" + aName + "' found.");
30   }
31 }