コード例 #1
0
        public override List <ProjectDescriptor> GetProjectDescriptions()
        {
            List <ProjectDescriptor> result = new List <ProjectDescriptor>();

            Task <ProjectSearchResponse> task = _jiraClient.GetJiraProjectsAsync();

            task.Wait();

            ProjectSearchResponse projectSearchResponse = task.Result;

            if (projectSearchResponse != null)
            {
                foreach (Project jiraProject in projectSearchResponse.Values)
                {
                    string projectID = JiraGuidConverter.ConvertToSpecIfGuid(jiraProject.Self, jiraProject.ID);

                    ProjectDescriptor projectDescriptor = new ProjectDescriptor
                    {
                        ID    = projectID,
                        Title = new List <MultilanguageText> {
                            new MultilanguageText(jiraProject.Name)
                        },
                        Generator        = _url,
                        GeneratorVersion = "Jira REST API 2",
                    };

                    result.Add(projectDescriptor);
                }
            }

            return(result);
        }
コード例 #2
0
        public override Resource SaveResource(Resource resource, string projectID = null)
        {
            Resource result = null;

            if (projectID != null)
            {
                if (_dataReader is SpecIfJiraDataReader)
                {
                    SpecIfJiraDataReader dataReader = _dataReader as SpecIfJiraDataReader;

                    Project jiraProject = dataReader.GetJiraProjectInfo(projectID);

                    string jiraTypeID = GetJiraTypeFromSpecIfResource(resource, projectID);

                    if (jiraProject != null && jiraTypeID != null)
                    {
                        string title = resource.GetPropertyValue("dcterms:title", _metadataReader);

                        string description = resource.GetPropertyValue("dcterms:description", _metadataReader);

                        SpecIfToJiraConverter specIfToJiraConverter = new SpecIfToJiraConverter();

                        Issue newIssue = new Issue
                        {
                            Fields = new Fields
                            {
                                Project = new Project
                                {
                                    ID = jiraProject.ID
                                },
                                Summary     = title,
                                Description = specIfToJiraConverter.ConvertDescription(description),
                                IssueType   = new IssueType
                                {
                                    ID = jiraTypeID
                                }
                            }
                        };

                        Task <Issue> issueCreateTask = _jiraClient.CreateJiraIssueAsync(newIssue);

                        issueCreateTask.Wait();

                        Issue newJiraResultIssue = issueCreateTask.Result;

                        if (newJiraResultIssue != null)
                        {
                            string newIssueGuid = JiraGuidConverter.ConvertToSpecIfGuid(newJiraResultIssue.Self, newJiraResultIssue.ID);

                            result = _dataReader.GetResourceByKey(new Key(newIssueGuid));
                        }
                    }
                }
            }

            return(result);
        }
コード例 #3
0
        private void InitializeProjectInformations()
        {
            Debug.Write("Initializing Jira project informations...");

            _projectInformations = new Dictionary <string, Project>();

            Task <ProjectSearchResponse> projectsTask = _jiraClient.GetJiraProjectsAsync();

            projectsTask.Wait();

            ProjectSearchResponse projectSearchResponse = projectsTask.Result;

            if (projectSearchResponse != null)
            {
                foreach (Project project in projectSearchResponse.Values)
                {
                    Task <Project> projectTask = _jiraClient.GetJiraProjectByKeyAsync(project.Key);

                    projectTask.Wait();

                    Project projectInfo = projectTask.Result;

                    if (projectInfo != null)
                    {
                        string specIfProjectID = JiraGuidConverter.ConvertToSpecIfGuid(projectInfo.Self, projectInfo.ID);

                        _projectInformations.Add(specIfProjectID, projectInfo);
                    }
                }
            }

            _statusInformations = new List <Jira3.Status>();

            Task <List <Jira3.Status> > statusTask = _jiraClient.GetStatusesAsync();

            statusTask.Wait();

            if (statusTask.Result != null)
            {
                _statusInformations = statusTask.Result;
            }
        }
コード例 #4
0
        public override Resource GetResourceByKey(Key key)
        {
            Resource result = null;

            string issueKey = JiraGuidConverter.GetIssueIdFromSpecIfID(_url, key.ID);

            Jira3.Issue response;

            try
            {
                Task <Jira3.Issue> task = _jiraClient.GetJiraIssueAsync(issueKey);

                task.Wait();

                response = task.Result;

                //TODO: Get specific revision

                JiraToSpecIfConverter jiraToSpecIfConverter = new JiraToSpecIfConverter(_metadataReader, _statusInformations);

                result = jiraToSpecIfConverter.ConvertToResource(response);
            }
            catch (Exception exception)
            {
                Debug.WriteLine(exception);

                foreach (Resource resource in ProjectRootResources)
                {
                    if (resource.ID == key.ID && resource.Revision == key.Revision)
                    {
                        result = resource;
                        break;
                    }
                }
            }


            return(result);
        }
コード例 #5
0
        private async Task <List <Node> > CreateProjectHierarchiesAsync(bool rootNodesOnly, string projectFilter = null)
        {
            List <Node> result = new List <Node>();

            try
            {
                ProjectRootResources = new List <Resource>();

                ProjectSearchResponse projectSearchResponse = await _jiraClient.GetJiraProjectsAsync();



                foreach (Project project in projectSearchResponse.Values)
                {
                    string projectID = JiraGuidConverter.ConvertToSpecIfGuid(project.Self, project.ID);


                    if (projectFilter == null || (projectFilter != null && projectID == projectFilter))
                    {
                        string projectResourceID = "_" + SpecIfGuidGenerator.CalculateSha1Hash(project.Key);

                        Key resourceClass = new Key("RC-Hierarchy", "1.1");

                        Resource projectHierarchyResource = SpecIfDataFactory.CreateResource(resourceClass, _metadataReader);

                        projectHierarchyResource.ID       = projectResourceID;
                        projectHierarchyResource.Revision = "1";

                        projectHierarchyResource.SetPropertyValue("dcterms:title", "Jira Project " + project.Key, _metadataReader);

                        projectHierarchyResource.SetPropertyValue("dcterms:description", project.Name, _metadataReader);


                        ProjectRootResources.Add(projectHierarchyResource);


                        Node projectNode = new Node
                        {
                            ID              = projectResourceID + "_Node",
                            Revision        = "1",
                            IsHierarchyRoot = true,
                            ProjectID       = project.Key,
                            ResourceObject  = new Key(projectHierarchyResource.ID, projectHierarchyResource.Revision)
                        };

                        result.Add(projectNode);

                        if (!rootNodesOnly)
                        {
                            IssueSearchResponse issueSearchResponse = await GetProjectIssuesAsync(project.Key);

                            if (issueSearchResponse != null)
                            {
                                foreach (Issue issue in issueSearchResponse.Issues)
                                {
                                    string issueResourceID = JiraGuidConverter.ConvertToSpecIfGuid(issue.Self, issue.ID);

                                    string issueRevision = SpecIfGuidGenerator.ConvertDateToRevision(issue.Fields.Updated.Value);

                                    Node requirementNode = new Node
                                    {
                                        ID              = issueResourceID + "_Node",
                                        Revision        = "1",
                                        IsHierarchyRoot = false,
                                        ProjectID       = project.Key,
                                        ResourceObject  = new Key(issueResourceID, issueRevision)
                                    };

                                    projectNode.Nodes.Add(requirementNode);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                Debug.WriteLine(exception);
            }

            return(result);
        }