Пример #1
0
        /// <summary>
        /// Get Items By Selected Matrix Filter
        /// </summary>
        /// <param name="projectName">
        /// project Name
        /// </param>
        /// <returns>
        /// Work Item list
        /// </returns>
        private MatrixData GetItemsByMatrixFilter(string projectName)
        {
            var data = new MatrixData();

            string rowStateCondition     = BuildQueryStateCondition(matrixReportData.StateRowsSelectedItem);
            string columnStateCondition  = BuildQueryStateCondition(matrixReportData.StateColumnsSelectedItem);
            string relatedStateCondition = matrixReportData.RelatedSelectedItem == ResourceHelper.GetResourceString("ALL") ? string.Empty : string.Format("[System.Links.LinkType] = '{0}'", matrixReportData.RelatedSelectedItem);
            string dateCondition         = BuildQueryDateCondition();

            string queryText;

            if (matrixReportData.IncludeNotLinkedItems)
            {
                // Rows
                queryText = BuildQuery(projectName, matrixReportData.RowsTypesSelectedItem, rowStateCondition, dateCondition, true, string.Empty);
                data.Rows = tfsManager.ExecuteQuery(queryText).Cast <WorkItem>().ToList();

                // Columns
                queryText    = BuildQuery(projectName, matrixReportData.ColumnsTypesSelectedItem, columnStateCondition, dateCondition, true, string.Empty);
                data.Columns = tfsManager.ExecuteQuery(queryText).Cast <WorkItem>().ToList();
            }
            else
            {
                // columns
                queryText = BuildQuery(projectName, matrixReportData.ColumnsTypesSelectedItem, columnStateCondition, dateCondition, false);
                var q = new Query(tfsManager.ItemsStore, queryText);
                WorkItemLinkInfo[] colIds = q.RunLinkQuery();

                // rows
                queryText = BuildQuery(projectName, matrixReportData.RowsTypesSelectedItem, rowStateCondition, dateCondition, false, relatedStateCondition);
                q         = new Query(tfsManager.ItemsStore, queryText);
                WorkItemLinkInfo[] rowIds = q.RunLinkQuery();

                foreach (WorkItemLinkInfo rowId in rowIds)
                {
                    foreach (WorkItemLinkInfo colId in colIds)
                    {
                        if (colId.TargetId == rowId.SourceId && colId.SourceId != 0)
                        {
                            var rowItem = tfsManager.GetWorkItem(rowId.SourceId);
                            var colItem = tfsManager.GetWorkItem(colId.SourceId);
                            if (IsLinked(rowItem, colItem))
                            {
                                if (data.Rows.All(t => t.Id != rowId.SourceId))
                                {
                                    data.Rows.Add(rowItem);
                                }

                                if (data.Columns.All(t => t.Id != colId.SourceId))
                                {
                                    data.Columns.Add(colItem);
                                }
                            }
                        }
                    }
                }
            }

            return(data);
        }
Пример #2
0
        /// <summary>
        /// Generate Traceability Matrix Report
        /// </summary>
        /// <param name="project">
        /// Project Name
        /// </param>
        public void GenerateMatrix(string project)
        {
            var popup = new MatrixReport();

            InitMatrixPopUp(popup, project);

            popup.Create(null, Icons.TraceabilityMatrix);

            if (!popup.IsCanceled)
            {
                matrixReportData.ColumnsTypesSelectedItem = popup.HorizontalTypes.SelectedItem.ToString();
                matrixReportData.RowsTypesSelectedItem    = popup.VerticalTypes.SelectedItem.ToString();
                matrixReportData.RelatedSelectedItem      = popup.Relateds.SelectedItem.ToString();

                if (popup.chkIncludeNotLinked.IsChecked != null)
                {
                    matrixReportData.IncludeNotLinkedItems = popup.chkIncludeNotLinked.IsChecked.Value;
                }

                matrixReportData.DateFrom = popup.dateFrom.SelectedDate;
                matrixReportData.DateTo   = popup.dateTo.SelectedDate;
                matrixReportData.StateColumnsSelectedItem = popup.GetSelectedStates(popup.StateHorisontal);
                matrixReportData.StateRowsSelectedItem    = popup.GetSelectedStates(popup.StateVertical);

                progressDialog = new ProgressDialog();
                string uiCulture = Thread.CurrentThread.CurrentUICulture.ToString();
                progressDialog.Execute(
                    (cancelTokenSource) =>
                {
                    Thread.CurrentThread.CurrentUICulture = new CultureInfo(uiCulture);
                    cancellationTokenSource = cancelTokenSource;
                    var workItemsInColumn   = new List <WorkItem>();
                    var workItemsInRow      = new List <WorkItem>();
                    if (!cancellationTokenSource.IsCancellationRequested)
                    {
                        progressDialog.UpdateProgress(0, ResourceHelper.GetResourceString("MSG_RETRIEVING_DATA"), true);

                        MatrixData data = GetItemsByMatrixFilter(project);

                        workItemsInRow    = data.Rows;
                        workItemsInColumn = data.Columns;

                        if (workItemsInRow.Count == 0 || workItemsInColumn.Count == 0)
                        {
                            MessageBox.Show(ResourceHelper.GetResourceString("MSG_DATA_NOT_AVAILABLE"), string.Empty, MessageBoxButton.OK, MessageBoxImage.Information);
                            return;
                        }

                        workItemsInRow.Sort((x, y) => x.Id.CompareTo(y.Id));
                        workItemsInColumn.Sort((x, y) => x.Id.CompareTo(y.Id));

                        DrawMatrixReport(project, workItemsInRow, workItemsInColumn);
                    }
                });

                progressDialog.Create(string.Format(ResourceHelper.GetResourceString("MSG_TRACEBILITY_MATRIX"), project), Icons.TraceabilityMatrix);
            }
        }
Пример #3
0
        /// <summary>
        /// Get Items By Selected Matrix Filter
        /// </summary>
        /// <param name="projectName">
        /// project Name
        /// </param>
        /// <returns>
        /// Work Item list
        /// </returns>
        private MatrixData GetItemsByMatrixFilter(string projectName)
        {
            var data = new MatrixData();

            string rowStateCondition = BuildQueryStateCondition(matrixReportData.StateRowsSelectedItem);
            string columnStateCondition = BuildQueryStateCondition(matrixReportData.StateColumnsSelectedItem);
            string relatedStateCondition = matrixReportData.RelatedSelectedItem == ResourceHelper.GetResourceString("ALL") ? string.Empty : string.Format("[System.Links.LinkType] = '{0}'", matrixReportData.RelatedSelectedItem);
            string dateCondition = BuildQueryDateCondition();

            string queryText;
            if (matrixReportData.IncludeNotLinkedItems)
            {
                // Rows
                queryText = BuildQuery(projectName, matrixReportData.RowsTypesSelectedItem, rowStateCondition, dateCondition, true, string.Empty);
                data.Rows = tfsManager.ExecuteQuery(queryText).Cast<WorkItem>().ToList();

                // Columns
                queryText = BuildQuery(projectName, matrixReportData.ColumnsTypesSelectedItem, columnStateCondition, dateCondition, true, string.Empty);
                data.Columns = tfsManager.ExecuteQuery(queryText).Cast<WorkItem>().ToList();
            }
            else
            {
                // columns
                queryText = BuildQuery(projectName, matrixReportData.ColumnsTypesSelectedItem, columnStateCondition, dateCondition, false);
                var q = new Query(tfsManager.ItemsStore, queryText);
                WorkItemLinkInfo[] colIds = q.RunLinkQuery();

                // rows
                queryText = BuildQuery(projectName, matrixReportData.RowsTypesSelectedItem, rowStateCondition, dateCondition, false, relatedStateCondition);
                q = new Query(tfsManager.ItemsStore, queryText);
                WorkItemLinkInfo[] rowIds = q.RunLinkQuery();

                foreach (WorkItemLinkInfo rowId in rowIds)
                {
                    foreach (WorkItemLinkInfo colId in colIds)
                    {
                        if (colId.TargetId == rowId.SourceId && colId.SourceId != 0)
                        {
                            var rowItem = tfsManager.GetWorkItem(rowId.SourceId);
                            var colItem = tfsManager.GetWorkItem(colId.SourceId);
                            if (IsLinked(rowItem, colItem))
                            {
                                if (data.Rows.All(t => t.Id != rowId.SourceId))
                                {
                                    data.Rows.Add(rowItem);
                                }

                                if (data.Columns.All(t => t.Id != colId.SourceId))
                                {
                                    data.Columns.Add(colItem);
                                }
                            }
                        }
                    }
                }
            }

            return data;
        }