package pl.edu.icm.saos.api.services.representations.success.template; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import com.google.common.base.Preconditions; import pl.edu.icm.saos.api.search.parameters.Pagination; /** * Service responsible for creating pagination related templates * * @author madryk */ @Service public class PaginationTemplateFactory { @Value("${restful.api.max.page.size}") private int defaultMaxPageSize=100; @Value("${restful.api.min.page.size}") private int defaultMinPageSize=10; //------------------------ LOGIC -------------------------- public PageNumberTemplate createPageNumberTemplate(Pagination pagination) { Preconditions.checkNotNull(pagination); return new PageNumberTemplate(pagination.getPageNumber()); } public PageSizeTemplate createPageSizeTemplate(Pagination pagination) { Preconditions.checkNotNull(pagination); return createPageSizeTemplate(pagination, defaultMinPageSize, defaultMaxPageSize); } public PageSizeTemplate createPageSizeTemplate(Pagination pagination, int minPageSize, int maxPageSize) { Preconditions.checkNotNull(pagination); Preconditions.checkArgument(minPageSize <= maxPageSize && minPageSize > 0); return new PageSizeTemplate(pagination.getPageSize(), minPageSize, maxPageSize); } //------------------------ SETTERS -------------------------- public void setDefaultMaxPageSize(int defaultMaxPageSize) { this.defaultMaxPageSize = defaultMaxPageSize; } public void setDefaultMinPageSize(int defaultMinPageSize) { this.defaultMinPageSize = defaultMinPageSize; } }