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);
        }
Example #2
0
 public IGraphPath FindPath(Entities.WebServiceEntity.ReportQueryItemResult queryItem)
 {
     return(tblLayout.FindPath(queryItem));
 }