| 1 package net.sf.invicta.process; 2 3 import java.util.Iterator ; 4 import java.util.List ; 5 6 import net.sf.invicta.InvictaException; 7 import net.sf.invicta.Logger; 8 import net.sf.invicta.api.InvictaProject; 9 import net.sf.invicta.project.ComponentDefinition; 10 import net.sf.invicta.project.InvictaProjectException; 11 import net.sf.invicta.project.ProjectDefinition; 12 import net.sf.invicta.project.ProjectDefinitionLoader; 13 import net.sf.invicta.type.TypeManager; 14 15 20 public class ProjectResolver { 21 protected List definitionFiles; 22 protected List typeFiles; 23 protected ProjectDefinitionLoader loader; 24 protected TypeManager typeManager; 25 protected ProjectDefinition projectDefinition; 26 protected InvictaProjectImpl project; 27 28 31 public ProjectResolver(List definitionFiles, List typeFiles) { 32 super(); 33 this.definitionFiles = definitionFiles; 34 this.typeFiles = typeFiles; 35 36 this.loader = new ProjectDefinitionLoader(); 38 this.typeManager = new TypeManager(typeFiles); 39 } 40 41 49 public InvictaProject resolveProject() throws InvictaException { 50 51 this.projectDefinition = loadProjectDefinition(); 53 54 this.projectDefinition.resolve(); 56 57 this.project = new InvictaProjectImpl(this.projectDefinition); 60 61 createTypedComponents(); 64 65 Logger.info("Invicta finished resolving project definition."); 66 67 return project; 68 } 69 70 76 protected void createTypedComponents() throws InvictaException { 77 for (Iterator iter = this.projectDefinition.getComponentsMap().values().iterator(); iter.hasNext();) { 80 ComponentDefinition componentDefinition = (ComponentDefinition) iter.next(); 81 TypedComponent component = 82 new TypedComponent(this.typeManager, 83 componentDefinition, this.project); 84 this.project.addComponent(component); 85 } 86 } 87 88 89 95 protected ProjectDefinition loadProjectDefinition() throws InvictaProjectException { 96 ProjectDefinition fullProjDef = new ProjectDefinition(); 98 99 for (Iterator fileIter = this.definitionFiles.iterator(); fileIter.hasNext();) { 101 String fileName = (String ) fileIter.next(); 102 ProjectDefinition projDef = (ProjectDefinition) this.loader.load(fileName); 103 fullProjDef.putAll(projDef); 104 } 105 return fullProjDef; 106 } 107 108 } 109 | Popular Tags |