mirror of
https://github.com/dalbodeule/snap-admin.git
synced 2025-12-16 21:31:59 +09:00
0.1.0
This commit is contained in:
34
src/main/java/tech/ailef/dbadmin/external/dto/AutocompleteSearchResult.java
vendored
Normal file
34
src/main/java/tech/ailef/dbadmin/external/dto/AutocompleteSearchResult.java
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
package tech.ailef.dbadmin.external.dto;
|
||||
|
||||
import tech.ailef.dbadmin.external.dbmapping.DbObject;
|
||||
|
||||
public class AutocompleteSearchResult {
|
||||
private Object id;
|
||||
|
||||
private String value;
|
||||
|
||||
public AutocompleteSearchResult() {
|
||||
}
|
||||
|
||||
public AutocompleteSearchResult(DbObject o) {
|
||||
this.id = o.getPrimaryKeyValue();
|
||||
this.value = o.getDisplayName();
|
||||
}
|
||||
|
||||
public Object getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Object id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
}
|
||||
52
src/main/java/tech/ailef/dbadmin/external/dto/CompareOperator.java
vendored
Normal file
52
src/main/java/tech/ailef/dbadmin/external/dto/CompareOperator.java
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
package tech.ailef.dbadmin.external.dto;
|
||||
|
||||
public enum CompareOperator {
|
||||
GT {
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return "Greater than";
|
||||
}
|
||||
},
|
||||
LT {
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return "Less than";
|
||||
}
|
||||
},
|
||||
EQ {
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return "Equals";
|
||||
}
|
||||
},
|
||||
STRING_EQ {
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return "Equals";
|
||||
}
|
||||
},
|
||||
BEFORE {
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return "Before";
|
||||
}
|
||||
},
|
||||
AFTER {
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return "After";
|
||||
}
|
||||
},
|
||||
CONTAINS {
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return "Contains";
|
||||
}
|
||||
};
|
||||
|
||||
public abstract String getDisplayName();
|
||||
|
||||
public String toString() {
|
||||
return this.name().toLowerCase();
|
||||
}
|
||||
}
|
||||
98
src/main/java/tech/ailef/dbadmin/external/dto/LogsSearchRequest.java
vendored
Normal file
98
src/main/java/tech/ailef/dbadmin/external/dto/LogsSearchRequest.java
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
package tech.ailef.dbadmin.external.dto;
|
||||
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
|
||||
public class LogsSearchRequest {
|
||||
private String table;
|
||||
|
||||
private String actionType;
|
||||
|
||||
private String itemId;
|
||||
|
||||
private int page;
|
||||
|
||||
private int pageSize;
|
||||
|
||||
private String sortKey;
|
||||
|
||||
private String sortOrder;
|
||||
|
||||
public String getTable() {
|
||||
return table == null || table.isBlank() || table.equalsIgnoreCase("Any") ? null : table;
|
||||
}
|
||||
|
||||
public void setTable(String table) {
|
||||
this.table = table;
|
||||
}
|
||||
|
||||
public String getActionType() {
|
||||
return actionType == null || actionType.isBlank() || actionType.equalsIgnoreCase("Any") ? null : actionType;
|
||||
}
|
||||
|
||||
public void setActionType(String actionType) {
|
||||
this.actionType = actionType;
|
||||
}
|
||||
|
||||
public String getItemId() {
|
||||
return itemId == null || itemId.isBlank() ? null : itemId;
|
||||
}
|
||||
|
||||
public void setItemId(String itemId) {
|
||||
this.itemId = itemId;
|
||||
}
|
||||
|
||||
public int getPage() {
|
||||
return page;
|
||||
}
|
||||
|
||||
public void setPage(int page) {
|
||||
this.page = page;
|
||||
}
|
||||
|
||||
public int getPageSize() {
|
||||
return pageSize;
|
||||
}
|
||||
|
||||
public void setPageSize(int pageSize) {
|
||||
this.pageSize = pageSize;
|
||||
}
|
||||
|
||||
public String getSortKey() {
|
||||
return sortKey;
|
||||
}
|
||||
|
||||
public void setSortKey(String sortKey) {
|
||||
this.sortKey = sortKey;
|
||||
}
|
||||
|
||||
public String getSortOrder() {
|
||||
return sortOrder;
|
||||
}
|
||||
|
||||
public void setSortOrder(String sortOrder) {
|
||||
this.sortOrder = sortOrder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "LogsSearchRequest [table=" + table + ", actionType=" + actionType + ", itemId=" + itemId + ", page="
|
||||
+ page + ", pageSize=" + pageSize + ", sortKey=" + sortKey + ", sortOrder=" + sortOrder + "]";
|
||||
}
|
||||
|
||||
public PageRequest toPageRequest() {
|
||||
int actualPage = page - 1 < 0 ? 0 : page - 1;
|
||||
int actualPageSize = pageSize <= 0 ? 50 : pageSize;
|
||||
if (sortKey == null)
|
||||
return PageRequest.of(actualPage, actualPageSize);
|
||||
|
||||
if (sortOrder == null) sortOrder = "ASC";
|
||||
|
||||
if (sortOrder.equals("DESC")) {
|
||||
return PageRequest.of(actualPage, actualPageSize, Sort.by(sortKey).descending());
|
||||
} else {
|
||||
return PageRequest.of(actualPage, actualPageSize, Sort.by(sortKey).ascending());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
32
src/main/java/tech/ailef/dbadmin/external/dto/PaginatedResult.java
vendored
Normal file
32
src/main/java/tech/ailef/dbadmin/external/dto/PaginatedResult.java
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
package tech.ailef.dbadmin.external.dto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PaginatedResult<T> {
|
||||
private PaginationInfo pagination;
|
||||
|
||||
private List<T> results;
|
||||
|
||||
public PaginatedResult(PaginationInfo pagination, List<T> page) {
|
||||
this.pagination = pagination;
|
||||
this.results = page;
|
||||
}
|
||||
|
||||
public PaginationInfo getPagination() {
|
||||
return pagination;
|
||||
}
|
||||
|
||||
public List<T> getResults() {
|
||||
return results;
|
||||
}
|
||||
|
||||
public boolean isEmpty() {
|
||||
return results.isEmpty();
|
||||
}
|
||||
|
||||
public int getNumberOfResults() {
|
||||
return getResults().size();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
131
src/main/java/tech/ailef/dbadmin/external/dto/PaginationInfo.java
vendored
Normal file
131
src/main/java/tech/ailef/dbadmin/external/dto/PaginationInfo.java
vendored
Normal file
@@ -0,0 +1,131 @@
|
||||
package tech.ailef.dbadmin.external.dto;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import org.springframework.util.MultiValueMap;
|
||||
|
||||
import tech.ailef.dbadmin.external.misc.Utils;
|
||||
|
||||
/**
|
||||
* Attached as output to requests that have a paginated response,
|
||||
* holds information about the current pagination.
|
||||
*/
|
||||
public class PaginationInfo {
|
||||
/**
|
||||
* How many previous and next pages to generate, used in the front-end navigation
|
||||
*/
|
||||
private static final int PAGE_RANGE = 3;
|
||||
|
||||
/**
|
||||
* The current page of results
|
||||
*/
|
||||
private int currentPage;
|
||||
|
||||
/**
|
||||
* The last page for which there are results
|
||||
*/
|
||||
private int maxPage;
|
||||
|
||||
/**
|
||||
* The current number of elements per page
|
||||
*/
|
||||
private int pageSize;
|
||||
|
||||
// TODO: Check if used
|
||||
private long maxElement;
|
||||
|
||||
private Set<QueryFilter> queryFilters;
|
||||
|
||||
private String query;
|
||||
|
||||
public PaginationInfo(int currentPage, int maxPage, int pageSize, long maxElement, String query, Set<QueryFilter> queryFilters) {
|
||||
this.currentPage = currentPage;
|
||||
this.maxPage = maxPage;
|
||||
this.pageSize = pageSize;
|
||||
this.query = query;
|
||||
this.maxElement = maxElement;
|
||||
this.queryFilters = queryFilters;
|
||||
}
|
||||
|
||||
public int getCurrentPage() {
|
||||
return currentPage;
|
||||
}
|
||||
|
||||
public void setCurrentPage(int currentPage) {
|
||||
this.currentPage = currentPage;
|
||||
}
|
||||
|
||||
public int getMaxPage() {
|
||||
return maxPage;
|
||||
}
|
||||
|
||||
public void setMaxPage(int maxPage) {
|
||||
this.maxPage = maxPage;
|
||||
}
|
||||
|
||||
public int getPageSize() {
|
||||
return pageSize;
|
||||
}
|
||||
|
||||
public void setPageSize(int pageSize) {
|
||||
this.pageSize = pageSize;
|
||||
}
|
||||
|
||||
public long getMaxElement() {
|
||||
return maxElement;
|
||||
}
|
||||
|
||||
public String getSortedPageLink(String sortKey, String sortOrder) {
|
||||
MultiValueMap<String, String> params = Utils.computeParams(queryFilters);
|
||||
|
||||
if (query != null) {
|
||||
params.put("query", new ArrayList<>());
|
||||
params.get("query").add(query);
|
||||
}
|
||||
|
||||
params.add("pageSize", "" + pageSize);
|
||||
params.add("page", "" + currentPage);
|
||||
params.add("sortKey", sortKey);
|
||||
params.add("sortOrder", sortOrder);
|
||||
|
||||
return Utils.getQueryString(params);
|
||||
}
|
||||
|
||||
public String getLink(int page) {
|
||||
MultiValueMap<String, String> params = Utils.computeParams(queryFilters);
|
||||
|
||||
if (query != null) {
|
||||
params.put("query", new ArrayList<>());
|
||||
params.get("query").add(query);
|
||||
}
|
||||
|
||||
params.add("pageSize", "" + pageSize);
|
||||
params.add("page", "" + page);
|
||||
|
||||
return Utils.getQueryString(params);
|
||||
}
|
||||
|
||||
public List<Integer> getBeforePages() {
|
||||
return IntStream.range(Math.max(currentPage - PAGE_RANGE, 1), currentPage).boxed().collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public List<Integer> getAfterPages() {
|
||||
return IntStream.range(currentPage + 1, Math.min(currentPage + PAGE_RANGE, maxPage + 1)).boxed().collect(Collectors.toList());
|
||||
}
|
||||
//
|
||||
// public String getSortKey() {
|
||||
// return sortKey;
|
||||
// }
|
||||
//
|
||||
// public String getSortOrder() {
|
||||
// return sortOrder;
|
||||
// }
|
||||
|
||||
public boolean isLastPage() {
|
||||
return currentPage == maxPage;
|
||||
}
|
||||
}
|
||||
57
src/main/java/tech/ailef/dbadmin/external/dto/QueryFilter.java
vendored
Normal file
57
src/main/java/tech/ailef/dbadmin/external/dto/QueryFilter.java
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
package tech.ailef.dbadmin.external.dto;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class QueryFilter {
|
||||
private String field;
|
||||
|
||||
private CompareOperator op;
|
||||
|
||||
private String value;
|
||||
|
||||
public QueryFilter(String field, CompareOperator op, String value) {
|
||||
this.field = field;
|
||||
this.op = op;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getField() {
|
||||
return field;
|
||||
}
|
||||
|
||||
public CompareOperator getOp() {
|
||||
return op;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(field, op, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
String displayValue = value;
|
||||
if (value.length() > 10) {
|
||||
displayValue = value.substring(0, 4) + "..." + value.substring(value.length() - 4);
|
||||
}
|
||||
return "'" + field + "' " + op.getDisplayName() + " '" + displayValue + "'";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
QueryFilter other = (QueryFilter) obj;
|
||||
return Objects.equals(field, other.field) && Objects.equals(op, other.op) && Objects.equals(value, other.value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user