@Override public void handle(Request request, Response response) throws Exception { boolean onlyMembershipOrganizations = request.mandatoryParamAsBoolean(PARAM_MEMBER); if (onlyMembershipOrganizations) { userSession.checkLoggedIn(); } try (DbSession dbSession = dbClient.openSession(false)) { OrganizationQuery dbQuery = buildDbQuery(request); int total = dbClient.organizationDao().countByQuery(dbSession, dbQuery); Paging paging = buildWsPaging(request, total); List<OrganizationDto> organizations = dbClient.organizationDao().selectByQuery(dbSession, dbQuery, forPage(paging.getPageIndex()).andSize(paging.getPageSize())); Set<String> adminOrganizationUuids = searchOrganizationWithAdminPermission(dbSession); Set<String> provisionOrganizationUuids = searchOrganizationWithProvisionPermission(dbSession); Map<String, OrganizationAlmBindingDto> organizationAlmBindingByOrgUuid = dbClient.organizationAlmBindingDao().selectByOrganizations(dbSession, organizations) .stream().collect(MoreCollectors.uniqueIndex(OrganizationAlmBindingDto::getOrganizationUuid)); Organizations.SearchWsResponse wsResponse = buildOrganizations(organizations, adminOrganizationUuids, provisionOrganizationUuids, organizationAlmBindingByOrgUuid, onlyMembershipOrganizations, paging); writeProtobuf(wsResponse, request, response); } }
@Test public void check_projects_facet_max_size() { RuleDefinitionDto rule = db.rules().insert(); IntStream.rangeClosed(1, 110) .forEach(i -> { ComponentDto project = db.components().insertPublicProject(); db.issues().insert(rule, project, project); }); indexPermissions(); indexIssues(); SearchWsResponse response = ws.newRequest() .setParam(FACETS, "projects") .executeProtobuf(SearchWsResponse.class); assertThat(response.getPaging().getTotal()).isEqualTo(110); assertThat(response.getFacets().getFacets(0).getValuesCount()).isEqualTo(100); }
.map(response -> response.setPaging(Common.Paging.newBuilder() .setPageIndex(request.getPage()) .setPageSize(request.getPageSize())
responseBuilder.setPaging(Common.Paging.newBuilder() .setPageIndex(searchOptions.getPage()) .setPageSize(searchOptions.getLimit())
Common.Paging.newBuilder() .setPageIndex(paging.pageIndex()) .setPageSize(paging.pageSize())
.map(response -> response.setPaging(Common.Paging.newBuilder() .setPageIndex(request.getPage()) .setPageSize(request.getPageSize())
@Override public void handle(Request request, Response response) throws Exception { userSession.checkLoggedIn(); int page = request.mandatoryParamAsInt(Param.PAGE); int pageSize = request.mandatoryParamAsInt(Param.PAGE_SIZE); Set<String> desiredFields = desiredFields(request); String query = request.param(Param.TEXT_QUERY); try (DbSession dbSession = dbClient.openSession(false)) { OrganizationDto organization = support.getOrganization(dbSession, request.param(PARAM_ORGANIZATION)); userSession.checkPermission(PROVISION_PROJECTS, organization); ComponentQuery dbQuery = buildDbQuery(query); List<ComponentDto> projects = dbClient.componentDao().selectByQuery(dbSession, organization.getUuid(), dbQuery, offset(page, pageSize), pageSize); int nbOfProjects = dbClient.componentDao().countByQuery(dbSession, organization.getUuid(), dbQuery); ProvisionedWsResponse result = ProvisionedWsResponse.newBuilder() .addAllProjects(writeProjects(projects, desiredFields)) .setPaging(Paging.newBuilder() .setTotal(nbOfProjects) .setPageIndex(page) .setPageSize(pageSize)) .build(); writeProtobuf(result, request, response); } }
public ImmutableList<Issue> getAllIssuesFor(String resourceKey) { final ImmutableList.Builder<Issue> builder = ImmutableList.builder(); SearchWsRequest query = new SearchWsRequest(); query.setComponentRoots(singletonList(resourceKey)) .setResolved(false) .setPageSize(-1); IssuesService issuesService = sonarClient.issues(); SearchWsResponse response = issuesService.search(query); builder.addAll(response.getIssuesList()); Common.Paging paging = response.getPaging(); Integer total = paging.getTotal(); Integer pageSize = paging.getPageSize(); Integer pages = total / pageSize + (total % pageSize > 0 ? 1 : 0); for (int pageIndex = 2; pageIndex <= pages; pageIndex++) { final ProgressIndicator progressIndicator = ProgressManager.getInstance().getProgressIndicator(); if (progressIndicator.isCanceled()) break; final String pagesProgressMessage = String.format("%d / %d pages downloaded", pageIndex, pages); ProgressIndicatorUtil.setText(progressIndicator, pagesProgressMessage); ProgressIndicatorUtil.setFraction(progressIndicator, pageIndex * 1.0 / pages); query.setPage(pageIndex); builder.addAll(issuesService.search(query).getIssuesList()); } return builder.build(); } }
private static <F, G> void processPage(String baseUrl, CheckedFunction<InputStream, G> responseParser, Function<G, Paging> getPaging, Function<G, List<F>> itemExtractor, Consumer<F> itemConsumer, boolean limitToTwentyPages, ProgressWrapper progress, AtomicInteger page, AtomicBoolean stop, AtomicInteger loaded, WsResponse response) throws IOException { G protoBufResponse = responseParser.apply(response.contentStream()); List<F> items = itemExtractor.apply(protoBufResponse); for (F item : items) { itemConsumer.accept(item); loaded.incrementAndGet(); } boolean isEmpty = items.isEmpty(); Paging paging = getPaging.apply(protoBufResponse); // SONAR-9150 Some WS used to miss the paging information, so iterate until response is empty stop.set(isEmpty || (paging.getTotal() > 0 && page.get() * PAGE_SIZE >= paging.getTotal())); if (!stop.get() && limitToTwentyPages && page.get() >= MAX_PAGES) { stop.set(true); LOG.debug("Limiting number of requested pages from '{}' to {}. Some of the data won't be fetched", baseUrl, MAX_PAGES); } progress.setProgressAndCheckCancel("Page " + page, loaded.get() / (float) paging.getTotal()); }
public List<Component> getAllProjects(WsClient sonarClient) { org.sonarqube.ws.client.component.SearchWsRequest query = new org.sonarqube.ws.client.component.SearchWsRequest() .setQualifiers(singletonList(SonarQualifier.PROJECT.getQualifier())) .setPageSize(500); //-1 is not allowed, neither int max. The limit is 500. List<WsComponents.Component> components = new ArrayList<>(); WsComponents.SearchWsResponse response = sonarClient.components().search(query); Common.Paging paging = response.getPaging(); int total = paging.getTotal(); int pageSize = paging.getPageSize(); int pages = total / pageSize + (total % pageSize > 0 ? 1 : 0); if (total > 0) { components.addAll(response.getComponentsList()); for (int pageIndex = 2; pageIndex <= pages; pageIndex++) { query.setPage(pageIndex); response = sonarClient.components().search(query); components.addAll(response.getComponentsList()); } } return Collections.unmodifiableList(components); }
@Override public void handle(Request request, Response response) throws Exception { boolean isMember = request.mandatoryParamAsBoolean(PARAM_MEMBER); if (isMember){ userSession.checkLoggedIn(); } try (DbSession dbSession = dbClient.openSession(false)) { OrganizationQuery dbQuery = buildDbQuery(request); int total = dbClient.organizationDao().countByQuery(dbSession, dbQuery); Paging paging = buildWsPaging(request, total); List<OrganizationDto> organizations = dbClient.organizationDao().selectByQuery(dbSession, dbQuery, forPage(paging.getPageIndex()).andSize(paging.getPageSize())); Set<String> adminOrganizationUuids = searchOrganizationWithAdminPermission(dbSession); writeResponse(request, response, organizations, adminOrganizationUuids, paging); } }
private static Common.Paging buildPaging(SearchUsersRequest wsRequest, int total) { return Common.Paging.newBuilder() .setPageIndex(wsRequest.getPage()) .setPageSize(wsRequest.getPageSize()) .setTotal(total) .build(); }
SearchHistoryResult setAnalyses(List<SnapshotDto> analyses) { this.paging = Common.Paging.newBuilder().setPageIndex(page).setPageSize(pageSize).setTotal(analyses.size()).build(); this.analyses = analyses.stream().skip(offset(page, pageSize)).limit(pageSize).collect(MoreCollectors.toList()); return this; }
private static Common.Paging buildPaging(SearchUsersRequest wsRequest, int total) { return Common.Paging.newBuilder() .setPageIndex(wsRequest.getPage()) .setPageSize(wsRequest.getPageSize()) .setTotal(total) .build(); } }
private static Common.Paging buildWsPaging(Request request, SearchResult<UserDoc> searchResults) { return Common.Paging.newBuilder() .setPageIndex(request.mandatoryParamAsInt(Param.PAGE)) .setPageSize(request.mandatoryParamAsInt(Param.PAGE_SIZE)) .setTotal((int) searchResults.getTotal()) .build(); }
private static Paging buildWsPaging(Request request, int total) { return Paging.newBuilder() .setPageIndex(request.mandatoryParamAsInt(Param.PAGE)) .setPageSize(request.mandatoryParamAsInt(Param.PAGE_SIZE)) .setTotal(total) .build(); }
public Common.Paging.Builder formatPaging(Paging paging) { return Common.Paging.newBuilder() .setPageIndex(paging.pageIndex()) .setPageSize(paging.pageSize()) .setTotal(paging.total()); }
private static void addPaging(SearchResponse.Builder builder, SearchResults results) { builder .setPaging(Common.Paging.newBuilder() .setPageIndex(results.paging.pageIndex()) .setPageSize(results.paging.pageSize()) .setTotal(results.paging.total())); }
static Common.Paging buildPaging(int pageIndex, int pageSize, int totalElements) { return Common.Paging.newBuilder() .setPageIndex(pageIndex) .setPageSize(pageSize) .setTotal(totalElements) .build(); }
Common.Paging.newBuilder() .setPageIndex(paging.pageIndex()) .setPageSize(paging.pageSize())