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); }
void LinkFieldNodeToDatabaseNode(AdlibNode databaseNode, AdlibNode fieldNode) { if (databaseNode != null && fieldNode != null) { AddEdge(databaseNode, AdlibEdgeType.HasField, fieldNode); } }
void ColorEdges(AdlibNode node) { foreach (var edge in node.Edges) { edge.Traversed = true; var child = edge.Target; ColorEdges(child); } }
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); } }
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]); } } }
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)); }
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));