public static void CreateAndTraceTopic()
        {
            IEARepository repository = EAMain.Repository;

            if (repository.GetContextItemType() == EANativeType.Element)
            {
                var eaelement = repository.GetContextObject <IEAElement>();
                if (eaelement != null && !EAMain.IsDecision(eaelement) && !EAMain.IsTopic(eaelement))
                {
                    string nameSuggestion  = string.Format(Messages.NameSuggestionTopic, eaelement.Name);
                    var    createTopicView = new CreateTopicDialog(nameSuggestion);
                    if (createTopicView.ShowDialog() == DialogResult.OK)
                    {
                        IEAPackage dvPackage = createTopicView.GetDecisionViewPackage();
                        IEAElement topic     = dvPackage.CreateElement(createTopicView.GetName(),
                                                                       EAConstants.TopicStereoType,
                                                                       EAConstants.ActivityMetaType);
                        topic.MetaType = EAConstants.TopicMetaType;
                        topic.AddTaggedValue(EATaggedValueKeys.DecisionStateModifiedDate,
                                             DateTime.Now.ToString(CultureInfo.InvariantCulture));
                        eaelement.ConnectTo(topic, EAConstants.AbstractionMetaType, EAConstants.RelationTrace);
                        topic.Update();

                        dvPackage.RefreshElements();
                        repository.RefreshModelView(dvPackage.ID);
                        topic.ShowInProjectView();
                    }
                }
            }
        }
Пример #2
0
        private IEnumerable <IEAElement> GetHistory()
        {
            IEnumerable <IEAElement> allDecisionsInPackage = _decisions;

            IEnumerable <IHistoryEntry> history = allDecisionsInPackage.SelectMany(d => Decision.Load(d).History);

            IEnumerable <IEAElement> exisitingHistoryDecisions = _historyPackage.Elements.Where(e => EAMain.IsDecision(e));

            //create non existing and update existing (name)
            var pastDecisions = new List <IEAElement>();

            foreach (IHistoryEntry item in history.ToList())
            {
                string name = string.Format(Messages.ChronologyDecisionName, item.Decision.Name,
                                            item.Modified.ToShortDateString());
                string       stereotype   = item.State;
                DateTime     modified     = item.Modified;
                const string type         = EAConstants.ActionMetaType;
                string       originalGUID = item.Decision.GUID;

                IEAElement pastDecision =
                    exisitingHistoryDecisions.FirstOrDefault(
                        hd => originalGUID.Equals(hd.GetTaggedValueByName(EATaggedValueKeys.OriginalDecisionGuid)) &&
                        modified.ToString(CultureInfo.InvariantCulture)
                        .Equals(hd.GetTaggedValueByName(EATaggedValueKeys.DecisionStateModifiedDate)) &&
                        stereotype.Equals(hd.Stereotype));
                if (pastDecision == null)
                {
                    pastDecision = _historyPackage.CreateElement(name, stereotype, type);
                }
                pastDecision.MetaType = EAConstants.DecisionMetaType;
                pastDecision.Modified = modified;
                pastDecision.AddTaggedValue(EATaggedValueKeys.DecisionStateModifiedDate,
                                            modified.ToString(CultureInfo.InvariantCulture));
                pastDecision.AddTaggedValue(EATaggedValueKeys.DecisionState, stereotype);
                pastDecision.AddTaggedValue(EATaggedValueKeys.IsHistoryDecision, true.ToString());
                pastDecision.AddTaggedValue(EATaggedValueKeys.OriginalDecisionGuid, originalGUID);

                pastDecisions.Add(pastDecision);
            }


            //add topics  and original decisions

            return
                (pastDecisions.Union(
                     _decisions.Select(d => Decision.Load(d))
                     .Where(d => d.HasTopic())
                     .Select(d => EAMain.Repository.GetElementByGUID(d.Topic.GUID))).Union(_decisions));
        }
Пример #3
0
        public void EA_PackageTests()
        {
            // Properties

            {
                IEAPackage folder = _e.GetDecisionPackageFolder();
                Assert.IsTrue(DateTime.Now > folder.Created);
                Assert.IsTrue(EANativeType.Package == folder.EANativeType);
                Assert.IsTrue(folder.Elements.Any());
                Assert.IsTrue("" != folder.GUID);
                Assert.IsTrue(0 < folder.ID);
                Assert.IsTrue(DateTime.Now > folder.Modified);
                Assert.IsTrue("" != folder.Name);
                Assert.IsTrue("" == folder.Notes);
                Assert.IsTrue(!folder.Packages.Any());
                Assert.IsNotNull(folder.ParentPackage);
                Assert.IsTrue("1.0" == folder.Version);
                Assert.IsTrue("system" == folder.Stereotype);
            }

            // Operations
            // See the Type property in the EAMain Element class documentation for a list of valid element types.

            {
                // CreatePackage / DeletePackage
                IEAPackage package = _e.GetDecisionPackage();
                IEAPackage inner   = package.CreatePackage("MyPackage", "MyStereotype");
                Assert.IsNotNull(inner);
                package.RefreshElements();
                Assert.IsTrue("MyPackage" == inner.Name);
                Assert.IsTrue("MyStereotype" == inner.Stereotype);
                package.DeletePackage(inner);
            }

            {
                // CreateElement
                IEAPackage package = _e.GetDecisionPackage();
                IEAElement element = package.CreateElement("MyNote", "MyStereotype", "Note");
                Assert.IsNotNull(element);
                package.RefreshElements();
                Assert.IsTrue("MyNote" == element.Name);
                Assert.IsTrue("MyStereotype" == element.Stereotype);
                Assert.IsTrue("Note" == element.Type);
                Assert.IsTrue(deleteElementFromPackage(package, element));
            }

            {
                // GetAllDiagrams / GetDiagram
                IEAPackage folder = _e.GetDecisionPackageFolder();
                IEnumerable <IEADiagram> diagrams = folder.GetAllDiagrams();
                Assert.IsNotNull(diagrams);
                IEADiagram first   = diagrams.ElementAt(0);
                IEADiagram diagram = folder.GetDiagram(first.Name);
                Assert.IsNotNull(diagram);
                Assert.IsTrue(first.ID == diagram.ID);
            }

            {
                // RefreshElements
                IEAPackage package = _e.GetDecisionPackage();
                package.RefreshElements();
            }

            {
                // AddElement / DeleteElement
                IEAPackage package = _e.GetDecisionPackage();
                IEAElement element = package.AddElement("MyNote", "Note");
                Assert.IsNotNull(element);
                package.RefreshElements();
                Assert.IsTrue("MyNote" == element.Name);
                Assert.IsTrue("" == element.Stereotype);
                Assert.IsTrue("Note" == element.Type);
                Assert.IsTrue(deleteElementFromPackage(package, element));
            }

            {
                // GetAllElementsOfSubTree
                IEAPackage package = _e.GetDecisionPackage();
                IEnumerable <IEAElement> elements = package.GetAllElementsOfSubTree();
                Assert.IsNotNull(elements);
                Assert.IsTrue(elements.Any());
            }

            {
                // GetAllDecisions
                IEAPackage package = _e.GetDecisionPackage();
                IEnumerable <IEAElement> actions = package.GetAllDecisions();
                Assert.IsNotNull(actions);
                Assert.IsTrue(actions.Any());
            }

            {
                // GetAllTopics
                IEAPackage package = _e.GetDecisionPackage();
                IEnumerable <IEAElement> elements = package.GetAllTopics();
                Assert.IsNotNull(elements);
                Assert.IsTrue(elements.Any());
            }

            {
                // GetSubpackageByName
                IEAPackage package    = _e.GetDecisionPackage();
                IEAPackage subPackage = package.GetSubpackageByName("High-level Decisions");
                Assert.IsNotNull(subPackage);
            }

            {
                // GetDiagrams
                IEAPackage folder = _e.GetDecisionPackageFolder();
                IEnumerable <IEADiagram> diagrams = folder.GetDiagrams();
                Assert.IsNotNull(diagrams);
                Assert.IsTrue(diagrams.Any());
            }
        }
Пример #4
0
        public void EA_DiagramTests()
        {
            // Properties

            {
                IEADiagram diagram = _e.GetDecisionForcesDiagram();
                Assert.IsTrue(DateTime.Now > diagram.Created);
                Assert.IsTrue(EANativeType.Diagram == diagram.EANativeType);
                Assert.IsTrue("" != diagram.GUID);
                Assert.IsTrue(0 < diagram.ID);
                Assert.IsTrue("" != diagram.Metatype);
                Assert.IsTrue(DateTime.Now > diagram.Modified);
                Assert.IsTrue("" != diagram.Name);
                Assert.IsTrue("" == diagram.Notes);
                Assert.IsNotNull(diagram.ParentElement);
                Assert.IsNotNull(diagram.ParentPackage);
                Assert.IsTrue("" != diagram.Version);
            }

            // Operations

            {
                // IsForcesView / AddElement / Contains / OpenAndSelectElement / HideConnectors / RemoveElement
                IEAPackage package = _e.GetDecisionPackage();
                IEADiagram diagram = _e.GetDecisionForcesDiagram();
                IEAElement element = package.CreateElement("MyNote", "MyStereotype", "Note");
                package.RefreshElements();
                diagram.AddElement(element);
                Assert.IsTrue(diagram.Contains(element));
                diagram.OpenAndSelectElement(element);
                diagram.HideConnectors(new[]
                {
                    EAConstants.RelationAlternativeFor, EAConstants.RelationCausedBy,
                    EAConstants.RelationDependsOn,
                    EAConstants.RelationExcludedBy, EAConstants.RelationReplaces, EAConstants.RelationFollowedBy
                });
                diagram.RemoveElement(element);
                Assert.IsFalse(diagram.Contains(element));
                Assert.IsTrue(deleteElementFromPackage(package, element));
            }

            {
                // ShowInProjectView / DiagramToStream
                IEAPackage package = _e.GetDecisionPackage();
                IEADiagram diagram = _e.GetDecisionForcesDiagram();
                diagram.ShowInProjectView();
                FileStream fs = diagram.DiagramToStream();
                Assert.IsNotNull(fs);
                Assert.IsTrue(fs.Name.Contains(".emf"));
            }

            {
                // GetElements
                IEAPackage package           = _e.GetDecisionPackage();
                IEADiagram diagram           = _e.GetDecisionForcesDiagram();
                List <IEADiagramObject> objs = diagram.GetElements();
                Assert.IsNotNull(objs);
                Assert.IsTrue(0 < objs.Count);
            }

            /* TODO: adjust for Decision Architect MDG
             * {  // IsChronologicalView
             *  IEAPackage package = _e.GetDecisionPackage();
             *  IEADiagram diagram = _e.GetDecisionChronologicalDiagram();
             * }
             *
             * {  // IsRelationshipView
             *  IEAPackage package = _e.GetDecisionPackage();
             *  IEADiagram diagram = _e.GetDecisionRelationshipDiagram();
             * }
             *
             * {  // IsStakeholderInvolvementView
             *  IEAPackage package = _e.GetDecisionPackage();
             *  IEADiagram diagram = _e.GetDecisionStakeholderDiagram();
             * }
             */
        }