summaryrefslogtreecommitdiff
path: root/src/main/java/com/android/vts/util/Pagination.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/android/vts/util/Pagination.java')
-rw-r--r--src/main/java/com/android/vts/util/Pagination.java228
1 files changed, 0 insertions, 228 deletions
diff --git a/src/main/java/com/android/vts/util/Pagination.java b/src/main/java/com/android/vts/util/Pagination.java
deleted file mode 100644
index 4a0d652..0000000
--- a/src/main/java/com/android/vts/util/Pagination.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Copyright (c) 2018 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may
- * obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- * implied. See the License for the specific language governing
- * permissions and limitations under the License.
- */
-
-package com.android.vts.util;
-
-import com.google.cloud.datastore.Cursor;
-import com.google.cloud.datastore.QueryResults;
-import com.googlecode.objectify.cmd.Query;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/** Helper class for pagination. */
-public class Pagination<T> implements Iterable<T> {
-
- /** the default page size */
- public static final int DEFAULT_PAGE_SIZE = 10;
- /** the default page window size */
- private static final int DEFAULT_PAGE_WINDOW = 10;
-
- /** the current page */
- private int page;
-
- /** the page window size */
- private int pageSize = DEFAULT_PAGE_SIZE;
-
- /** the total number of found entities */
- private int totalCount;
-
- /** the previous cursor string token where to start */
- private String previousPageCountToken = "";
-
- /** the previous cursor string token where to start */
- private String currentPageCountToken = "";
-
- /** the next cursor string token where to start */
- private String nextPageCountToken = "";
-
- /** the previous cursor string token list where to start */
- private LinkedHashSet<String> pageCountTokenSet;
-
- /** the maximum number of pages */
- private int maxPages;
-
- /** the list of object on the page */
- private List<T> list = new ArrayList<>();
-
- public Pagination(List<T> list, int page, int pageSize, int totalCount) {
- this.list = list;
- this.page = page;
- this.pageSize = pageSize;
- this.totalCount = totalCount;
- }
-
- public Pagination(
- Query<T> query,
- int page,
- int pageSize,
- String startPageToken,
- LinkedHashSet<String> pageCountTokenSet) {
- this.page = page;
- this.pageSize = pageSize;
- this.pageCountTokenSet = pageCountTokenSet;
- this.currentPageCountToken = startPageToken;
-
- List<String> pageCountTokenList =
- this.pageCountTokenSet.stream().collect(Collectors.toList());
- if (pageCountTokenList.size() > 0) {
- int foundIndex = pageCountTokenList.indexOf(startPageToken);
- if (foundIndex <= 0) {
- this.previousPageCountToken = "";
- } else {
- this.previousPageCountToken = pageCountTokenList.get(foundIndex - 1);
- }
- }
-
- int limitValue = pageSize * DEFAULT_PAGE_WINDOW + pageSize / 2;
- query = query.limit(limitValue);
- if (startPageToken.equals("")) {
- this.totalCount = query.count();
- } else {
- query = query.startAt(Cursor.fromUrlSafe(startPageToken));
- this.totalCount = query.count();
- }
-
- this.maxPages =
- this.totalCount / this.pageSize + (this.totalCount % this.pageSize == 0 ? 0 : 1);
-
- int iteratorIndex = 0;
- int startIndex = (page % pageSize == 0 ? 9 : page % pageSize - 1) * pageSize;
-
- QueryResults<T> resultIterator = query.iterator();
- while (resultIterator.hasNext()) {
- if (startIndex <= iteratorIndex && iteratorIndex < startIndex + this.pageSize)
- this.list.add(resultIterator.next());
- else resultIterator.next();
- if (iteratorIndex == DEFAULT_PAGE_WINDOW * this.pageSize) {
- if ( Objects.nonNull(resultIterator) && Objects.nonNull(resultIterator.getCursorAfter()) ) {
- this.nextPageCountToken = resultIterator.getCursorAfter().toUrlSafe();
- }
- }
- iteratorIndex++;
- }
- }
-
- public Iterator<T> iterator() {
- return list.iterator();
- }
-
- /**
- * Gets the total number of objects.
- *
- * @return the total number of objects as an int
- */
- public int getTotalCount() {
- return totalCount;
- }
-
- /**
- * Gets the number of page window.
- *
- * @return the number of page window as an int
- */
- public int getPageSize() {
- return pageSize;
- }
-
- /**
- * Gets the maximum number of pages.
- *
- * @return the maximum number of pages as an int
- */
- public int getMaxPages() {
- return this.maxPages;
- }
-
- /**
- * Gets the page.
- *
- * @return the page as an int
- */
- public int getPage() {
- return page;
- }
-
- /**
- * Gets the minimum page in the window.
- *
- * @return the page number
- */
- public int getMinPageRange() {
- if (this.getPage() <= this.getPageSize()) {
- return 1;
- } else {
- if ((this.getPage() % this.getPageSize()) == 0) {
- return (this.getPage() / this.getPageSize() - 1) * this.getPageSize() + 1;
- } else {
- return this.getPage() / this.getPageSize() * this.getPageSize() + 1;
- }
- }
- }
-
- /**
- * Gets the maximum page in the window.
- *
- * @return the page number
- */
- public int getMaxPageRange() {
- if (this.getMaxPages() > this.getPageSize()) {
- return getMinPageRange() + this.getPageSize() - 1;
- } else {
- return this.getMinPageRange() + this.getMaxPages() - 1;
- }
- }
-
- /**
- * Gets the subset of the list for the current page.
- *
- * @return a List
- */
- public List<T> getList() {
- return this.list;
- }
-
- /**
- * Gets the cursor token for the previous page starting point.
- *
- * @return a string of cursor of previous starting point
- */
- public String getPreviousPageCountToken() {
- return this.previousPageCountToken;
- }
-
- /**
- * Gets the cursor token for the current page starting point.
- *
- * @return a string of cursor of current starting point
- */
- public String getCurrentPageCountToken() {
- return this.currentPageCountToken;
- }
-
- /**
- * Gets the cursor token for the next page starting point.
- *
- * @return a string of cursor of next starting point
- */
- public String getNextPageCountToken() {
- return this.nextPageCountToken;
- }
-}