public IGraphPath FindPath(Entities.WebServiceEntity.ReportQueryItemResult queryItem) { if (_graph == null || _graph.Paths == null) { return(null); } //gLocalViewer.Graph.Edges.Clear(); //gLocalViewer.Graph.NodeMap.Clear(); foreach (IGraphPath path in _graph.Paths) { if (path.DirectFlow.Count == queryItem.Paths.Count) { bool isFound = true; for (int i = 0; i < path.DirectFlow.Count; i++) { IGraphItem item = path.DirectFlow[i]; Entities.WebServiceEntity.ReportQueryItemPathResult pathItem = queryItem.Paths[i]; if (item.Name != pathItem.Name || item.Line != pathItem.Line || item.Column != pathItem.Column) { isFound = false; break; } } if (isFound) { return(path); } } // Check in cases when path contain 1 element, graph contain 2 else if (path.DirectFlow.Count == 2 && queryItem.Paths.Count == 1) { IGraphItem item1 = path.DirectFlow[0]; IGraphItem item2 = path.DirectFlow[1]; Entities.WebServiceEntity.ReportQueryItemPathResult pathItem = queryItem.Paths[0]; if (item1.CompareTo(item2) == 0 && item1.CompareTo(pathItem) == 0) { return(path); } } else if (path.DirectFlow.Count == 2 && queryItem.Paths.Count > 2) { GraphItem item1 = path.DirectFlow[0]; GraphItem item2 = path.DirectFlow[1]; Entities.WebServiceEntity.ReportQueryItemPathResult pathItem1 = queryItem.Paths[0]; Entities.WebServiceEntity.ReportQueryItemPathResult pathItem2 = queryItem.Paths[queryItem.Paths.Count - 1]; if (item1.CompareTo(pathItem1) == 0 && item2.CompareTo(pathItem2) == 0) { return(path); } } } return(null); }
public IGraphPath FindPath(Entities.WebServiceEntity.ReportQueryItemResult queryItem) { return(tblLayout.FindPath(queryItem)); }