/// <summary> /// Initializes a new instance of the MainViewModel class. /// </summary> public MainViewModel() { var address = PromptUserData.Prompt("Server Address", "Insert Server Address", "http://sonar"); if (address == null) { throw new Exception("Server Address must not be empty"); } using (var dialog = new Security.Windows.Forms.UserCredentialsDialog()) { if (dialog.ShowDialog() == DialogResult.OK) { if (dialog.SaveChecked) { dialog.ConfirmCredentials(true); } AuthtenticationHelper.EstablishAConnection(new SonarRestService(new JsonSonarConnector()), address, dialog.User, dialog.PasswordToString()); } else { throw new Exception("user name and pass should be set"); } } this.SonarQubeView = new SonarQubeViewModel("standalone", null); this.SonarQubeView.InitModelFromPackageInitialization(new VsEnvironmentHelper(), new VsStatusBarDummy(), new ServiceProviderDummy(), Environment.CurrentDirectory); }
/// <summary> /// Adjusts the effort for rule. /// </summary> private void AdjustEffortForRule() { var minutes = PromptUserData.Prompt("effort in minutes", "new value in minutes"); var min = 0; if (string.IsNullOrEmpty(minutes) || !int.TryParse(minutes, out min)) { return; } foreach (var item in this.model.SelectedItems) { var issue = item as Issue; var rule = this.analyser.GetRuleForKey(issue.Rule, this.assignProject); if (rule == null) { continue; } var dic = new Dictionary <string, string> { { "debt_remediation_fn_type", rule.RemediationFunction.ToString() } }; if (rule.RemediationFunction.Equals(RemediationFunction.LINEAR) || rule.RemediationFunction.Equals(RemediationFunction.LINEAR_OFFSET)) { dic.Add("debt_remediation_fy_coeff", minutes + "min"); } if (rule.RemediationFunction.Equals(RemediationFunction.CONSTANT_ISSUE) || rule.RemediationFunction.Equals(RemediationFunction.LINEAR_OFFSET)) { if (rule.RemediationFunction.Equals(RemediationFunction.LINEAR_OFFSET)) { minutes = PromptUserData.Prompt("Adjust a new offset for the rule", "new value in minutes"); if (string.IsNullOrEmpty(minutes) || !int.TryParse(minutes, out min)) { return; } } dic.Add("debt_remediation_fn_offset", minutes + "min"); } List <string> reply = this.rest.UpdateRule(AuthtenticationHelper.AuthToken, rule.Key, dic); if (reply != null && reply.Count != 0) { this.manager.ReportMessage(new Message { Id = "SetSqaleMenu", Data = "Failed to change effort value for: " + issue.Rule + " : do you have the correct permissions" }); } else { this.manager.ReportMessage(new Message { Id = "SetSqaleMenu", Data = "New value for effort was taken into use" }); } } }
/// <summary> /// Called when [save as search command]. /// </summary> /// <exception cref="System.NotImplementedException"></exception> private void OnSaveAsSearchCommand() { var search = this.GetCurrentSearch(); var data = PromptUserData.Prompt("Save as....", "Save as...."); if (string.IsNullOrEmpty(data)) { return; } search.Name = data; this.savedSearchModel.SaveSearch(search); }
/// <summary> /// Called when [attache to issue tracker]. /// </summary> private void OnAttachToIssueTracker() { if (this.model.SelectedItems == null || this.model.SelectedItems.Count == 0) { return; } try { if (this.CommandText.Equals("new issue and attach")) { var issues = this.model.SelectedItems.Cast <Issue>().ToList(); string id = string.Empty; var replydata = this.issueTrackerPlugin.AttachToNewDefect(issues, out id); // update issues foreach (var issue in issues) { issue.IssueTrackerId = id; } if (string.IsNullOrEmpty(replydata)) { this.manager.ReportMessage(new Message { Id = "IssueTrackerMenu", Data = "Failed to create defect" }); return; } var builder = new StringBuilder(); builder.AppendLine(CommentMessageForIssue + id); builder.AppendLine(replydata); this.rest.CommentOnIssues(this.config, issues, builder.ToString()); } if (this.CommandText.Equals("attach to existent")) { var id = PromptUserData.Prompt("Enter Item Id", "Issue Tracker Id"); if (string.IsNullOrEmpty(id)) { return; } try { var issues = this.model.SelectedItems.Cast <Issue>().ToList(); var replydata = this.issueTrackerPlugin.AttachToExistentDefect(issues, id); if (string.IsNullOrEmpty(replydata)) { this.manager.ReportMessage(new Message { Id = "IssueTrackerMenu", Data = "Failed to attach to defect" }); return; } // update issues foreach (var issue in issues) { issue.IssueTrackerId = id; } var builder = new StringBuilder(); builder.AppendLine(CommentMessageForIssue + id); builder.AppendLine(replydata); this.rest.CommentOnIssues(this.config, issues, builder.ToString()); } catch (Exception ex) { this.manager.ReportMessage(new Message { Id = "IssueTrackerMenu", Data = "Failed to attach to defect: " + ex.Message }); this.manager.ReportException(ex); return; } } if (this.CommandText.Equals("show info")) { var id = this.parent.CommandText; if (!this.parent.parent.defectCache.ContainsKey(id)) { try { var defect = this.issueTrackerPlugin.GetDefect(id); this.parent.parent.defectCache.Add(id, defect); } catch (Exception ex) { this.manager.ReportMessage(new Message { Id = "IssueTrackerMenu", Data = "Failed to get info for defect: " + ex.Message }); this.manager.ReportException(ex); return; } } var item = this.parent.parent.defectCache[id]; string message = string.Format("Summary:\t\t {0}\r\nStatus:\t\t {1}\r\nId:\t {2}\r\n", item.Summary, item.Status, item.Id); MessageDisplayBox.DisplayMessage(message, string.Empty); } } catch (Exception ex) { UserExceptionMessageBox.ShowException("Cannot Perform Operation in Plan: " + ex.Message + " please check vs output log for detailed information", ex); } }