]> source.dussan.org Git - sonarqube.git/commitdiff
Use the new Paging builder 476/head
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Wed, 19 Aug 2015 12:05:45 +0000 (14:05 +0200)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Wed, 19 Aug 2015 12:17:59 +0000 (14:17 +0200)
server/sonar-server/src/main/java/org/sonar/server/activity/RubyQProfileActivityService.java
server/sonar-server/src/main/java/org/sonar/server/component/DefaultComponentFinder.java
server/sonar-server/src/main/java/org/sonar/server/issue/filter/IssueFilterService.java
server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ChangelogAction.java
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProjectsAction.java
server/sonar-server/src/main/java/org/sonar/server/user/ws/GroupsAction.java
server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java
sonar-plugin-api/src/test/java/org/sonar/api/utils/PagingTest.java

index 45ee80c9a5db0cc7f1df04e853313524bc5b5cb5..e42207813b506849e31d97b81a2cc3e74c2ca3fc 100644 (file)
@@ -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<QProfileActivity> 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
index 3d9b43874ba8e8d347601a214cf31cb784c0e5a1..0cd6a90998959818be8322bf7cda0bf9c9a31442 100644 (file)
@@ -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<? extends Component> pagedComponents = pagedComponents(sortedComponents, paging);
       return new DefaultComponentQueryResult(pagedComponents).setPaging(paging).setQuery(query);
     }
index d3094403e316aab721cba6cf78935a072dc9fa90..9fd4b46929c2aca76405da292479d1c15e2cf1e3 100644 (file)
@@ -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<IssueDoc> 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) {
index f0ce7bf9d1b7b4e7cbaaadbdd2b4125801cb71b9..5bef4b54ab2c43909670fd01271156ac2bdb8372 100644 (file)
@@ -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);
   }
index ae764529f7634ce2eb27a88889a66691e7c32031..ee4b2d7ad884c65410367aad2edc7d8d7380bd84 100644 (file)
@@ -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<QProfileActivity> 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();
     }
index e5582ef0e14a1682b3e01134d1fff50cc84a8b5a..c7a9e3fb0fb666d223c334515f9cb3894c6516ff 100644 (file)
  */
 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<ProjectQprofileAssociationDto> pagedAuthorizedProjects = Lists.newArrayList(authorizedProjects);
       if (pagedAuthorizedProjects.size() <= paging.offset()) {
index c9e56d5eddde0481d65702df6828887dc0a283e3..405d564d49cdc12ef7be049c4a65efd98eb840f0 100644 (file)
@@ -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<GroupMembershipDto> groups = dbClient.groupMembershipDao().selectGroups(session, query, user.getId(), paging.offset(), pageSize);
 
       JsonWriter json = response.newJsonWriter().beginObject();
index 48baacf9fc161951c3adaf2ffa5fbf537526a0b1..d00e5fe653df42ef42cc219f009dea5c7312bafa 100644 (file)
@@ -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<UserMembershipDto> users = dbClient.groupMembershipDao().selectMembers(dbSession, query, paging.offset(), paging.pageSize());
 
       JsonWriter json = response.newJsonWriter().beginObject();
index 2a2619ee3e7e91c32759fb6e11b8b707197a7345..618b5f6ce4c2b0106a9f95a1adee6f713b137a52 100644 (file)
 
 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);
   }
 }