1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package nl.toolforge.karma.core.module;
20
21 import nl.toolforge.karma.core.KarmaRuntimeException;
22 import nl.toolforge.karma.core.Version;
23 import nl.toolforge.karma.core.boot.WorkingContext;
24 import nl.toolforge.karma.core.location.Location;
25 import nl.toolforge.karma.core.location.LocationException;
26
27 /***
28 * <p>Factory class to create modules based on a {@link nl.toolforge.karma.core.module.ModuleDigester}.</p>
29 *
30 * @author D.A. Smedes
31 * @version $Id: ModuleFactory.java,v 1.2 2004/11/10 23:53:09 asmedes Exp $
32 */
33 public final class ModuleFactory {
34
35 private WorkingContext workingContext = null;
36
37 public ModuleFactory(WorkingContext workingContext) {
38 this.workingContext = workingContext;
39 }
40
41 public Module create(ModuleDigester digester, Module.Type moduleType) throws LocationException {
42
43 if (digester == null) {
44 throw new IllegalArgumentException("Descriptor cannot be null.");
45 }
46 if (moduleType == null) {
47 throw new IllegalArgumentException("Module type cannot be null.");
48 }
49
50 Location location = workingContext.getLocationLoader().get(digester.getLocation());
51
52 Version version = null;
53 if (digester.getVersion() != null) {
54 version = new Version(digester.getVersion());
55 }
56
57 if (moduleType.equals(Module.JAVA_SOURCE_MODULE)) {
58 return new SourceModule(digester.getName(), location, version);
59 } else if (moduleType.equals(Module.JAVA_ENTERPRISE_APPLICATION)) {
60 return new JavaEnterpriseApplicationModule(digester.getName(), location, version);
61 } else if (moduleType.equals(Module.JAVA_WEB_APPLICATION)) {
62 return new JavaWebApplicationModule(digester.getName(), location, version);
63 } else if (moduleType.equals(Module.LIBRARY_MODULE)) {
64 return new LibModule(digester.getName(), location, version);
65 } else if (moduleType.equals(Module.OTHER_MODULE)) {
66 return new OtherModule(digester.getName(), location, version);
67 } else if (moduleType.equals(Module.UNKNOWN)) {
68 return new UntypedModule(digester.getName(), location, version);
69 }
70
71 throw new KarmaRuntimeException("Type mismatch. Could not create module.");
72 }
73 }