From: Teryk Bellahsene Date: Wed, 19 Aug 2015 12:05:45 +0000 (+0200) Subject: Use the new Paging builder X-Git-Tag: 5.2-RC1~716 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F476%2Fhead;p=sonarqube.git Use the new Paging builder --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/activity/RubyQProfileActivityService.java b/server/sonar-server/src/main/java/org/sonar/server/activity/RubyQProfileActivityService.java index 45ee80c9a5d..e42207813b5 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/activity/RubyQProfileActivityService.java +++ b/server/sonar-server/src/main/java/org/sonar/server/activity/RubyQProfileActivityService.java @@ -20,6 +20,9 @@ package org.sonar.server.activity; +import java.util.Date; +import java.util.List; +import java.util.Map; import org.picocontainer.Startable; import org.sonar.api.server.ServerSide; import org.sonar.api.utils.Paging; @@ -30,9 +33,7 @@ import org.sonar.server.qualityprofile.QProfileService; import org.sonar.server.search.Result; import org.sonar.server.util.RubyUtils; -import java.util.Date; -import java.util.List; -import java.util.Map; +import static org.sonar.api.utils.Paging.forPageIndex; /** * @deprecated in 4.4 because Ruby on Rails is deprecated too ! @@ -69,7 +70,7 @@ public class RubyQProfileActivityService implements Startable { options.setPage(pageIndex, 50); Result result = service.searchActivities(query, options); - return new QProfileActivityResult(result.getHits(), Paging.create(options.getLimit(), pageIndex, (int) result.getTotal())); + return new QProfileActivityResult(result.getHits(), forPageIndex(pageIndex).withPageSize(options.getLimit()).andTotal((int) result.getTotal())); } @Override diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/DefaultComponentFinder.java b/server/sonar-server/src/main/java/org/sonar/server/component/DefaultComponentFinder.java index 3d9b43874ba..0cd6a909989 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/DefaultComponentFinder.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/DefaultComponentFinder.java @@ -32,6 +32,7 @@ import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.Loggers; import static com.google.common.collect.Lists.newArrayList; +import static org.sonar.api.utils.Paging.forPageIndex; /** * @since 3.7 @@ -51,7 +52,7 @@ public class DefaultComponentFinder { if (ComponentQuery.NO_PAGINATION == query.pageSize()) { return new DefaultComponentQueryResult(sortedComponents).setQuery(query); } else { - Paging paging = Paging.create(query.pageSize(), query.pageIndex(), foundComponents.size()); + Paging paging = forPageIndex(query.pageIndex()).withPageSize(query.pageSize()).andTotal(foundComponents.size()); Collection pagedComponents = pagedComponents(sortedComponents, paging); return new DefaultComponentQueryResult(pagedComponents).setPaging(paging).setQuery(query); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/filter/IssueFilterService.java b/server/sonar-server/src/main/java/org/sonar/server/issue/filter/IssueFilterService.java index d3094403e31..9fd4b46929c 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/filter/IssueFilterService.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/filter/IssueFilterService.java @@ -30,11 +30,11 @@ import javax.annotation.CheckForNull; import javax.annotation.Nonnull; import org.sonar.api.server.ServerSide; import org.sonar.api.utils.Paging; +import org.sonar.core.permission.GlobalPermissions; import org.sonar.db.issue.IssueFilterDao; import org.sonar.db.issue.IssueFilterDto; import org.sonar.db.issue.IssueFilterFavouriteDao; import org.sonar.db.issue.IssueFilterFavouriteDto; -import org.sonar.core.permission.GlobalPermissions; import org.sonar.db.user.AuthorizationDao; import org.sonar.server.es.SearchOptions; import org.sonar.server.es.SearchResult; @@ -319,7 +319,8 @@ public class IssueFilterService { } private IssueFilterResult createIssueFilterResult(SearchResult issues, SearchOptions options) { - return new IssueFilterResult(issues.getDocs(), Paging.create(options.getLimit(), options.getPage(), (int) issues.getTotal())); + Paging paging = Paging.forPageIndex(options.getPage()).withPageSize(options.getLimit()).andTotal((int) issues.getTotal()); + return new IssueFilterResult(issues.getDocs(), paging); } private boolean hasUserSharingPermission(String user) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java index f0ce7bf9d1b..5bef4b54ab2 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java @@ -53,6 +53,7 @@ import org.sonarqube.ws.Issues; import static com.google.common.collect.FluentIterable.from; import static com.google.common.collect.Iterables.concat; import static java.util.Collections.singletonList; +import static org.sonar.api.utils.Paging.forPageIndex; public class SearchAction implements IssuesWsAction { @@ -67,7 +68,7 @@ public class SearchAction implements IssuesWsAction { private final SearchResponseFormat searchResponseFormat; public SearchAction(UserSession userSession, IssueService service, IssueQueryService issueQueryService, - SearchResponseLoader searchResponseLoader, SearchResponseFormat searchResponseFormat) { + SearchResponseLoader searchResponseLoader, SearchResponseFormat searchResponseFormat) { this.userSession = userSession; this.service = service; this.issueQueryService = issueQueryService; @@ -255,7 +256,7 @@ public class SearchAction implements IssuesWsAction { facets = reorderFacets(facets, options.getFacets()); // FIXME allow long in Paging - Paging paging = Paging.create(options.getLimit(), options.getPage(), (int) result.getTotal()); + Paging paging = forPageIndex(options.getPage()).withPageSize(options.getLimit()).andTotal((int) result.getTotal()); Issues.Search responseBody = searchResponseFormat.formatSearch(additionalFields, data, paging, facets); WsUtils.writeProtobuf(responseBody, request, response); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ChangelogAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ChangelogAction.java index ae764529f76..ee4b2d7ad88 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ChangelogAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ChangelogAction.java @@ -19,6 +19,8 @@ */ package org.sonar.server.qualityprofile.ws; +import java.util.Date; +import java.util.Map.Entry; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.search.SearchHit; import org.sonar.api.resources.Languages; @@ -42,8 +44,7 @@ import org.sonar.server.qualityprofile.QProfileActivityQuery; import org.sonar.server.qualityprofile.QProfileFactory; import org.sonar.server.search.Result; -import java.util.Date; -import java.util.Map.Entry; +import static org.sonar.api.utils.Paging.forPageIndex; public class ChangelogAction implements QProfileWsAction { @@ -108,7 +109,7 @@ public class ChangelogAction implements QProfileWsAction { options.setPage(page, request.mandatoryParamAsInt(Param.PAGE_SIZE)); Result result = searchActivities(query, options); - writeResponse(response.newJsonWriter(), result, Paging.create(options.getLimit(), page, (int) result.getTotal())); + writeResponse(response.newJsonWriter(), result, forPageIndex(page).withPageSize(options.getLimit()).andTotal((int) result.getTotal())); } finally { session.close(); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProjectsAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProjectsAction.java index e5582ef0e14..c7a9e3fb0fb 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProjectsAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProjectsAction.java @@ -19,32 +19,32 @@ */ package org.sonar.server.qualityprofile.ws; -import org.sonar.api.server.ws.WebService.Param; - -import org.sonar.api.server.ws.WebService.SelectionMode; import com.google.common.base.Predicate; import com.google.common.collect.Collections2; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; import org.apache.commons.lang.builder.CompareToBuilder; import org.sonar.api.server.ws.Request; import org.sonar.api.server.ws.Response; import org.sonar.api.server.ws.WebService.NewAction; import org.sonar.api.server.ws.WebService.NewController; +import org.sonar.api.server.ws.WebService.Param; +import org.sonar.api.server.ws.WebService.SelectionMode; import org.sonar.api.utils.Paging; import org.sonar.api.utils.text.JsonWriter; import org.sonar.api.web.UserRole; -import org.sonar.db.DbSession; -import org.sonar.db.qualityprofile.ProjectQprofileAssociationDto; import org.sonar.core.util.NonNullInputFunction; import org.sonar.db.DbClient; +import org.sonar.db.DbSession; +import org.sonar.db.qualityprofile.ProjectQprofileAssociationDto; import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.user.UserSession; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; +import static org.sonar.api.utils.Paging.forPageIndex; public class ProjectsAction implements QProfileWsAction { @@ -122,7 +122,7 @@ public class ProjectsAction implements QProfileWsAction { } }); - Paging paging = Paging.create(pageSize, page, authorizedProjectIds.size()); + Paging paging = forPageIndex(page).withPageSize(pageSize).andTotal(authorizedProjectIds.size()); List pagedAuthorizedProjects = Lists.newArrayList(authorizedProjects); if (pagedAuthorizedProjects.size() <= paging.offset()) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/ws/GroupsAction.java b/server/sonar-server/src/main/java/org/sonar/server/user/ws/GroupsAction.java index c9e56d5eddd..405d564d49c 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/user/ws/GroupsAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/user/ws/GroupsAction.java @@ -37,6 +37,8 @@ import org.sonar.server.db.DbClient; import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.user.UserSession; +import static org.sonar.api.utils.Paging.forPageIndex; + public class GroupsAction implements UsersWsAction { private static final String PARAM_LOGIN = "login"; @@ -99,7 +101,7 @@ public class GroupsAction implements UsersWsAction { throw new NotFoundException(String.format("User with login '%s' has not been found", login)); } int total = dbClient.groupMembershipDao().countGroups(session, query, user.getId()); - Paging paging = Paging.create(pageSize, page, total); + Paging paging = forPageIndex(page).withPageSize(pageSize).andTotal(total); List groups = dbClient.groupMembershipDao().selectGroups(session, query, user.getId(), paging.offset(), pageSize); JsonWriter json = response.newJsonWriter().beginObject(); diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java index 48baacf9fc1..d00e5fe653d 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java @@ -39,6 +39,8 @@ import org.sonar.server.db.DbClient; import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.user.UserSession; +import static org.sonar.api.utils.Paging.forPageIndex; + public class UsersAction implements UserGroupsWsAction { private static final String PARAM_ID = "id"; @@ -100,7 +102,7 @@ public class UsersAction implements UserGroupsWsAction { throw new NotFoundException(String.format("Could not find user group with id '%s'", groupId)); } int total = dbClient.groupMembershipDao().countMembers(dbSession, query); - Paging paging = Paging.create(pageSize, page, total); + Paging paging = forPageIndex(page).withPageSize(pageSize).andTotal(total); List users = dbClient.groupMembershipDao().selectMembers(dbSession, query, paging.offset(), paging.pageSize()); JsonWriter json = response.newJsonWriter().beginObject(); diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/utils/PagingTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/utils/PagingTest.java index 2a2619ee3e7..618b5f6ce4c 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/utils/PagingTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/utils/PagingTest.java @@ -20,16 +20,20 @@ package org.sonar.api.utils; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.fail; +import static org.sonar.api.utils.Paging.forPageIndex; public class PagingTest { + @Rule + public ExpectedException expectedException = ExpectedException.none(); @Test public void test_pagination() { - Paging paging = Paging.create(5, 1, 20); + Paging paging = forPageIndex(1).withPageSize(5).andTotal(20); assertThat(paging.pageSize()).isEqualTo(5); assertThat(paging.pageIndex()).isEqualTo(1); @@ -41,45 +45,39 @@ public class PagingTest { @Test public void test_offset() { - assertThat(Paging.create(5, 1, 20).offset()).isEqualTo(0); - assertThat(Paging.create(5, 2, 20).offset()).isEqualTo(5); + assertThat(forPageIndex(1).withPageSize(5).andTotal(20).offset()).isEqualTo(0); + assertThat(forPageIndex(2).withPageSize(5).andTotal(20).offset()).isEqualTo(5); } @Test public void test_number_of_pages() { - assertThat(Paging.create(5, 2, 20).pages()).isEqualTo(4); - assertThat(Paging.create(5, 2, 21).pages()).isEqualTo(5); - assertThat(Paging.create(5, 2, 25).pages()).isEqualTo(5); - assertThat(Paging.create(5, 2, 26).pages()).isEqualTo(6); + assertThat(forPageIndex(2).withPageSize(5).andTotal(20).pages()).isEqualTo(4); + assertThat(forPageIndex(2).withPageSize(5).andTotal(21).pages()).isEqualTo(5); + assertThat(forPageIndex(2).withPageSize(5).andTotal(25).pages()).isEqualTo(5); + assertThat(forPageIndex(2).withPageSize(5).andTotal(26).pages()).isEqualTo(6); } @Test public void page_size_should_be_strictly_positive() { - try { - Paging.create(0, 5, 5); - fail(); - } catch (IllegalArgumentException e) { - assertThat(e).hasMessage("Page size must be strictly positive. Got 0"); - } + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("Page size must be strictly positive. Got 0"); + + forPageIndex(5).withPageSize(0).andTotal(5); } @Test public void page_index_should_be_strictly_positive() { - try { - Paging.create(5, 0, 5); - fail(); - } catch (IllegalArgumentException e) { - assertThat(e).hasMessage("Page index must be strictly positive. Got 0"); - } + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("Page index must be strictly positive. Got 0"); + + forPageIndex(0).withPageSize(5).andTotal(5); } @Test public void total_items_should_be_positive() { - try { - Paging.create(5, 5, -1); - fail(); - } catch (IllegalArgumentException e) { - assertThat(e).hasMessage("Total items must be positive. Got -1"); - } + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("Total items must be positive. Got -1"); + + forPageIndex(5).withPageSize(5).andTotal(-1); } }