예제 #1
0
        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;
        }
예제 #2
0
        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);
        }
예제 #3
0
        //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);
            }
        }