5 public class CompositeGeneratorLibrary implements Generator.GeneratorLibrary {
6 private Map generatorLibraries;
7 private Generator.GeneratorLibrary defaultLibrary = null;
8 private static String LIBRARY_QUALIFIER_SEPARATOR = "::";
10 public CompositeGeneratorLibrary() {
11 generatorLibraries = new HashMap();
14 public void addLibrary(String aQualifier, Generator.GeneratorLibrary aLibrary, boolean anIsDefault) {
15 if (anIsDefault || defaultLibrary == null) {
16 defaultLibrary = aLibrary;
19 generatorLibraries.put(aQualifier, aLibrary);
22 public Generator makeGenerator(String anIdentifier) throws GeneratorExc, GeneratorFailure {
26 Generator.GeneratorLibrary library;
28 position = anIdentifier.indexOf( LIBRARY_QUALIFIER_SEPARATOR );
30 libraryName = anIdentifier.substring(0, position);
31 qualifier = anIdentifier.substring(position + LIBRARY_QUALIFIER_SEPARATOR.length());
33 library = (Generator.GeneratorLibrary) generatorLibraries.get(libraryName);
35 throw new GeneratorExc("CompositeGeneratorLibrary: library '"+libraryName+"' not found");
37 return library.makeGenerator(qualifier);
40 if (defaultLibrary!=null)
41 return defaultLibrary.makeGenerator(anIdentifier);
43 throw new GeneratorExc("CompositeGeneratorLibrary: no default library speficied");