diff options
author | 2022-11-30 17:02:17 +0100 | |
---|---|---|
committer | 2022-11-30 17:02:17 +0100 | |
commit | 1b2ff65caf69655a244c46041c624942e01a32fc (patch) | |
tree | f5e19eadbd24255304e7189cb8e089a4e3faa1c2 /src/main/java/it/alessandroiezzi/util | |
parent | cac9d5b8294cd975ed3139bbee1330df7d91d9c6 (diff) | |
download | commons-page-1b2ff65caf69655a244c46041c624942e01a32fc.tar.gz commons-page-1b2ff65caf69655a244c46041c624942e01a32fc.zip |
Move listener inside adapter
Diffstat (limited to 'src/main/java/it/alessandroiezzi/util')
-rw-r--r-- | src/main/java/it/alessandroiezzi/util/PagedList.java | 17 | ||||
-rw-r--r-- | src/main/java/it/alessandroiezzi/util/page/PageAdapter.java | 142 |
2 files changed, 14 insertions, 145 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; - } } |