Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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;
                }
            }
        }
Ejemplo n.º 5
0
        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);
                }
            }
        }