summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Iezzi <aiezzi@alessandroiezzi.it>2022-11-30 17:02:17 +0100
committerAlessandro Iezzi <aiezzi@alessandroiezzi.it>2022-11-30 17:02:17 +0100
commit1b2ff65caf69655a244c46041c624942e01a32fc (patch)
treef5e19eadbd24255304e7189cb8e089a4e3faa1c2
parentcac9d5b8294cd975ed3139bbee1330df7d91d9c6 (diff)
downloadcommons-page-1b2ff65caf69655a244c46041c624942e01a32fc.tar.gz
commons-page-1b2ff65caf69655a244c46041c624942e01a32fc.zip
Move listener inside adapter
-rw-r--r--src/main/java/it/alessandroiezzi/util/PagedList.java17
-rw-r--r--src/main/java/it/alessandroiezzi/util/page/PageAdapter.java142
-rw-r--r--src/test/java/it/alessandroiezzi/util/page/PageAdapterUnitTest.java7
3 files changed, 18 insertions, 148 deletions
diff --git a/src/main/java/it/alessandroiezzi/util/PagedList.java b/src/main/java/it/alessandroiezzi/util/PagedList.java
index 5cfbe9b..ecb8cc3 100644
--- a/src/main/java/it/alessandroiezzi/util/PagedList.java
+++ b/src/main/java/it/alessandroiezzi/util/PagedList.java
@@ -19,24 +19,23 @@
package it.alessandroiezzi.util;
-import it.alessandroiezzi.commons.page.*;
+import it.alessandroiezzi.util.page.*;
import java.util.*;
public class PagedList<T> extends ArrayList<T> implements Page<T> {
private final int pageSize;
private int pageNumber;
- private PageChangeListener<T> pageChangeListener;
- boolean pageChanged = false;
+ private boolean pageChanged = false;
private Page<T> currentPage;
- public PagedList(List<T> elements, int pageSize) {
+ public PagedList(Collection<T> elements, int pageSize) {
addAll(elements);
this.pageSize = pageSize;
this.pageNumber = 0;
}
- public PagedList(List<T> elements) {
+ public PagedList(Collection<T> elements) {
this(elements, 15);
}
@@ -79,10 +78,6 @@ public class PagedList<T> extends ArrayList<T> implements Page<T> {
List<T> subElements = subList(startIndex, count);
currentPage = Page.of(subElements, pageSize);
- if (pageChangeListener != null && pageChanged) {
- pageChangeListener.pageChanged(new ArrayList<>(subElements), pageSize);
- }
-
return currentPage;
}
@@ -94,10 +89,6 @@ public class PagedList<T> extends ArrayList<T> implements Page<T> {
return pageNumber;
}
- public void addPageChangeListener(PageChangeListener<T> pageChangeListener) {
- this.pageChangeListener = pageChangeListener;
- }
-
public boolean isPageChanged() {
return pageChanged;
}
diff --git a/src/main/java/it/alessandroiezzi/util/page/PageAdapter.java b/src/main/java/it/alessandroiezzi/util/page/PageAdapter.java
index ab2e343..75e4842 100644
--- a/src/main/java/it/alessandroiezzi/util/page/PageAdapter.java
+++ b/src/main/java/it/alessandroiezzi/util/page/PageAdapter.java
@@ -20,153 +20,31 @@
package it.alessandroiezzi.util.page;
import it.alessandroiezzi.util.*;
-
import java.util.*;
-import java.util.function.*;
-public class PageAdapter<T> implements Pages<T> {
- private final List<T> elements;
- private final int pageSize;
- private int pageNumber;
+public class PageAdapter<T> extends PagedList<T> {
private PageChangeListener<T> pageChangeListener;
- boolean pageChanged = false;
- private Page<T> currentPage;
- public PageAdapter(List<T> elements) {
- this(elements, 15);
+ public PageAdapter(Collection<T> elements, int pageSize) {
+ super(elements, pageSize);
}
- public PageAdapter(List<T> elements, int pageSize) {
- this.elements = elements;
- this.pageSize = pageSize;
- this.pageNumber = 0;
+ public PageAdapter(Collection<T> elements) {
+ super(elements);
}
- @Override
- public Page<T> firstPage() {
- return toPage(0);
- }
-
- @Override
- public Page<T> previousPage() {
- return toPage(pageNumber - 1);
- }
-
- @Override
- public Page<T> nextPage() {
- return toPage(pageNumber + 1);
- }
-
- @Override
- public Page<T> lastPage() {
- return toPage(getTotalPages() - 1);
+ public void addPageChangeListener(PageChangeListener<T> pageChangeListener) {
+ this.pageChangeListener = pageChangeListener;
}
@Override
public Page<T> toPage(int page) {
- if (page < 0) {
- page = 0;
- } else if (page >= getTotalPages()) {
- page = getTotalPages() - 1;
- }
-
- int totalElements = getNumberOfElements();
- int startIndex = page * pageSize;
- if (startIndex > totalElements) {
- startIndex = totalElements;
- }
+ Page<T> currentPage = super.toPage(page);
- int count = startIndex + pageSize;
- if (count > totalElements) {
- count = totalElements;
+ if (pageChangeListener != null && isPageChanged()) {
+ pageChangeListener.pageChanged(currentPage.getContent(), getPageSize());
}
- pageChanged = page != pageNumber;
- pageNumber = page;
- List<T> subElements = elements.subList(startIndex, count);
- currentPage = Page.of(subElements, pageSize);
-
- if (pageChangeListener != null && pageChanged) {
- pageChangeListener.pageChanged(new ArrayList<>(subElements), pageSize);
- }
-
- return currentPage;
- }
-
- @Override
- public Page<T> getCurrentPage() {
return currentPage;
}
-
- @Override
- public int getCurrentPageNumber() {
- return pageNumber;
- }
-
- @Override
- public List<T> getContent() {
- return getCurrentPage().getContent();
- }
-
- @Override
- public int getPageSize() {
- return pageSize;
- }
-
- @Override
- public int getNumberOfElements() {
- return elements.size();
- }
-
- @Override
- public void addElement(T element) {
- elements.add(element);
- }
-
- @Override
- public void removeElement(T element) {
- elements.remove(element);
- }
-
- @Override
- public void removeElementIf(Predicate<T> predicate) {
- elements.removeIf(predicate);
- }
-
- @Override
- public int getTotalPages() {
- double pages = (double) getNumberOfElements() / (double) getPageSize();
- int pagesInt = (int) pages;
-
- if (pages > pagesInt)
- pagesInt++;
-
- return pagesInt;
- }
-
- @Override
- public void addPageChangeListener(PageChangeListener<T> pageChangeListener) {
- this.pageChangeListener = pageChangeListener;
- }
-
- @Override
- public List<T> getAllElements() {
- return elements;
- }
-
- @Override
- public boolean isPageChanged() {
- return pageChanged;
- }
-
- @Override
- public int from() {
- return (pageNumber * pageSize) + 1;
- }
-
- @Override
- public int to() {
- int currentSize = getContent().size();
- return currentSize < pageSize ? getNumberOfElements() : (pageNumber + 1) * currentSize;
- }
}
diff --git a/src/test/java/it/alessandroiezzi/util/page/PageAdapterUnitTest.java b/src/test/java/it/alessandroiezzi/util/page/PageAdapterUnitTest.java
index 33f185a..bcd8541 100644
--- a/src/test/java/it/alessandroiezzi/util/page/PageAdapterUnitTest.java
+++ b/src/test/java/it/alessandroiezzi/util/page/PageAdapterUnitTest.java
@@ -19,6 +19,7 @@
package it.alessandroiezzi.util.page;
+import it.alessandroiezzi.util.*;
import it.alessandroiezzi.util.page.*;
import org.junit.*;
@@ -34,7 +35,7 @@ public class PageAdapterUnitTest {
for (int i = 1; i < max; i++) {
integers.add(i);
}
- Pages<Integer> pages = new PageAdapter<>(integers);
+ PagedList<Integer> pages = new PageAdapter<>(integers);
assertEquals(4, pages.getTotalPages());
int i = 0;
@@ -48,9 +49,9 @@ public class PageAdapterUnitTest {
}
for (int j = max; j < max + 13; j++) {
- pages.addElement(j);
+ pages.add(j);
}
- pages.removeElementIf((e) -> e > 0 && e < 58);
+ pages.removeIf((e) -> e > 0 && e < 58);
for (Integer integer : pages.lastPage().getContent()) {
System.out.println(integer);
}