public static UmlInitialState ParserPseudostate(XmlNode activityDiagramNode, String id) { UmlInitialState stateBegin = new UmlInitialState(); foreach (XmlNode NodePseudostate in activityDiagramNode.SelectNodes("//UML:ActivityGraph[@xmi.id='" + id + "']//UML:Pseudostate", ns)) { stateBegin.stateInicio = NodePseudostate.Attributes["xmi.id"].Value; stateBegin.Id = NodePseudostate.Attributes["xmi.id"].Value; stateBegin.Name = NodePseudostate.Attributes["name"].Value; foreach (XmlNode NodePseudoTransition in NodePseudostate.SelectNodes("//UML:Pseudostate[@xmi.id='" + stateBegin.Id + "']//UML:StateVertex.outgoing//UML:Transition", ns)) { stateBegin.outgoing = NodePseudoTransition.Attributes["xmi.idref"].Value; } } if (stateBegin.outgoing == null) { throw new InvalidBeginNode(); } return(stateBegin); }
public static Dictionary <String, UmlActionStateDiagram> ParseActivityDiagram(XmlDocument doc) { UmlActionStateDiagram.collectJudeHyperLinksReferences(doc); Dictionary <String, UmlActionStateDiagram> dictionaryActivityDiagram = new Dictionary <string, UmlActionStateDiagram>(); foreach (XmlNode activityDiagramNode in doc.SelectNodes("//UML:Model//UML:ActivityGraph", ns)) { if (activityDiagramNode.Attributes["xmi.id"] != null) { UmlActionStateDiagram activityDiagram = new UmlActionStateDiagram(); activityDiagram.Name = activityDiagramNode.Attributes["name"].Value; activityDiagram.Id = activityDiagramNode.Attributes["xmi.id"].Value; activityDiagram.transitions = UmlTransition.ParserTransition(activityDiagramNode, activityDiagram.Id); dictionaryActivityDiagram.Add(activityDiagram.Id, activityDiagram); UmlActionState.ParseActivity(activityDiagramNode, activityDiagram.Id, activityDiagram); activityDiagram.InitialActivity = UmlInitialState.ParserPseudostate(activityDiagramNode, activityDiagram.Id); activityDiagram.FinalActivity = UmlFinalState.ParserFinalState(activityDiagramNode, activityDiagram.Id); } } foreach (var item in dictionaryActivityDiagram.Keys) { foreach (var item2 in dictionaryActivityDiagram[item].dicAtivities.Keys) { UmlActionState activity = dictionaryActivityDiagram[item].dicAtivities[item2]; foreach (String item3 in activity.dicJudeHyperLink.Keys) { //Id UML String key = UmlActionStateDiagram.dicJudeHyperLinks[item3]; UmlActionStateDiagram diagram = dictionaryActivityDiagram[key]; activity.dicMyLinkedDiagrams.Add(diagram.Id, diagram); } } } return(dictionaryActivityDiagram); }