public static Dictionary <String, UmlTransition> ParserTransition(XmlNode node, String id) { Dictionary <String, UmlTransition> dicTransition = new Dictionary <string, UmlTransition>(); foreach (XmlNode NodeTransition in node.SelectNodes("//UML:ActivityGraph[@xmi.id='" + id + "']/*/UML:Transition", ns)) { if (NodeTransition.Attributes["name"] != null) { UmlTransition t = new UmlTransition(); t.Name = NodeTransition.Attributes["name"].Value; t.Id = NodeTransition.Attributes["xmi.id"].Value; UmlTag.ParserTag(NodeTransition, ns, t); foreach (XmlNode NodeTStateVertex in NodeTransition.SelectNodes("//UML:Transition[@xmi.id='" + t.Id + "']//UML:Transition.source//UML:StateVertex", ns)) { t.Source = NodeTStateVertex.Attributes["xmi.idref"].Value; } foreach (XmlNode NodeStateVertex in NodeTransition.SelectNodes("//UML:Transition[@xmi.id='" + t.Id + "']//UML:Transition.target//UML:StateVertex", ns)) { t.Target = NodeStateVertex.Attributes["xmi.idref"].Value; } foreach (XmlNode NodeNodeStateMachine in NodeTransition.SelectNodes("//UML:Transition[@xmi.id='" + t.Id + "']//UML:Transition.stateMachine//UML:StateMachine", ns)) { t.refDiagramActivity = NodeNodeStateMachine.Attributes["xmi.idref"].Value; } dicTransition.Add(t.Id, t); } } return(dicTransition); }
public static void ParserTag(XmlNode node, XmlNamespaceManager ns, UmlBase UmlElement) { foreach (XmlNode XmlNode in node.SelectNodes("//UML:" + UmlElement.GetType().Name.Substring(3) + "[@xmi.id='" + UmlElement.Id + "']//UML:TaggedValue", ns)) { UmlTag tag = new UmlTag(); tag.name = XmlNode.Attributes["tag"].Value; tag.id = XmlNode.Attributes["xmi.id"].Value; tag.value = HttpUtility.UrlDecode(XmlNode.Attributes["value"].Value).Replace("+", " "); switch (UmlElement.GetType().Name) { case "UmlTransition": switch (tag.name) { case "FTexpectedResult": UmlTransition transition = UmlElement as UmlTransition; transition.listExpectedResults.Add(tag); break; case "FTaction": UmlElement.dictionaryTag.Add(tag.id, tag); break; default: DialogResult dialogResult = MessageBox.Show("Use case" + tag.name + " has a invalid Tag. Are you sure you want to continue executing a parsing method?", "Error", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.No) { throw new eInvalidTag(); } break; } break; default: break; } if (tag.name.Equals("jude.hyperlink")) { UmlActionState umlActivity = UmlElement as UmlActionState; tag.value = getHyperLink(XmlNode.Attributes["value"].Value); umlActivity.dicJudeHyperLink.Add(tag.value, tag.value); } } }
public static Dictionary <String, UmlActor> ParseActor(XmlNode node) { Dictionary <String, UmlActor> dictionaryActor = new Dictionary <string, UmlActor>(); foreach (XmlNode actorNode in node.SelectNodes("//UML:Model/*/UML:Actor", ns)) { UmlActor actor = new UmlActor(); actor.Name = actorNode.Attributes["name"].Value; actor.Id = actorNode.Attributes["xmi.id"].Value; UmlTag.ParserTag(actorNode, ns, actor); foreach (XmlNode NodeTag in actorNode.SelectNodes("//UML:Model/*/UML:Actor[@xmi.id='" + actor.Id + "']//UML:Namespace", ns)) { actor.refUseCaseDiagram = NodeTag.Attributes["xmi.idref"].Value; } dictionaryActor.Add(actor.Id, actor); } return(dictionaryActor); }
public static void ParseActivity(XmlNode node, String id, UmlActionStateDiagram activityDiagram) { foreach (XmlNode ActionStateNode in node.SelectNodes("//UML:ActivityGraph[@xmi.id='" + id + "']//UML:ActionState", ns)) { UmlActionState activity = new UmlActionState(); activity.Id = ActionStateNode.Attributes["xmi.id"].Value; activity.Name = ActionStateNode.Attributes["name"].Value; activityDiagram.dicAtivities.Add(activity.Id, activity); UmlTag.ParserTag(ActionStateNode, ns, activity); foreach (XmlNode NodeStateVertex in ActionStateNode.SelectNodes("//UML:ActionState[@xmi.id='" + activity.Id + "']//UML:StateVertex.outgoing//UML:Transition", ns)) { activity.outgoing = NodeStateVertex.Attributes["xmi.idref"].Value; } foreach (XmlNode NodeStateVertex in ActionStateNode.SelectNodes("//UML:ActionState[@xmi.id='" + activity.Id + "']//UML:StateVertex.incoming//UML:Transition", ns)) { activity.incoming = NodeStateVertex.Attributes["xmi.idref"].Value; } } }
public static Dictionary <String, UmlUseCase> ParseUseCase(XmlNode node, Dictionary <String, UmlActionStateDiagram> dicActionDiagram, XmlDocument doc) { Dictionary <String, UmlUseCase> dictionaryUseCase = new Dictionary <string, UmlUseCase>(); foreach (XmlNode useCaseNode in node.SelectNodes("//UML:Model/*/UML:UseCase", ns)) { UmlUseCase usecase = new UmlUseCase(); usecase.Name = useCaseNode.Attributes["name"].Value; usecase.Id = useCaseNode.Attributes["xmi.id"].Value; foreach (XmlNode NodeTag in node.SelectNodes("//UML:Model/*/UML:UseCase[@xmi.id='" + usecase.Id + "']//UML:TaggedValue", ns)) { try { UmlTag tag = new UmlTag(); tag.id = NodeTag.Attributes["xmi.id"].Value; tag.name = NodeTag.Attributes["tag"].Value; if (NodeTag.Attributes["value"] != null) { tag.value = NodeTag.Attributes["value"].Value; } switch (NodeTag.Attributes["tag"].Value) { case "FTpostConditions": if (NodeTag.Attributes["value"] != null) { usecase.posCondition = NodeTag.Attributes["value"].Value; } break; case "FTpreConditions": usecase.dictionaryTag.Add(tag.id, tag); break; case "FTstate": if (NodeTag.Attributes["value"] != null) { usecase.FTstate = NodeTag.Attributes["value"].Value; } break; case "FTassigned": if (NodeTag.Attributes["value"] != null) { usecase.FTassigned = NodeTag.Attributes["value"].Value; } break; case "FTreason": if (NodeTag.Attributes["value"] != null) { usecase.FTreason = NodeTag.Attributes["value"].Value; } break; case "FTiterationPath": if (NodeTag.Attributes["value"] != null) { usecase.FTiterationPath = NodeTag.Attributes["value"].Value; } break; case "FTareaPath": if (NodeTag.Attributes["value"] != null) { usecase.FTareaPath = NodeTag.Attributes["value"].Value; } break; case "FTapplication": if (NodeTag.Attributes["value"] != null) { usecase.FTapplication = NodeTag.Attributes["value"].Value; } break; case "FTcomplexity": if (NodeTag.Attributes["value"] != null) { usecase.FTcomplexity = NodeTag.Attributes["value"].Value; } break; case "FTrisks": if (NodeTag.Attributes["value"] != null) { usecase.FTrisks = NodeTag.Attributes["value"].Value; } break; case "FTtcLifecycle": if (NodeTag.Attributes["value"] != null) { usecase.FTtcLifecycle = NodeTag.Attributes["value"].Value; } break; case "FTlifecycleType": if (NodeTag.Attributes["value"] != null) { usecase.FTlifecycleType = NodeTag.Attributes["value"].Value; } break; case "FTtcTeamUsage": if (NodeTag.Attributes["value"] != null) { usecase.FTtcTeamUsage = NodeTag.Attributes["value"].Value; } break; case "jude.hyperlink": tag.value = retiraCabecalhoECauda(tag.value); UmlActionStateDiagram umlTD = usecase.getActionStateDiagram(tag.value, dicActionDiagram); usecase.dicTagHyperLinkUseCase.Add(tag.id, umlTD); break; default: DialogResult dialogResult = MessageBox.Show("Use case" + usecase.Name + " has a invalid Tag. Are you sure you want to continue executing a parsing method?", "Error", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.No) { throw new InvalidTag(); } break; } } catch (Exception e) { MessageBox.Show("Error" + e.Message); } } foreach (XmlNode include in node.SelectNodes("//UML:Model/*/UML:UseCase[@xmi.id='" + usecase.Id + "']//UML:UseCase.include//UML:Include", ns)) { usecase.includeList.Add(include.Attributes["xmi.idref"].Value); } dictionaryUseCase.Add(usecase.Id, usecase); } return(dictionaryUseCase); }
public static void ParseActivityDiagram(XmlDocument doc, Dictionary <String, UmlActivityDiagram> dictionaryActivityDiagram) { UmlActivityDiagram.collectJudeHyperLinksReferences(doc); foreach (XmlNode activityDiagramNode in doc.SelectNodes("//UML:Model//UML:ActivityGraph", ns)) { try { UmlActivityDiagram activityDiagram = new UmlActivityDiagram(); activityDiagram.Name = activityDiagramNode.Attributes["name"].Value; activityDiagram.Id = activityDiagramNode.Attributes["xmi.id"].Value; dictionaryActivityDiagram.Add(activityDiagram.Id, activityDiagram); foreach (XmlNode ActionStateNode in activityDiagramNode.SelectNodes("//UML:ActivityGraph[@xmi.id='" + activityDiagram.Id + "']//UML:ActionState", ns)) { UmlActivity activity = new UmlActivity(); activity.Id = ActionStateNode.Attributes["xmi.id"].Value; activity.Name = ActionStateNode.Attributes["name"].Value; foreach (XmlNode NodeHyperLink in ActionStateNode.SelectNodes("//UML:ActionState[@xmi.id='" + activity.Id + "']//UML:TaggedValue", ns)) { UmlTag tag = new UmlTag(); tag.name = NodeHyperLink.Attributes["tag"].Value; tag.id = NodeHyperLink.Attributes["xmi.id"].Value; activityDiagram.dicAtivities.Add(activity.Id, activity); String hyperLink = NodeHyperLink.Attributes["value"].Value; if (tag.name.Equals("jude.hyperlink")) { tag.hyperLink = retiraCabecalhoECauda(hyperLink); activity.dicHyperLink.Add(tag.id, tag.hyperLink); } else { activity.dictionaryTag.Add(tag.id, tag); } } foreach (XmlNode NodeStateVertex in ActionStateNode.SelectNodes("//UML:ActionState[@xmi.id='" + activity.Id + "']//UML:StateVertex.outgoing//UML:Transition", ns)) { activity.outgoing = NodeStateVertex.Attributes["xmi.idref"].Value; } foreach (XmlNode NodeStateVertex in ActionStateNode.SelectNodes("//UML:ActionState[@xmi.id='" + activity.Id + "']//UML:StateVertex.incoming//UML:Transition", ns)) { activity.incoming = NodeStateVertex.Attributes["xmi.idref"].Value; } } activityDiagram.InitialActivity = UmlInitialActivity.ParserPseudostate(activityDiagramNode, activityDiagram.Id); activityDiagram.FinalActivity = UmlFinalActivity.ParserFinalState(activityDiagramNode, activityDiagram.Id); }catch (Exception) {} } foreach (var item in dictionaryActivityDiagram.Keys) { foreach (var item2 in dictionaryActivityDiagram[item].dicAtivities.Keys) { dictionaryActivityDiagram[item].dicAtivities[item2].ActivityAssociationAtivityDiagram(dictionaryActivityDiagram); } } }