public static IDictionary GetRelationships(UMLClassCollection classes) { IDictionary relationships = new Hashtable(); foreach (UMLClass var in classes) { UMLAssociationCollection associationCollection = var.GetAssociations(); foreach (UMLAssociation association in associationCollection) { if (!(relationships.Contains(association.Guid))) { UMLAssociationEndCollection associationEndCollection = Helper.GetAssociationEndCollection<UMLAssociationEnd, UMLAssociationEndCollection>(association.Guid); association.End1 = associationEndCollection[0]; association.End2 = associationEndCollection[1]; association.End1.Participant = Helper.GetAssociationEndParticipant<UMLClass>(associationEndCollection[0].Guid); association.End2.Participant = Helper.GetAssociationEndParticipant<UMLClass>(associationEndCollection[1].Guid); association.AssociationClass = Helper.GetAssociationClass<UMLClass>(association.Guid); relationships.Add(association.Guid, association); } } UMLGeneralizationCollection generalizationCollection = var.GetGeneralizations(); foreach (UMLGeneralization generalization in generalizationCollection) { generalization.Child = Helper.GetGeneralizationChild<UMLClass>(generalization.Guid); generalization.Parent = Helper.GetGeneralizationParent<UMLClass>(generalization.Guid); relationships.Add(generalization.Guid, generalization); } UMLRealizationCollection realizationCollection = var.GetRealizations(); foreach (UMLRealization realization in realizationCollection) { realization.Client = Helper.GetDependencyClient<UMLClass>(realization.Guid); realization.Supplier = Helper.GetDependencySupplier<UMLClass>(realization.Guid); relationships.Add(realization.Guid, realization); } UMLDependencyCollection dependencyCollection = var.GetDependencies(); foreach (UMLDependency dependency in dependencyCollection) { dependency.Client = Helper.GetDependencyClient<UMLClass>(dependency.Guid); dependency.Supplier = Helper.GetDependencySupplier<UMLClass>(dependency.Guid); relationships.Add(dependency.Guid, dependency); } } return relationships; }
public static IDictionary GetRelationships(UMLClassCollection classes) { IDictionary relationships = new Hashtable(); foreach (UMLClass var in classes) { UMLAssociationCollection associationCollection = var.GetAssociations(); foreach (UMLAssociation association in associationCollection) { if (!(relationships.Contains(association.Guid))) { UMLAssociationEndCollection associationEndCollection = Helper.GetAssociationEndCollection <UMLAssociationEnd, UMLAssociationEndCollection>(association.Guid); association.End1 = associationEndCollection[0]; association.End2 = associationEndCollection[1]; association.End1.Participant = Helper.GetAssociationEndParticipant <UMLClass>(associationEndCollection[0].Guid); association.End2.Participant = Helper.GetAssociationEndParticipant <UMLClass>(associationEndCollection[1].Guid); association.AssociationClass = Helper.GetAssociationClass <UMLClass>(association.Guid); relationships.Add(association.Guid, association); } } UMLGeneralizationCollection generalizationCollection = var.GetGeneralizations(); foreach (UMLGeneralization generalization in generalizationCollection) { generalization.Child = Helper.GetGeneralizationChild <UMLClass>(generalization.Guid); generalization.Parent = Helper.GetGeneralizationParent <UMLClass>(generalization.Guid); relationships.Add(generalization.Guid, generalization); } UMLRealizationCollection realizationCollection = var.GetRealizations(); foreach (UMLRealization realization in realizationCollection) { realization.Client = Helper.GetDependencyClient <UMLClass>(realization.Guid); realization.Supplier = Helper.GetDependencySupplier <UMLClass>(realization.Guid); relationships.Add(realization.Guid, realization); } UMLDependencyCollection dependencyCollection = var.GetDependencies(); foreach (UMLDependency dependency in dependencyCollection) { dependency.Client = Helper.GetDependencyClient <UMLClass>(dependency.Guid); dependency.Supplier = Helper.GetDependencySupplier <UMLClass>(dependency.Guid); relationships.Add(dependency.Guid, dependency); } } return(relationships); }
//METHODS #region Methods /* * This method has the responsbility of ensuring that all the file generation is completed * successfully. */ public void CreateFiles(object observer) { List <UMLFile> files; List <IUMLElement> rootItems; UMLPackage package; bool obsValid = false; if (observer != null) { if (observer is IGenerationStageObserver) { obsValid = true; } } //1. Setup the environment UMLModelCollection models = UMLProject.GetInstance().GetUMLModels(); //find if package-root already exists UMLModel pkgRoot = models.Find(FindPackageRoot); if (pkgRoot == null) { pkgRoot = new UMLModel(); pkgRoot.Name = this._packageRoot; pkgRoot.Owner = UMLProject.GetInstance(); pkgRoot.Save(); } //find if package already exists rootItems = pkgRoot.GetOwnedElements(); package = (UMLPackage)(rootItems.Find(FindPackage)); if (package != null) { package.Delete(); } package = new UMLPackage(); package.Owner = pkgRoot; package.Name = this._packageName; package.Save(); if (obsValid == true) { ((IGenerationStageObserver)observer).setStage(1); } //2. Analyze the model UMLClassCollection classes = UMLProject.GetInstance().GetUMLClasses(); IDictionary relationships = HelperRelationships.GetRelationships((UMLClassCollection)classes); files = analyzer.CreateFiles(relationships); if (obsValid == true) { ((IGenerationStageObserver)observer).setStage(2); } //3. Save the files to StarUML foreach (UMLFile file in files) { file.Owner = package; file.Stereotype = TUPUX.Entity.Constants.UMLFile.STEREOTYPE; file.Save(); foreach (UMLAttribute a in file.Attributes) { a.Owner = file; a.Save(); } } if (obsValid == true) { ((IGenerationStageObserver)observer).setStage(3); } }