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;
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 !
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
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
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);
}
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;
}
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) {
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 {
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;
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);
}
*/
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;
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 {
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();
}
*/
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 {
}
});
- 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()) {
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";
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();
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";
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();
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);
@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);
}
}