public ProjectQgateAssociationQuery build() { initMembership(); initPageIndex(); initPageSize(); return new ProjectQgateAssociationQuery(this); } }
private SearchAction.Association find(DbSession dbSession, ProjectQgateAssociationQuery query) { List<ProjectQgateAssociationDto> projects = dbClient.projectQgateAssociationDao().selectProjects(dbSession, query); List<ProjectQgateAssociationDto> authorizedProjects = keepAuthorizedProjects(dbSession, projects); Paging paging = forPageIndex(query.pageIndex()) .withPageSize(query.pageSize()) .andTotal(authorizedProjects.size()); return new SearchAction.Association(toProjectAssociations(getPaginatedProjects(authorizedProjects, paging)), paging.hasNextPage()); }
@Test public void select_projects_by_query() { OrganizationDto organization = db.organizations().insert(); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); ComponentDto project1 = db.components().insertPrivateProject(organization); ComponentDto project2 = db.components().insertPrivateProject(organization); ComponentDto project3 = db.components().insertPrivateProject(organization); db.qualityGates().associateProjectToQualityGate(project1, qualityGate); db.qualityGates().associateProjectToQualityGate(project2, qualityGate); assertThat(underTest.selectProjects(dbSession, ProjectQgateAssociationQuery.builder() .qualityGate(qualityGate) .membership(ProjectQgateAssociationQuery.IN) .build())) .extracting(ProjectQgateAssociationDto::getId, ProjectQgateAssociationDto::getName, ProjectQgateAssociationDto::getGateId) .containsExactlyInAnyOrder( tuple(project1.getId(), project1.name(), qualityGate.getId().toString()), tuple(project2.getId(), project2.name(), qualityGate.getId().toString())); assertThat(underTest.selectProjects(dbSession, ProjectQgateAssociationQuery.builder() .qualityGate(qualityGate) .membership(ProjectQgateAssociationQuery.OUT) .build())) .extracting(ProjectQgateAssociationDto::getId, ProjectQgateAssociationDto::getName, ProjectQgateAssociationDto::getGateId) .containsExactlyInAnyOrder(tuple(project3.getId(), project3.name(), null)); }
@Test public void sorted_by_project_name() { OrganizationDto organization = db.organizations().insert(); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); ComponentDto project1 = db.components().insertPrivateProject(organization, p -> p.setName("Project One")); ComponentDto project2 = db.components().insertPrivateProject(organization, p -> p.setName("Project Two")); ComponentDto project3 = db.components().insertPrivateProject(organization, p -> p.setName("Project Three")); assertThat(underTest.selectProjects(dbSession, ProjectQgateAssociationQuery.builder() .qualityGate(qualityGate) .build())) .extracting(ProjectQgateAssociationDto::getId) .containsExactly(project1.getId(), project3.getId(), project2.getId()); }
@Test public void search_by_project_name() { OrganizationDto organization = db.organizations().insert(); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); ComponentDto project1 = db.components().insertPrivateProject(organization, p -> p.setName("Project One")); ComponentDto project2 = db.components().insertPrivateProject(organization, p -> p.setName("Project Two")); ComponentDto project3 = db.components().insertPrivateProject(organization, p -> p.setName("Project Three")); db.qualityGates().associateProjectToQualityGate(project1, qualityGate); db.qualityGates().associateProjectToQualityGate(project2, qualityGate); assertThat(underTest.selectProjects(dbSession, ProjectQgateAssociationQuery.builder() .qualityGate(qualityGate) .projectSearch("one") .build())) .extracting(ProjectQgateAssociationDto::getId) .containsExactlyInAnyOrder(project1.getId()); assertThat(underTest.selectProjects(dbSession, ProjectQgateAssociationQuery.builder() .qualityGate(qualityGate) .projectSearch("project") .build())) .extracting(ProjectQgateAssociationDto::getId) .containsExactlyInAnyOrder(project1.getId(), project2.getId(), project3.getId()); }
private SearchAction.Association find(DbSession dbSession, ProjectQgateAssociationQuery query) { List<ProjectQgateAssociationDto> projects = dbClient.projectQgateAssociationDao().selectProjects(dbSession, query); List<ProjectQgateAssociationDto> authorizedProjects = keepAuthorizedProjects(dbSession, projects); Paging paging = forPageIndex(query.pageIndex()) .withPageSize(query.pageSize()) .andTotal(authorizedProjects.size()); return new SearchAction.Association(toProjectAssociations(getPaginatedProjects(authorizedProjects, paging)), paging.hasNextPage()); }
public ProjectQgateAssociationQuery build() { Preconditions.checkNotNull(gateId, "Gate ID cannot be null."); initMembership(); initPageIndex(); initPageSize(); return new ProjectQgateAssociationQuery(this); } }
@Test public void select_all_projects_by_query() { OrganizationDto organization = db.organizations().insert(); QGateWithOrgDto qualityGate1 = db.qualityGates().insertQualityGate(organization); QGateWithOrgDto qualityGate2 = db.qualityGates().insertQualityGate(organization); ComponentDto project1 = db.components().insertPrivateProject(organization); ComponentDto project2 = db.components().insertPrivateProject(organization); ComponentDto project3 = db.components().insertPrivateProject(organization); db.qualityGates().associateProjectToQualityGate(project1, qualityGate1); db.qualityGates().associateProjectToQualityGate(project2, qualityGate1); db.qualityGates().associateProjectToQualityGate(project3, qualityGate2); List<ProjectQgateAssociationDto> result = underTest.selectProjects(dbSession, ProjectQgateAssociationQuery.builder() .qualityGate(qualityGate1) .build()); assertThat(result) .extracting(ProjectQgateAssociationDto::getId, ProjectQgateAssociationDto::getName, ProjectQgateAssociationDto::getGateId) .containsExactlyInAnyOrder( tuple(project1.getId(), project1.name(), qualityGate1.getId().toString()), tuple(project2.getId(), project2.name(), qualityGate1.getId().toString()), tuple(project3.getId(), project3.name(), null)); }
@Override public void handle(Request request, Response response) { try (DbSession dbSession = dbClient.openSession(false)) { OrganizationDto organization = wsSupport.getOrganization(dbSession, request); QGateWithOrgDto qualityGate = wsSupport.getByOrganizationAndId(dbSession, organization, request.mandatoryParamAsLong(PARAM_GATE_ID)); Association associations = find(dbSession, ProjectQgateAssociationQuery.builder() .qualityGate(qualityGate) .membership(request.param(PARAM_QUERY) == null ? request.param(SELECTED) : ANY) .projectSearch(request.param(PARAM_QUERY)) .pageIndex(request.paramAsInt(PARAM_PAGE)) .pageSize(request.paramAsInt(PARAM_PAGE_SIZE)) .build()); Qualitygates.SearchResponse.Builder createResponse = Qualitygates.SearchResponse.newBuilder() .setMore(associations.hasMoreResults()); for (ProjectQgateAssociation project : associations.projects()) { createResponse.addResultsBuilder() .setId(project.id()) .setName(project.name()) .setSelected(project.isMember()); } writeProtobuf(createResponse.build(), request, response); } }
@Test public void return_only_projects_from_organization() { OrganizationDto organization = db.organizations().insert(); OrganizationDto otherOrganization = db.organizations().insert(); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); QGateWithOrgDto otherQualityGate = db.qualityGates().insertQualityGate(otherOrganization); ComponentDto project = db.components().insertPrivateProject(organization); ComponentDto otherProject = db.components().insertPrivateProject(otherOrganization); db.qualityGates().associateProjectToQualityGate(project, qualityGate); db.qualityGates().associateProjectToQualityGate(otherProject, otherQualityGate); List<ProjectQgateAssociationDto> result = underTest.selectProjects(dbSession, ProjectQgateAssociationQuery.builder() .qualityGate(qualityGate) .build()); assertThat(result) .extracting(ProjectQgateAssociationDto::getId) .containsExactlyInAnyOrder(project.getId()); }
@Override public void handle(Request request, Response response) { try (DbSession dbSession = dbClient.openSession(false)) { OrganizationDto organization = wsSupport.getOrganization(dbSession, request); QGateWithOrgDto qualityGate = qualityGateFinder.getByOrganizationAndId(dbSession, organization, request.mandatoryParamAsLong(PARAM_GATE_ID)); Association associations = find(dbSession, ProjectQgateAssociationQuery.builder() .qualityGate(qualityGate) .membership(request.param(PARAM_QUERY) == null ? request.param(SELECTED) : ANY) .projectSearch(request.param(PARAM_QUERY)) .pageIndex(request.paramAsInt(PARAM_PAGE)) .pageSize(request.paramAsInt(PARAM_PAGE_SIZE)) .build()); Qualitygates.SearchResponse.Builder createResponse = Qualitygates.SearchResponse.newBuilder() .setMore(associations.hasMoreResults()); for (ProjectQgateAssociation project : associations.projects()) { createResponse.addResultsBuilder() .setId(project.id()) .setName(project.name()) .setSelected(project.isMember()); } writeProtobuf(createResponse.build(), request, response); } }