
com.marklogic.client.impl.BasicPage Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of marklogic-client-api Show documentation
Show all versions of marklogic-client-api Show documentation
The official MarkLogic Java client API.
The newest version!
/*
* Copyright © 2024 MarkLogic Corporation. All Rights Reserved.
*/
package com.marklogic.client.impl;
import java.util.Iterator;
import com.marklogic.client.Page;
public class BasicPage implements Page {
private Iterator iterator;
private long start;
private Long size = null;
private long pageSize;
private long totalSize;
protected BasicPage(Class type) {
}
public BasicPage(Iterator iterator, long start, long pageSize, long totalSize) {
this.iterator = iterator;
this.start = start;
this.pageSize = pageSize;
this.totalSize = totalSize;
}
@Override
public Iterator iterator() {
return iterator;
}
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public T next() {
return iterator.next();
}
@Override
public long getStart() {
return start;
}
public BasicPage setStart(long start) {
this.start = start;
return this;
}
@Override
public long getPageSize() {
return pageSize;
}
public BasicPage setPageSize(long pageSize) {
this.pageSize = pageSize;
return this;
}
@Override
public long getTotalSize() {
return totalSize;
}
public BasicPage setTotalSize(long totalSize) {
this.totalSize = totalSize;
return this;
}
public BasicPage setSize(long size) {
this.size = new Long(size);
return this;
}
@Override
public long size() {
if ( size != null ) return size.longValue();
if ( getPageSize() == 0 ) {
return 0;
} else if ( hasNextPage() ) {
return getPageSize();
} else if ((getTotalSize() % getPageSize()) == 0) {
return getPageSize();
} else {
return getTotalSize() % getPageSize();
}
}
@Override
public long getTotalPages() {
return ceilingDivision(getTotalSize(), getPageSize());
}
@Override
public boolean hasContent() {
return size() > 0;
}
@Override
public boolean hasNextPage() {
return getPageNumber() < getTotalPages();
}
@Override
public boolean hasPreviousPage() {
return getPageNumber() > 1;
}
@Override
public long getPageNumber() {
return ceilingDivision(getStart(), getPageSize());
}
private long ceilingDivision(long dividend, long divisor) {
if (divisor == 0) return 0;
long quotient = dividend / divisor;
return (dividend % divisor == 0) ? quotient : quotient + 1;
}
@Override
public boolean isFirstPage() {
if ( getPageSize() == 0 ) return true;
return getPageNumber() == 1;
}
@Override
public boolean isLastPage() {
if ( getPageSize() == 0 ) return true;
return getPageNumber() == getTotalPages();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy