Exemplo n.º 1
0
        private void RoleReader_Read(ClassDeclarationSyntax parentNode)
        {
            var roleRegion = RegionReader.Where(r => r.RegionName.Contains("Roles")).FirstOrDefault();

            if (roleRegion != null)
            {
                foreach (var node in roleRegion.Nodes)
                {
                    if (parentNode == node.Parent)
                    {
                        var roleNodeTypeName = "";
                        var newRoleName      = "";

                        if (node.IsKind(SyntaxKind.PropertyDeclaration))
                        {
                            var roleNode = node as PropertyDeclarationSyntax;

                            var roleTypeNode = (roleNode.Type as IdentifierNameSyntax);
                            roleNodeTypeName = roleTypeNode != null?roleTypeNode.Identifier.ToString() : "";

                            newRoleName = roleNode.Identifier.ToString();
                        }
                        else if (node.IsKind(SyntaxKind.FieldDeclaration))
                        {
                            var roleNode     = node as FieldDeclarationSyntax;
                            var roleTypeNode = (roleNode.Declaration.Type as IdentifierNameSyntax);

                            roleNodeTypeName = roleTypeNode != null?roleTypeNode.Identifier.ToString() : "";

                            newRoleName = roleNode.Declaration.Variables[0].Identifier.ToString();
                        }

                        if (!String.IsNullOrEmpty(newRoleName))
                        {
                            var newRole = new DCIRole();
                            newRole.Name     = newRoleName;
                            newRole.CodeSpan = new Span(node.Span.Start, node.Span.Length);
                            ContextFileModel.AddRole(newRole);

                            RoleReader_ReadInterface(newRole, roleRegion, roleNodeTypeName, parentNode);
                            RoleReader_ReadMethods(newRole, parentNode);
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void InteractionReader_FindInteraction(DCIRole role1, SyntaxNode node)
        {
            List <DCIRole> role2List = new List <DCIRole>();

            InteractionReader_FindTargetRole(role1, node.ToString(), ref role2List);

            var assignement = node as AssignmentExpressionSyntax;

            if (assignement != null)
            {
                InteractionReader_FindTargetRole(role1, assignement.Right.ToString(), ref role2List, true);
            }

            foreach (var role2 in role2List)
            {
                var interaction = new DCIInteraction();
                interaction.Source = role1;
                interaction.Target = role2;
                interaction.Name   = node.ToString();
                ContextFileModel.AddInteraction(interaction);
            }
        }
Exemplo n.º 3
0
        private void ContextReader_Read(ClassDeclarationSyntax parentNode)
        {
            ContextFileModel.Name     = parentNode.Identifier.ToString();
            ContextFileModel.CodeSpan = new Span(parentNode.Span.Start, parentNode.Span.Length);

            var contextRegion = RegionReader.Where(r => r.RegionName.Contains("Context")).FirstOrDefault();

            if (contextRegion != null)
            {
                DCIRole contextRole = null;

                if (contextRole == null)
                {
                    contextRole          = new DCIRole();
                    contextRole.Name     = parentNode.Identifier.ToString();
                    contextRole.CodeSpan = new Span(contextRegion.RegionSpan.Start, contextRegion.RegionSpan.Length);
                    ContextFileModel.AddRole(contextRole);
                }

                foreach (var node in contextRegion.Nodes)
                {
                    if (node.IsKind(SyntaxKind.MethodDeclaration) &&
                        parentNode == node.Parent)
                    {
                        var methodNode = node as MethodDeclarationSyntax;
                        var roleMethod = new DCIRoleMethod();
                        var methodName = methodNode.Identifier.ToString();
                        roleMethod.Name     = methodName.Contains("_") ? methodName.Substring(methodName.IndexOf("_") + 1) :methodName;
                        roleMethod.CodeSpan = new Span(methodNode.Span.Start, methodNode.Span.Length);
                        contextRole.AddMethod(roleMethod);
                    }
                    else if (node.IsKind(SyntaxKind.ConstructorDeclaration) &&
                             parentNode == node.Parent)
                    {
                        contextRole.CodeSpan = new Span(node.Span.Start, node.Span.Length);
                    }
                }
            }
        }