DomainPageable.java

package com.wilzwert.myjobs.core.domain.shared.pagination;


import com.wilzwert.myjobs.core.domain.shared.exception.PaginationException;
import com.wilzwert.myjobs.core.domain.shared.validation.ErrorCode;

/**
 * @author Wilhelm Zwertvaegher
 */

public class DomainPageable {
    private final int page;
    private final int pageSize;
    private final int offset;

    public DomainPageable(int page, int pageSize) {
        if(page < 0) {
            throw new PaginationException(ErrorCode.PAGINATION_INVALID_PAGE);
        }
        if(pageSize < 1 || pageSize > 100) {
            throw new PaginationException(ErrorCode.PAGINATION_INVALID_PAGE_SIZE);
        }

        this.page = page;
        this.pageSize = pageSize;
        offset = page * pageSize;
        if(offset > 1000) {
            throw new PaginationException(ErrorCode.PAGINATION_OFFSET_TOO_BIG);
        }
    }

    public int getPage() {
        return page;
    }

    public int getPageSize() {
        return pageSize;
    }

    public int getOffset() {
        return offset;
    }
}