diff options
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); } |