Beispiel #1
0
        internal void PurgeReferences(
            object element,
            Package targetPackage,
            String oldNameStartTag,
            String oldNameEndTag,
            String newNameStartTag,
            String newNameEndTag,
            Boolean dontMark)
        {
            Package currentPackage = this;

            if (targetPackage == null)
            {
                while (currentPackage.Owner != null)
                {
                    currentPackage = currentPackage.Owner;
                }
            }

            if (element.GetType() == typeof(Package))
            {
                foreach (Actor actor in ((Package)element).Actors)
                {
                    currentPackage.PurgeReferences(
                        actor,
                        null,
                        oldNameStartTag,
                        oldNameEndTag,
                        newNameStartTag,
                        newNameEndTag,
                        dontMark);
                }
                foreach (UseCase useCase in ((Package)element).UseCases)
                {
                    currentPackage.PurgeReferences(
                        useCase,
                        null,
                        oldNameStartTag,
                        oldNameEndTag,
                        newNameStartTag,
                        newNameEndTag,
                        dontMark);
                }
                foreach (Package package in ((Package)element).Packages)
                {
                    currentPackage.PurgeReferences(
                        package,
                        null,
                        oldNameStartTag,
                        oldNameEndTag,
                        newNameStartTag,
                        newNameEndTag,
                        dontMark);
                }
                if (!dontMark)
                {
                    this.ChangeReferences(
                        ((Package)element).Name,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((Package)element).Name,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                    this.ChangeReferences(
                        ((Package)element).Path,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((Package)element).Path,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                }
            }

            if (element.GetType() == typeof(UseCase))
            {
                foreach (Package package in this.Packages)
                {
                    package.PurgeReferences(
                        element,
                        null,
                        oldNameStartTag,
                        oldNameEndTag,
                        newNameStartTag,
                        newNameEndTag,
                        dontMark);
                }
                if (!dontMark)
                {
                    this.ChangeReferences(
                        ((UseCase)element).Name,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((UseCase)element).Name,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                    this.ChangeReferences(
                        ((UseCase)element).Path,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((UseCase)element).Path,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                }
                // remove use case references in use case's steps
                foreach (UseCase useCase in this.UseCases)
                {
                    foreach (Step step in useCase.Steps)
                    {
                        if (step.Dependency.PartnerUniqueID == ((UseCase)element).UniqueID)
                        {
                            step.Dependency.Type            = DependencyItem.ReferenceType.None;
                            step.Dependency.PartnerUniqueID = "";
                            step.Dependency.Stereotype      = "";
                        }
                    }
                }
            }

            if (element.GetType() == typeof(Actor))
            {
                foreach (UseCase useCase in this.UseCases)
                {
                    ActiveActor tmpAActor = null;
                    foreach (ActiveActor aactor in useCase.ActiveActors)
                    {
                        if (aactor.ActorUniqueID == ((Actor)element).UniqueID)
                        {
                            tmpAActor = aactor;
                        }
                    }
                    if (tmpAActor != null)
                    {
                        useCase.ActiveActors.Remove(tmpAActor);
                    }
                }
                foreach (Package package in this.Packages)
                {
                    package.PurgeReferences(
                        element,
                        null,
                        oldNameStartTag,
                        oldNameEndTag,
                        newNameStartTag,
                        newNameEndTag,
                        dontMark);
                }
                if (!dontMark)
                {
                    this.ChangeReferences(
                        ((Actor)element).Name,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((Actor)element).Name,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                    this.ChangeReferences(
                        ((Actor)element).Path,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((Actor)element).Path,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                }
            }
        }
Beispiel #2
0
        internal void PurgeReferences(
            object element,
            Package targetPackage,
            String oldNameStartTag,
            String oldNameEndTag,
            String newNameStartTag,
            String newNameEndTag,
            Boolean dontMark)
        {
            Package currentPackage = this;

            if (element.GetType() == typeof(Stakeholder))
            {
                foreach (Package package in this.Packages)
                {
                    package.PurgeReferences(
                        (Stakeholder)element,
                        null,
                        oldNameStartTag,
                        oldNameEndTag,
                        newNameStartTag,
                        newNameEndTag,
                        dontMark);
                }
                if (!dontMark)
                {
                    this.ChangeReferences(
                        ((Stakeholder)element).Name,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((Stakeholder)element).Name,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                    this.ChangeReferences(
                        ((Stakeholder)element).Path,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((Stakeholder)element).Path,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                }
                foreach (Requirement requirement in this.Requirements)
                {
                    foreach (ReferencedObject refobj in requirement.Proponents)
                    {
                        if (refobj.UniqueID == ((Stakeholder)element).UniqueID)
                        {
                            requirement.RemoveProponent((Stakeholder)element);
                            break;
                        }
                    }
                    foreach (ReferencedObject refobj in requirement.Beneficiaries)
                    {
                        if (refobj.UniqueID == ((Stakeholder)element).UniqueID)
                        {
                            requirement.RemoveBeneficiary((Stakeholder)element);
                            break;
                        }
                    }
                }
            }

            if (element.GetType() == typeof(Package))
            {
                foreach (Actor actor in ((Package)element).Actors)
                {
                    currentPackage.PurgeReferences(
                        actor,
                        null,
                        oldNameStartTag,
                        oldNameEndTag,
                        newNameStartTag,
                        newNameEndTag,
                        dontMark);
                }
                foreach (UseCase useCase in ((Package)element).UseCases)
                {
                    currentPackage.PurgeReferences(
                        useCase,
                        null,
                        oldNameStartTag,
                        oldNameEndTag,
                        newNameStartTag,
                        newNameEndTag,
                        dontMark);
                }
                foreach (Package package in ((Package)element).Packages)
                {
                    currentPackage.PurgeReferences(
                        package,
                        null,
                        oldNameStartTag,
                        oldNameEndTag,
                        newNameStartTag,
                        newNameEndTag,
                        dontMark);
                }
                if (!dontMark)
                {
                    this.ChangeReferences(
                        ((Package)element).Name,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((Package)element).Name,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                    this.ChangeReferences(
                        ((Package)element).Path,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((Package)element).Path,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                }
            }

            if (element.GetType() == typeof(UseCase))
            {
                foreach (Package package in this.Packages)
                {
                    package.PurgeReferences(
                        element,
                        null,
                        oldNameStartTag,
                        oldNameEndTag,
                        newNameStartTag,
                        newNameEndTag,
                        dontMark);
                }
                if (!dontMark)
                {
                    this.ChangeReferences(
                        ((UseCase)element).Name,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((UseCase)element).Name,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                    this.ChangeReferences(
                        ((UseCase)element).Path,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((UseCase)element).Path,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                }
                // remove use case references in use case's steps
                foreach (UseCase useCase in this.UseCases)
                {
                    foreach (Step step in useCase.Steps)
                    {
                        if (step.Dependency.PartnerUniqueID == ((UseCase)element).UniqueID)
                        {
                            step.Dependency.Type            = DependencyItem.ReferenceType.None;
                            step.Dependency.PartnerUniqueID = "";
                            step.Dependency.Stereotype      = "";
                        }
                    }
                }
                // remove use case references in use case's requirements
                foreach (Requirement requirement in this.Requirements)
                {
                    foreach (ReferencedObject refobj in requirement.MappedUseCases)
                    {
                        if (refobj.UniqueID == ((UseCase)element).UniqueID)
                        {
                            requirement.RemoveMappedUseCase((UseCase)element);
                            break;
                        }
                    }
                }
            }

            if (element.GetType() == typeof(Actor))
            {
                foreach (UseCase useCase in this.UseCases)
                {
                    ActiveActor tmpAActor = null;
                    foreach (ActiveActor aactor in useCase.ActiveActors)
                    {
                        if (aactor.ActorUniqueID == ((Actor)element).UniqueID)
                        {
                            tmpAActor = aactor;
                        }
                    }
                    if (tmpAActor != null)
                    {
                        useCase.ActiveActors.Remove(tmpAActor);
                    }
                }
                foreach (Package package in this.Packages)
                {
                    package.PurgeReferences(
                        element,
                        null,
                        oldNameStartTag,
                        oldNameEndTag,
                        newNameStartTag,
                        newNameEndTag,
                        dontMark);
                }
                if (!dontMark)
                {
                    this.ChangeReferences(
                        ((Actor)element).Name,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((Actor)element).Name,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                    this.ChangeReferences(
                        ((Actor)element).Path,
                        oldNameStartTag,
                        oldNameEndTag,
                        ((Actor)element).Path,
                        newNameStartTag,
                        newNameEndTag,
                        false);
                }
            }
        }