Ejemplo n.º 1
0
        private void DisplayInfoForTheUser(ProgressChangedEventArgs e)
        {
            OwnUserState userState = e.UserState as OwnUserState;

            labelInfo.Text = userState.Status;
            if (userState.UpdateNeeded == true)
            {
                userState.UpdateNeeded = false;
            }
        }
Ejemplo n.º 2
0
        internal WorkItemCollection GetWorkItemCollection(string startDate)
        {
            // It is needed, to get all the WIs from the start date because it is possible, that somebody made a change out of the selected time period for the WI.
            string wiql = "SELECT * FROM WorkItems WHERE [System.TeamProject] ='TIA' AND " +
                          "([System.WorkItemType] = 'Request' AND [Siemens.Industry.Common.Component] CONTAINS 'PLF') AND " +
                          "[System.ChangedDate] >= '" + startDate + "'";
            OwnUserState userState = new OwnUserState()
            {
                Status = "Getting WorkItems..."
            };

            BackgroundWorker.ReportProgress(-1, userState);
            WorkItemCollection workItemCollection = Utils.TfsUtils.QueryWorkItems(wiql);

            return(workItemCollection);
        }
Ejemplo n.º 3
0
        private WorkItemCollection GetWorkItemCollection()
        {
            // It is needed, to get all the WIs from the start date because it is possible, that somebody made a change out of the selected time period for the WI.
            string wiql = "SELECT * FROM WorkItems WHERE [System.TeamProject] ='TIA' AND " +
                          "(([System.WorkItemType] = 'Task'  AND" + "[System.AreaPath] UNDER 'TIA\\Development\\HMI Runtime Innovation Line' ) OR " +
                          "([System.WorkItemType] = 'Request' AND [Siemens.Industry.Common.Component] CONTAINS 'PLF')) AND " +
                          "[System.ChangedDate] >= '" + dateTimePicker_StartDate.Value.Date.ToString() + "'";
            OwnUserState userState = new OwnUserState()
            {
                Status = "Getting WorkItems..."
            };

            m_BackgroundWorker.ReportProgress(-1, userState);
            WorkItemCollection workItemCollection = Utils.TfsUtils.QueryWorkItems(wiql);

            return(workItemCollection);
        }
Ejemplo n.º 4
0
        void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            if (e.ProgressPercentage < 0)
            {
                toolStripProgressBar_Info.Style = ProgressBarStyle.Marquee;
                TaskbarProgress.SetState(this.Handle, TaskbarProgress.TaskbarStates.Indeterminate);
            }
            else
            {
                toolStripProgressBar_Info.Style = ProgressBarStyle.Blocks;
                toolStripProgressBar_Info.Value = e.ProgressPercentage;
                TaskbarProgress.SetValue(this.Handle, e.ProgressPercentage, 100);
            }

            OwnUserState userState = e.UserState as OwnUserState;

            labelInfo.Text = userState.Status;
            if (userState.UpdateNeeded == true)
            {
                dataGridView_Result.Refresh();
                userState.UpdateNeeded = false;
            }
        }
Ejemplo n.º 5
0
        private void ParseTFSHistory(WorkItemCollection workItemCollection)
        {
            if (workItemCollection != null)
            {
                DataRow      dr;
                WorkItem     workItem;
                OwnUserState userState = new OwnUserState();
                double       savedCompletedWorkOriginalValue, completedDelta, remainingDelta, rqEffort = 0;
                Field        savedRemainingWorkField, remainingWorkField, completedWorkField;
                DateTime     changeDate, startDate = dateTimePicker_StartDate.Value.Date, endDate = dateTimePicker_EndDate.Value.Date.AddHours(23.9999);
                bool         hackInProgress, isRequest, isOpenIssue = false, rqEffortFound = false;
                int          foundItems = 0, lastrow = 0, workItemCount = workItemCollection.Count;
                string       changedBy, history, authenticatedUser = Utils.TfsUtils.AuthorizedUser;
                // Completed(Original)Value, Remaining...
                object COV, CV, ROV, RV;

                userState.Status = "Starting to parse...";
                m_BackgroundWorker.ReportProgress(0, userState);

                for (int i = 0; i < workItemCount; i++)
                {
                    if (m_BackgroundWorker.CancellationPending)
                    {
                        i = workItemCount;
                        continue;
                    }

                    workItem         = workItemCollection[i];
                    isRequest        = workItem.Type.Name.ToUpperInvariant().Equals("REQUEST");
                    isOpenIssue      = false;
                    userState.Status = string.Format("Checking {0}. Found: {1}", workItem.Id, foundItems);
                    m_BackgroundWorker.ReportProgress((i * 100) / workItemCount, userState);
                    savedCompletedWorkOriginalValue = 0;
                    savedRemainingWorkField         = null;
                    remainingDelta = 0;
                    dr             = null;
                    hackInProgress = false;

                    foreach (Revision workItemRevision in workItem.Revisions)
                    {
                        changeDate = (DateTime)workItemRevision.Fields["Changed Date"].Value;
                        changedBy  = workItemRevision.Fields["Changed By"].Value.ToString();

                        if (changedBy == authenticatedUser && changeDate >= startDate && changeDate <= endDate)
                        {
                            rqEffort      = 0;
                            rqEffortFound = false;
                            history       = workItemRevision.Fields["History"].Value.ToString().ToLowerInvariant();

                            if (isRequest)
                            {
                                isOpenIssue = workItem.Fields["Type Of Request"].Value.ToString().ToUpperInvariant() == ("OPEN ISSUE");
                                foreach (string regexPattern in m_regexPatternList)
                                {
                                    Regex  regex = new Regex(regexPattern);
                                    var    match = regex.Match(history);
                                    string hours = match.Groups["hours"].Value;
                                    if (!string.IsNullOrEmpty(hours))
                                    {
                                        if (rqEffort != 0)
                                        {
                                            MessageBox.Show(string.Format("An RQ effort: {0} in Work Item {1}, in revision {2} is already parsed either for ITEST or DEV.\nDuplicate entry in one revision?", rqEffort, workItem.Id, workItemRevision.Index),
                                                            "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                        }

                                        rqEffortFound = true;
                                        hours         = hours.Replace(".", DecimalSeparator);
                                        hours         = hours.Replace(",", DecimalSeparator);
                                        if (!double.TryParse(hours, out rqEffort))
                                        {
                                            MessageBox.Show(string.Format("Unable to parse RQ effort: {0} in Work Item {1}, in revision {2}", hours, workItem.Id, workItemRevision.Index),
                                                            "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                        }
                                    }
                                }
                            }

                            remainingWorkField = workItemRevision.Fields["Remaining Work"];
                            completedWorkField = workItemRevision.Fields["Completed Work"];
                            COV            = completedWorkField.OriginalValue;
                            CV             = completedWorkField.Value;
                            ROV            = remainingWorkField.OriginalValue;
                            RV             = remainingWorkField.Value;
                            completedDelta = 0;

                            if (((COV != null || hackInProgress || isRequest) &&
                                 CV != COV) || rqEffortFound)
                            {
                                if (!rqEffortFound && CV != null)
                                {
                                    if (COV != null)
                                    {
                                        completedDelta = (double)CV - (double)COV;
                                    }
                                    else if (hackInProgress)
                                    {
                                        completedDelta     = (double)CV - savedCompletedWorkOriginalValue;
                                        remainingWorkField = savedRemainingWorkField;
                                        savedCompletedWorkOriginalValue = 0;
                                        savedRemainingWorkField         = null;
                                        hackInProgress = false;
                                    }
                                    else if (isRequest)
                                    {
                                        completedDelta = (double)CV;
                                    }
                                }
                                else if (!rqEffortFound)
                                {
                                    // Hack: the user changed the the origial meaningful value to 'null'. Probably the user cleared the field accidentally, and in a next revision it is fixed.
                                    if (workItemRevision.Index == workItem.Revisions.Count - 1)
                                    {
                                        // This is the last revision: not yet fixed.
                                        // Add error line.
                                        dr = AddResultTableRow(workItem, workItemRevision, changedBy, remainingWorkField, completedWorkField, null, null, null, "completedWorkField.Value == null and this is the last revision", false);
                                        // Skip this.
                                        continue;
                                    }
                                    else
                                    {
                                        hackInProgress = true;
                                        savedCompletedWorkOriginalValue = (double)COV;
                                        savedRemainingWorkField         = remainingWorkField;
                                        continue;
                                    }
                                }
                                else if (rqEffortFound)
                                {
                                    completedDelta = rqEffort;
                                }

                                foundItems++;
                                userState.UpdateNeeded = true;

                                if (!isRequest && !rqEffortFound)
                                {
                                    if (ROV != null && RV != null)
                                    {
                                        remainingDelta = (double)RV - (double)ROV;
                                    }
                                    else if (RV != null)
                                    {
                                        remainingDelta = (double)RV;
                                    }
                                    else if (ROV != null)
                                    {
                                        remainingDelta = (double)ROV;
                                    }
                                    else
                                    {
                                        remainingDelta = 0;
                                    }
                                }

                                dr      = AddResultTableRow(workItem, workItemRevision, changedBy, remainingWorkField, completedWorkField, completedDelta, remainingDelta, rqEffort, string.Empty, isOpenIssue);
                                lastrow = UpdateSumTable(lastrow, changedBy, completedDelta, rqEffort, isOpenIssue);
                            }
                        }
                    }
                    if (hackInProgress)
                    {
                        // Hack not finished. Add error line.
                        dr             = AddResultTableRow(workItem, null, null, null, null, null, null, null, string.Format("The CompletedWork Value was nulled, although there was a CompletedWork OriginalValue with {0} ", savedCompletedWorkOriginalValue), false);
                        hackInProgress = false;
                    }
                }
            }
        }
Ejemplo n.º 6
0
        // TODO: This should be done in some nicer way :S LINQ maybe?
        private void ParseTFSHistory(WorkItemCollection workItemCollection, DateTime startDate, DateTime endDate)
        {
            if (workItemCollection != null)
            {
                WorkItem     workItem;
                OwnUserState userState   = new OwnUserState();
                double       itestEffort = 0;
                DateTime     changeDate;
                endDate = endDate.AddHours(23.9999);
                bool   isOpenIssue = false;
                int    foundItems = 0, workItemCount = workItemCollection.Count;
                string changedBy, history;
                userState.Status = "Starting to parse...";
                BackgroundWorker.ReportProgress(0, userState);

                for (int i = 0; i < workItemCount; i++)
                {
                    if (BackgroundWorker.CancellationPending)
                    {
                        i = workItemCount;
                        continue;
                    }

                    workItem         = workItemCollection[i];
                    isOpenIssue      = false;
                    userState.Status = string.Format("Checking {0}. Found: {1}", workItem.Id, foundItems);
                    BackgroundWorker.ReportProgress((i * 100) / workItemCount, userState);

                    foreach (Revision workItemRevision in workItem.Revisions)
                    {
                        changeDate = (DateTime)workItemRevision.Fields["Changed Date"].Value;
                        changedBy  = workItemRevision.Fields["Changed By"].Value.ToString();

                        if (Parent.Users.Contains(changedBy) && changeDate >= startDate && changeDate <= endDate)
                        {
                            itestEffort = 0;
                            history     = workItemRevision.Fields["History"].Value.ToString().ToLowerInvariant();

                            isOpenIssue = workItem.Fields["Type Of Request"].Value.ToString().ToUpperInvariant() == ("OPEN ISSUE");
                            Regex  regex = new Regex(@"itest.e(f+)ort?:.?(?<hours>(\d+[\.|\,]?)\d*)");
                            var    match = regex.Match(history);
                            string hours = match.Groups["hours"].Value;
                            if (!string.IsNullOrEmpty(hours))
                            {
                                hours = hours.Replace(".", DecimalSeparator);
                                hours = hours.Replace(",", DecimalSeparator);
                                if (!double.TryParse(hours, out itestEffort))
                                {
                                    MessageBox.Show(string.Format("Unable to parse ITEST effort: {0} in Work Item {1}, in revision {2}", hours, workItem.Id, workItemRevision.Index),
                                                    "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                                else
                                {
                                    foundItems++;
                                    userState.UpdateNeeded = true;
                                }

                                Parent.UpdateSumValue(itestEffort, isOpenIssue);
                            }
                        }
                    }
                }
            }
        }