优化 PagingAndSortingQueryParams。

feature/net-util
ZhouXY108 2023-07-19 02:16:07 +08:00
parent 3b6adce83b
commit 84f53716b7
1 changed files with 24 additions and 19 deletions

View File

@ -17,7 +17,6 @@
package xyz.zhouxy.plusone.commons.util; package xyz.zhouxy.plusone.commons.util;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -27,6 +26,7 @@ import javax.annotation.Nullable;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
import xyz.zhouxy.plusone.commons.annotation.Overridable; import xyz.zhouxy.plusone.commons.annotation.Overridable;
@ -44,23 +44,22 @@ import xyz.zhouxy.plusone.commons.annotation.Overridable;
public class PagingAndSortingQueryParams { public class PagingAndSortingQueryParams {
private static final int DEFAULT_PAGE_SIZE = 15; private static final int DEFAULT_PAGE_SIZE = 15;
protected final List<String> orderBy = new LinkedList<>();
protected int size;
protected long pageNum;
private final Set<String> sortableColNames; private int size;
private long pageNum;
private final List<String> orderBy = new LinkedList<>();
private final Set<String> sortableProperties;
public PagingAndSortingQueryParams() { public PagingAndSortingQueryParams() {
this.sortableColNames = Collections.emptySet(); this.sortableProperties = Collections.emptySet();
} }
public PagingAndSortingQueryParams(String... sortableColNames) { public PagingAndSortingQueryParams(String... sortableProperties) {
Set<String> sortableColNameSet = new HashSet<>(sortableColNames.length); for (String p : sortableProperties) {
for (String colName : sortableColNames) { Preconditions.checkArgument(StringUtils.isNotBlank(p), "Property name must not be blank.");
Preconditions.checkArgument(StringUtils.isNotBlank(colName), "Column name must has text.");
sortableColNameSet.add(colName);
} }
this.sortableColNames = Collections.unmodifiableSet(sortableColNameSet); this.sortableProperties = ImmutableSet.<String>builder().add(sortableProperties).build();
} }
// Getters // Getters
@ -85,14 +84,14 @@ public class PagingAndSortingQueryParams {
// Setters // Setters
public final void setOrderBy(@Nullable List<String> orderBy) { public final void setOrderBy(@Nullable List<String> properties) {
this.orderBy.clear(); this.orderBy.clear();
if (orderBy != null && !orderBy.isEmpty()) { if (properties != null && !properties.isEmpty()) {
for (String colName : orderBy) { for (String colName : properties) {
Preconditions.checkArgument(this.sortableColNames.contains(colName), Preconditions.checkArgument(this.sortableProperties.contains(colName),
"The column name must be in the set of sortable columns."); "The property name must be in the set of sortable properties.");
} }
this.orderBy.addAll(orderBy); this.orderBy.addAll(properties);
} }
} }
@ -101,7 +100,7 @@ public class PagingAndSortingQueryParams {
} }
public final void setPageNum(@Nullable Long pageNum) { public final void setPageNum(@Nullable Long pageNum) {
this.pageNum = pageNum != null ? pageNum : 1; this.pageNum = pageNum != null ? pageNum : 1L;
} }
// Setters end // Setters end
@ -110,4 +109,10 @@ public class PagingAndSortingQueryParams {
protected int getDefaultSize() { protected int getDefaultSize() {
return DEFAULT_PAGE_SIZE; return DEFAULT_PAGE_SIZE;
} }
@Override
public String toString() {
return "PagingAndSortingQueryParams [size=" + size + ", pageNum=" + pageNum + ", orderBy=" + orderBy
+ ", sortableProperties=" + sortableProperties + "]";
}
} }