예제 #1
0
        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);
        }