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(); } } } }
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)); }
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()); } }
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(); * } */ }