public override IEnumerable<IIssueTrackerIssue> EnumerateIssues(IssueTrackerConnectionContext context) { var filter = this.GetFilter(context); return this.GitHub .EnumIssues(context.ReleaseNumber, filter.Owner, filter.Repository) .Select(i => new GitHubIssue(i)); }
public override IEnumerable<IIssueTrackerIssue> EnumerateIssues(IssueTrackerConnectionContext context) { if (context == null) throw new ArgumentNullException("context"); var remote = this.GetRemote(); var wiql = this.GetWiql(context); var remoteAgent = this.Agent.GetService<IRemoteMethodExecuter>(); var filter = (TfsIssueTrackingApplicationFilter)context.ApplicationConfiguration ?? this.legacyFilter; string iteration = null; if (string.IsNullOrWhiteSpace(this.CustomReleaseNumberFieldName) && string.IsNullOrWhiteSpace(this.CustomWiql) && string.IsNullOrWhiteSpace(filter.CustomWiql)) iteration = context.ReleaseNumber; var issues = remoteAgent.InvokeFunc(remote.GetIssues, filter.CollectionId, filter.CollectionName, wiql, iteration); foreach (var issue in issues) issue.RenderAsHtml = this.AllowHtmlIssueDescriptions; return issues; }
private string GetWiql(IssueTrackerConnectionContext context) { if (!string.IsNullOrWhiteSpace(this.CustomWiql)) { return(this.CustomWiql); } var filter = (TfsIssueTrackingApplicationFilter)context.ApplicationConfiguration ?? this.legacyFilter; if (!string.IsNullOrWhiteSpace(filter.CustomWiql)) { return(filter.CustomWiql); } var buffer = new StringBuilder(); buffer.Append("SELECT [System.ID] FROM WorkItems WHERE [System.TeamProject] = '"); buffer.Append(filter.ProjectName.Replace("'", "''")); buffer.Append('\''); if (!string.IsNullOrWhiteSpace(filter.AreaPath)) { buffer.Append(" AND [System.AreaPath] under '"); buffer.Append(filter.ProjectName.Replace("'", "''")); buffer.Append('\\'); buffer.Append(filter.AreaPath.Replace("'", "''")); buffer.Append('\''); } if (!string.IsNullOrWhiteSpace(context.ReleaseNumber) && !string.IsNullOrWhiteSpace(this.CustomReleaseNumberFieldName)) { buffer.Append(" AND ["); buffer.Append(this.CustomReleaseNumberFieldName); buffer.Append("] = '"); buffer.Append(context.ReleaseNumber.Replace("'", "''")); buffer.Append('\''); } return(buffer.ToString()); }
void IIssueCloser.CloseIssue(IssueTrackerConnectionContext context, string issueId) { ((IIssueStatusUpdater)this).ChangeIssueStatus(context, issueId, "Closed"); }
public JiraContext(JiraProvider provider, IssueTrackerConnectionContext c) { this.FixForVersion = c.ReleaseNumber; this.Project = new JiraProject(null, ((JiraApplicationFilter)c.ApplicationConfiguration ?? provider.legacyFilter)?.ProjectId, null); this.ClosedState = provider.ClosedState; }
void IReleaseManager.CreateRelease(IssueTrackerConnectionContext context) { this.Client.CreateRelease(new JiraContext(this, context)); }
public override IEnumerable <IIssueTrackerIssue> EnumerateIssues(IssueTrackerConnectionContext context) { return(this.Client.EnumerateIssues(new JiraContext(this, context))); }
void IIssueCloser.CloseIssue(IssueTrackerConnectionContext context, string issueId) { var filter = this.GetFilter(context); this.GitHub.UpdateIssue( issueId, filter.Owner, filter.Repository, new { state = "closed" } ); }
void IIssueCloser.CloseAllIssues(IssueTrackerConnectionContext context) { var closer = (IIssueCloser)this; foreach (var issue in this.EnumerateIssues(context)) { if (!issue.IsClosed) { this.LogDebug("Closing issue {0}...", issue.Id); closer.CloseIssue(context, issue.Id); } } }
void IIssueStatusUpdater.ChangeStatusForAllIssues(IssueTrackerConnectionContext context, string fromStatus, string toStatus) { if (context == null) throw new ArgumentNullException("context"); var remote = this.GetRemote(); var wiql = this.GetWiql(context); var remoteAgent = this.Agent.GetService<IRemoteMethodExecuter>(); var filter = (TfsIssueTrackingApplicationFilter)context.ApplicationConfiguration ?? this.legacyFilter; remoteAgent.InvokeMethod(new Action<Guid?, string, string, string, string>(remote.ChangeIssueStates), filter.CollectionId, filter.CollectionName, wiql, fromStatus, toStatus); }
void IIssueCloser.CloseAllIssues(IssueTrackerConnectionContext context) { this.Client.CloseAllIssues(new JiraContext(this, context)); }
void IIssueCloser.CloseIssue(IssueTrackerConnectionContext context, string issueId) { this.Client.CloseIssue(new JiraContext(this, context), issueId); }
private GitHubApplicationFilter GetFilter(IssueTrackerConnectionContext context) { return (GitHubApplicationFilter)context.ApplicationConfiguration ?? this.legacyFilter; }
void IReleaseManager.DeployRelease(IssueTrackerConnectionContext context) { var filter = this.GetFilter(context); this.GitHub.CloseMilestone(context.ReleaseNumber, filter.Owner, filter.Repository); }
void IIssueCommenter.AddComment(IssueTrackerConnectionContext context, string issueId, string commentText) { var filter = this.GetFilter(context); this.GitHub.CreateComment(issueId, filter.Owner, filter.Repository, commentText); }
private string GetWiql(IssueTrackerConnectionContext context) { if (!string.IsNullOrWhiteSpace(this.CustomWiql)) return this.CustomWiql; var filter = (TfsIssueTrackingApplicationFilter)context.ApplicationConfiguration ?? this.legacyFilter; if (!string.IsNullOrWhiteSpace(filter.CustomWiql)) return filter.CustomWiql; var buffer = new StringBuilder(); buffer.Append("SELECT [System.ID] FROM WorkItems WHERE [System.TeamProject] = '"); buffer.Append(filter.ProjectName.Replace("'", "''")); buffer.Append('\''); if (!string.IsNullOrWhiteSpace(filter.AreaPath)) { buffer.Append(" AND [System.AreaPath] under '"); buffer.Append(filter.ProjectName.Replace("'", "''")); buffer.Append('\\'); buffer.Append(filter.AreaPath.Replace("'", "''")); buffer.Append('\''); } if (!string.IsNullOrWhiteSpace(context.ReleaseNumber) && !string.IsNullOrWhiteSpace(this.CustomReleaseNumberFieldName)) { buffer.Append(" AND ["); buffer.Append(this.CustomReleaseNumberFieldName); buffer.Append("] = '"); buffer.Append(context.ReleaseNumber.Replace("'", "''")); buffer.Append('\''); } return buffer.ToString(); }
void IIssueStatusUpdater.ChangeIssueStatus(IssueTrackerConnectionContext context, string issueId, string issueStatus) { if (context == null) throw new ArgumentNullException("context"); if (string.IsNullOrWhiteSpace(issueId)) throw new ArgumentNullException("issueId"); var remote = this.GetRemote(); var remoteAgent = this.Agent.GetService<IRemoteMethodExecuter>(); var filter = (TfsIssueTrackingApplicationFilter)context.ApplicationConfiguration ?? this.legacyFilter; remoteAgent.InvokeAction(remote.ChangeIssueState, filter.CollectionId, filter.CollectionName, int.Parse(issueId), issueStatus); }
void IIssueCommenter.AddComment(IssueTrackerConnectionContext context, string issueId, string commentText) { this.Client.AddComment(new JiraContext(this, context), issueId, commentText); }
void IIssueStatusUpdater.ChangeIssueStatus(IssueTrackerConnectionContext context, string issueId, string issueStatus) { this.Client.TransitionIssue(new JiraContext(this, context), issueId, issueStatus); }
void IIssueStatusUpdater.ChangeStatusForAllIssues(IssueTrackerConnectionContext context, string fromStatus, string toStatus) { this.Client.TransitionIssuesInStatus(new JiraContext(this, context), fromStatus, toStatus); }
void IIssueCloser.CloseAllIssues(IssueTrackerConnectionContext context) { var issues = this.EnumerateIssues(context).ToList(); var filter = this.GetFilter(context); foreach (var issue in issues) { this.GitHub.UpdateIssue( issue.Id, filter.Owner, filter.Repository, new { state = "closed" } ); } }