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));
        }
Пример #2
0
        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;
        }
Пример #3
0
        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());
        }
Пример #4
0
 void IIssueCloser.CloseIssue(IssueTrackerConnectionContext context, string issueId)
 {
     ((IIssueStatusUpdater)this).ChangeIssueStatus(context, issueId, "Closed");
 }
Пример #5
0
 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;
 }
Пример #6
0
 void IReleaseManager.CreateRelease(IssueTrackerConnectionContext context)
 {
     this.Client.CreateRelease(new JiraContext(this, context));
 }
Пример #7
0
 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" }
            );
        }
Пример #9
0
        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);
                }
            }
        }
Пример #10
0
        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);
        }
Пример #11
0
 void IIssueCloser.CloseAllIssues(IssueTrackerConnectionContext context)
 {
     this.Client.CloseAllIssues(new JiraContext(this, context));
 }
Пример #12
0
 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);
 }
Пример #16
0
        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();
        }
Пример #17
0
        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);
        }
Пример #18
0
 void IIssueCommenter.AddComment(IssueTrackerConnectionContext context, string issueId, string commentText)
 {
     this.Client.AddComment(new JiraContext(this, context), issueId, commentText);
 }
Пример #19
0
 void IIssueCloser.CloseIssue(IssueTrackerConnectionContext context, string issueId)
 {
     ((IIssueStatusUpdater)this).ChangeIssueStatus(context, issueId, "Closed");
 }
Пример #20
0
 void IIssueStatusUpdater.ChangeIssueStatus(IssueTrackerConnectionContext context, string issueId, string issueStatus)
 {
     this.Client.TransitionIssue(new JiraContext(this, context), issueId, issueStatus);
 }
Пример #21
0
 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" }
         );
     }
 }