package com.vci.rmip.code.client.codeapply.Apply410.object; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; public class Page { private static final long serialVersionUID = 8545996863226528798L; protected List records; protected long total; protected long size; protected long current; protected List orders; protected boolean optimizeCountSql; protected boolean searchCount; protected boolean optimizeJoinOfCountSql; protected String countId; protected Long maxLimit; protected long pages; public Page() { this.records = Collections.emptyList(); this.total = 0L; this.size = 10L; this.current = 1L; this.orders = new ArrayList(); this.optimizeCountSql = true; this.searchCount = true; this.optimizeJoinOfCountSql = true; } public Page(long current, long size) { this(current, size, 0L); } public Page(long current, long size, long total) { this(current, size, total, true); } public Page(long current, long size, boolean searchCount) { this(current, size, 0L, searchCount); } public Page(long current, long size, long total, boolean searchCount) { this.records = Collections.emptyList(); this.total = 0L; this.size = 10L; this.current = 1L; this.orders = new ArrayList(); this.optimizeCountSql = true; this.searchCount = true; this.optimizeJoinOfCountSql = true; if (current > 1L) { this.current = current; } this.size = size; this.total = total; this.searchCount = searchCount; } public boolean hasPrevious() { return this.current > 1L; } public boolean hasNext() { return this.current < this.getPages(); } public List getRecords() { return this.records; } public Page setRecords(List records) { this.records = records; return this; } public long getTotal() { return this.total; } public Page setTotal(long total) { this.total = total; return this; } public long getSize() { return this.size; } public Page setSize(long size) { this.size = size; return this; } public long getCurrent() { return this.current; } public Page setCurrent(long current) { this.current = current; return this; } public String countId() { return this.countId; } public Long maxLimit() { return this.maxLimit; } // private String[] mapOrderToArray(Predicate filter) { // List columns = new ArrayList(this.orders.size()); // this.orders.forEach((i) -> { // if (filter.test(i)) { // columns.add(i.getColumn()); // } // // }); // return (String[])columns.toArray(new String[0]); // } // private void removeOrder(Predicate filter) { // for(int i = this.orders.size() - 1; i >= 0; --i) { // if (filter.test(this.orders.get(i))) { // this.orders.remove(i); // } // } // // } public Page addOrder(OrderItem... items) { this.orders.addAll(Arrays.asList(items)); return this; } public Page addOrder(List items) { this.orders.addAll(items); return this; } public List orders() { return this.orders; } public boolean optimizeCountSql() { return this.optimizeCountSql; } public static Page of(long current, long size, long total, boolean searchCount) { return new Page(current, size, total, searchCount); } public boolean optimizeJoinOfCountSql() { return this.optimizeJoinOfCountSql; } public Page setSearchCount(boolean searchCount) { this.searchCount = searchCount; return this; } public Page setOptimizeCountSql(boolean optimizeCountSql) { this.optimizeCountSql = optimizeCountSql; return this; } public long getPages() { return getPages(); } public void setPages(long pages) { this.pages = pages; } public static Page of(long current, long size) { return of(current, size, 0L); } public static Page of(long current, long size, long total) { return of(current, size, total, true); } public static Page of(long current, long size, boolean searchCount) { return of(current, size, 0L, searchCount); } public boolean searchCount() { return this.total < 0L ? false : this.searchCount; } /** @deprecated */ @Deprecated public String getCountId() { return this.countId; } /** @deprecated */ @Deprecated public Long getMaxLimit() { return this.maxLimit; } /** @deprecated */ @Deprecated public List getOrders() { return this.orders; } /** @deprecated */ @Deprecated public boolean isOptimizeCountSql() { return this.optimizeCountSql; } /** @deprecated */ @Deprecated public boolean isSearchCount() { return this.searchCount; } public void setOrders(final List orders) { this.orders = orders; } public void setOptimizeJoinOfCountSql(final boolean optimizeJoinOfCountSql) { this.optimizeJoinOfCountSql = optimizeJoinOfCountSql; } public void setCountId(final String countId) { this.countId = countId; } public void setMaxLimit(final Long maxLimit) { this.maxLimit = maxLimit; } }