Пример #1
0
        public Project GetProject(string projectName)
        {
            var cachedProject = _cachedProjects.Where(x => x.Name == projectName).FirstOrDefault();

            if (cachedProject != null)
            {
                return(cachedProject);
            }

            var request = new HudsonProjectRequest {
                Name = projectName
            };

            var response = ProjectRepository.Get(request);

            BuildJob lastbuild = new NullBuildJob();

            if (response.LastCompletedBuild.Count > 0)
            {
                lastbuild = GetBuild(response.Name, response.LastCompletedBuild.First().Number);
            }

            BuildJob successfulbuild = new NullBuildJob();

            if (response.LastSuccessfulBuild.Count > 0)
            {
                successfulbuild = GetBuild(response.Name, response.LastSuccessfulBuild.First().Number);
            }

            BuildJob completedbuild = new NullBuildJob();

            if (response.LastCompletedBuild.Count > 0)
            {
                successfulbuild = GetBuild(response.Name, response.LastCompletedBuild.First().Number);
            }

            BuildJob currentbuild = new NullBuildJob();

            if (response.LastBuild.Count > 0)
            {
                successfulbuild = GetBuild(response.Name, response.LastBuild.First().Number);
            }

            var upstreamProjects = response.UpstreamProjects
                                   .Select(x => GetProject(x.Name));

            var downstreamProjects = response.DownstreamProjects
                                     .Select(x => GetProject(x.Name));

            var queue = GetQueue();

            var project = ProjectMapper.FromHudsonAPI(response, lastbuild, successfulbuild, completedbuild, currentbuild,
                                                      upstreamProjects, downstreamProjects, queue);

            _cachedProjects.Add(project);

            return(project);
        }
        public Project GetProject(string projectName)
        {
            var cachedProject = _cachedProjects.Where(x => x.Name == projectName).FirstOrDefault();
            if (cachedProject != null) return cachedProject;

            var request = new HudsonProjectRequest { Name = projectName };

            var response = ProjectRepository.Get(request);

            BuildJob lastbuild = new NullBuildJob();
            if (response.LastCompletedBuild.Count > 0)
                lastbuild = GetBuild(response.Name, response.LastCompletedBuild.First().Number);

            BuildJob successfulbuild = new NullBuildJob();
            if (response.LastSuccessfulBuild.Count > 0)
                successfulbuild = GetBuild(response.Name, response.LastSuccessfulBuild.First().Number);

            BuildJob completedbuild = new NullBuildJob();
            if (response.LastCompletedBuild.Count > 0)
                successfulbuild = GetBuild(response.Name, response.LastCompletedBuild.First().Number);

            BuildJob currentbuild = new NullBuildJob();
            if (response.LastBuild.Count > 0)
                successfulbuild = GetBuild(response.Name, response.LastBuild.First().Number);

            var upstreamProjects = response.UpstreamProjects
                                                                            .Select(x => GetProject(x.Name));

            var downstreamProjects = response.DownstreamProjects
                                                                                .Select(x => GetProject(x.Name));

            var queue = GetQueue();

            var project = ProjectMapper.FromHudsonAPI(response, lastbuild, successfulbuild, completedbuild, currentbuild,
                                                      upstreamProjects, downstreamProjects, queue);
            _cachedProjects.Add(project);

            return project;
        }