예제 #1
0
        internal static void AddEdge(AdlibNode source, AdlibEdgeType type, AdlibNode target)
        {
            var edge = new AdlibEdge(source, type, target);

            AddSingleEdge(source.Edges, edge);
            AddSingleEdge(target.ReverseEdges, edge);
        }
예제 #2
0
 void LinkFieldNodeToDatabaseNode(AdlibNode databaseNode, AdlibNode fieldNode)
 {
     if (databaseNode != null && fieldNode != null)
     {
         AddEdge(databaseNode, AdlibEdgeType.HasField, fieldNode);
     }
 }
예제 #3
0
 void ColorEdges(AdlibNode node)
 {
     foreach (var edge in node.Edges)
     {
         edge.Traversed = true;
         var child = edge.Target;
         ColorEdges(child);
     }
 }
예제 #4
0
 void AddDGMLLinks(AdlibNode node, XElement dGMLNodes, XElement dGMLLinks)
 {
     foreach (var edge in node.Edges)
     {
         var childNode = edge.Target;
         dGMLLinks.Add(CreateDGMLLink(edge));
         AddDGMLLinks(childNode, dGMLNodes, dGMLLinks);
     }
 }
예제 #5
0
 internal void LinkScreenToNode(TopAdlibObject adlibObject, AdlibNode node, string screen, AdlibEdgeType edgeType)
 {
     if (!string.IsNullOrWhiteSpace(screen))
     {
         var path = ScreenPath(adlibObject, screen);
         if (screens.ContainsKey(path))
         {
             AddEdge(node, edgeType, screens[path]);
         }
     }
 }
예제 #6
0
        internal void LinkMethodToNode(ApplicationInfo applicationInfo, AdlibNode dataSourceNode, MethodInfo methodInfo, ScreenList screens)
        {
            var methodNode = new MethodNode(dataSourceNode.Path, methodInfo);

            methods[methodNode.Path] = methodNode;
            AddEdge(dataSourceNode, AdlibEdgeType.HasMethod, methodNode);

            methodInfo.ListScreenList.ForEach((screen) =>
                                              screens.LinkScreenToNode(applicationInfo, dataSourceNode, screen, AdlibEdgeType.UsesListScreen));

            methodInfo.DetailScreenList.ForEach((screen) =>
                                                screens.LinkScreenToNode(applicationInfo, dataSourceNode, screen, AdlibEdgeType.UsesListScreen));
        }
예제 #7
0
 static XElement CreateDGMLNode(AdlibNode node) =>
 new XElement(dgmlNS + "Node",
              new XAttribute("Id", node.Path),
              new XAttribute("Label", node.Name),
              new XAttribute("Category", node.GetType().Name));