1 package net.sf.invicta.project; 2 3 import java.util.HashMap ; 4 import java.util.Map ; 5 6 import net.sf.invicta.api.ProductContainer; 7 8 13 public class Depend extends DependItemImpl { 14 15 private boolean isResolved; 17 private ProductContainer dependProducts = new ProductContainerImpl(); 18 private ProductContainer recursiveProducts = new ProductContainerImpl(); 19 private HashMap recursiveComponentNames = new HashMap (); 20 private HashMap recursiveComponents = new HashMap (); 21 private ComponentDefinition dependentComponent = null; 22 23 26 public Depend() { 27 super(); 28 } 29 30 35 public Depend(String name, boolean export) { 36 super(name, export); 37 } 38 39 43 public void resolve(ProjectDefinition components, int level) throws InvictaProjectException { 44 if (this.isResolved) 45 return; 46 47 this.dependentComponent = 49 components.resolveComponent(this.name, level+1); 50 51 if (this.getProductsList().size() > 0) { 54 addDependProducts(dependentComponent.getRecursiveSelfProducts(getProductsList())); 55 this.recursiveProducts.insertAll(dependentComponent.getRecursiveSelfProducts(getProductsList())); 56 } else { 57 addDependProducts(dependentComponent.getDependExportedProducts()); 58 this.recursiveProducts.insertAll(dependentComponent.getRecursiveProducts()); 59 } 60 61 this.recursiveComponentNames.putAll(dependentComponent.getRecursiveDependComponentNamesMap()); 62 this.recursiveComponentNames.put(dependentComponent.getName(), dependentComponent.getName()); 63 this.recursiveComponents.putAll(dependentComponent.getRecursiveDependComponentsMap()); 64 this.recursiveComponents.put(dependentComponent.getName(), dependentComponent); 65 66 isResolved = true; 67 } 68 69 70 76 public ProductContainer getPrivateProducts() { 77 if (this.export) 78 return new ProductContainerImpl(); 79 else 80 return this.dependProducts; 81 } 82 83 87 public ProductContainer getExportedProducts() { 88 if (!this.export) 89 return new ProductContainerImpl(); 90 else 91 return this.dependProducts; 92 } 93 94 98 public ProductContainer getRecursiveProducts() { 99 return this.recursiveProducts; 100 } 101 102 106 public Map getRecursiveComponents() { 107 return this.recursiveComponentNames; 108 } 109 110 111 115 public ComponentDefinition getComponent() { 116 return this.dependentComponent; 117 } 118 119 123 private void addDependProducts(ProductContainer moreProducts) { 124 this.dependProducts.insertAll(moreProducts); 125 } 126 } 127 | Popular Tags |