This commit is contained in:
@@ -228,33 +228,97 @@ public class FileEntityHandler implements RequestHandler {
|
|||||||
Map.of("file_status", newStatus, "file_id", fileId));
|
Map.of("file_status", newStatus, "file_id", fileId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// private BaseResponse handleSearchFiles(BaseRequest request, FileEntityRequest fileRequest) {
|
||||||
|
// try {
|
||||||
|
// Long userId = authService.useUserAuthToken(fileRequest.getToken());
|
||||||
|
// int page = fileRequest.getPage() != null ? fileRequest.getPage() : 1;
|
||||||
|
// int pageSize = fileRequest.getPageSize() != null ? fileRequest.getPageSize() : 20;
|
||||||
|
// String fileRequestSortBy = fileRequest.getSortBy();
|
||||||
|
// String sortBy = !fileRequestSortBy.equals("") ? fileRequest.getSortBy(): "createdAt";
|
||||||
|
// sortBy = sortBy.equals("fileName") ? "originalFileName" : sortBy;
|
||||||
|
//
|
||||||
|
// String sortOrder = fileRequest.getSortOrder();
|
||||||
|
// Sort.Direction direction = (sortOrder != null && sortOrder.equalsIgnoreCase("desc"))
|
||||||
|
// ? Sort.Direction.DESC
|
||||||
|
// : Sort.Direction.ASC;
|
||||||
|
// Sort sort = Sort.by(direction, sortBy);
|
||||||
|
//
|
||||||
|
// Pageable pageable = PageRequest.of(page, pageSize, sort);
|
||||||
|
// FileResponse userFiles = fileEntityService.getUserFiles(userId, pageable, request.getVersion());
|
||||||
|
//
|
||||||
|
// FileListResponse response = FileListResponse.builder()
|
||||||
|
// .files(userFiles.getFiles())
|
||||||
|
// .totalCount(userFiles.getTotalCount())
|
||||||
|
// .totalSize(userFiles.getTotalSize())
|
||||||
|
// .formattedTotalSize(fileEntityService.formatFileSize(userFiles.getTotalSize()))
|
||||||
|
// .page(page)
|
||||||
|
// .pageSize(pageSize)
|
||||||
|
// .sortBy(sortBy)
|
||||||
|
// .sortOrder(sortOrder)
|
||||||
|
// .build();
|
||||||
|
//
|
||||||
|
// return new BaseResponse(request.getMsgId(),
|
||||||
|
// MessageCode.SUCCESS.getCode(),
|
||||||
|
// MessageCode.SUCCESS.getDescription(),
|
||||||
|
// response);
|
||||||
|
//
|
||||||
|
// } catch (NotFoundAuthToken e) {
|
||||||
|
// return new BaseResponse(request.getMsgId(),
|
||||||
|
// MessageCode.INVALID_TOKEN.getCode(),
|
||||||
|
// "Authentication required", null);
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// log.error("Error searching files", e);
|
||||||
|
// return new BaseResponse(request.getMsgId(),
|
||||||
|
// MessageCode.FILE_UPLOAD_ERROR.getCode(),
|
||||||
|
// "Failed to search files: " + e.getMessage(), null);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
private BaseResponse handleSearchFiles(BaseRequest request, FileEntityRequest fileRequest) {
|
private BaseResponse handleSearchFiles(BaseRequest request, FileEntityRequest fileRequest) {
|
||||||
try {
|
try {
|
||||||
Long userId = authService.useUserAuthToken(fileRequest.getToken());
|
Long userId = authService.useUserAuthToken(fileRequest.getToken());
|
||||||
int page = fileRequest.getPage() != null ? fileRequest.getPage() : 1;
|
int page = fileRequest.getPage() != null ? fileRequest.getPage() : 1;
|
||||||
int pageSize = fileRequest.getPageSize() != null ? fileRequest.getPageSize() : 20;
|
int pageSize = fileRequest.getPageSize() != null ? fileRequest.getPageSize() : 20;
|
||||||
String fileRequestSortBy = fileRequest.getSortBy();
|
|
||||||
String sortBy = !fileRequestSortBy.equals("") ? fileRequest.getSortBy(): "createdAt";
|
|
||||||
sortBy = sortBy.equals("fileName") ? "originalFileName" : sortBy;
|
|
||||||
|
|
||||||
String sortOrder = fileRequest.getSortOrder();
|
String sortBy = fileRequest.getSortBy() != null ? fileRequest.getSortBy() : "fileName";
|
||||||
Sort.Direction direction = (sortOrder != null && sortOrder.equalsIgnoreCase("desc"))
|
SortOrder sortOrder = SortOrder.fromString(fileRequest.getSortOrder());
|
||||||
? Sort.Direction.DESC
|
|
||||||
: Sort.Direction.ASC;
|
|
||||||
Sort sort = Sort.by(direction, sortBy);
|
|
||||||
|
|
||||||
Pageable pageable = PageRequest.of(page, pageSize, sort);
|
FileResponse allFiles = fileEntityService.getUserFiles(userId, 1, 1000, request.getVersion());
|
||||||
FileResponse userFiles = fileEntityService.getUserFiles(userId, pageable, request.getVersion());
|
|
||||||
|
String searchQuery = fileRequest.getQuery() != null ? fileRequest.getQuery().toLowerCase().trim() : "";
|
||||||
|
String[] searchTerms = searchQuery.split("\\s+");
|
||||||
|
String filterType = fileRequest.getType();
|
||||||
|
String dateFilter = fileRequest.getDateFilter();
|
||||||
|
|
||||||
|
List<FileEntityResponse> filteredFiles = allFiles.getFiles().stream()
|
||||||
|
.filter(f -> matchesSearch(f, searchTerms, searchQuery, filterType))
|
||||||
|
.filter(f -> matchesDateFilter(f, dateFilter))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
Comparator<FileEntityResponse> comparator = getComparator(sortBy, sortOrder);
|
||||||
|
filteredFiles.sort(comparator);
|
||||||
|
|
||||||
|
int start = (page - 1) * pageSize;
|
||||||
|
int end = Math.min(start + pageSize, filteredFiles.size());
|
||||||
|
|
||||||
|
if (start >= filteredFiles.size()) {
|
||||||
|
return createEmptyResponse(request, page, pageSize, sortBy, sortOrder.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
List<FileEntityResponse> paginatedFiles = filteredFiles.subList(start, end);
|
||||||
|
long totalSize = paginatedFiles.stream()
|
||||||
|
.mapToLong(FileEntityResponse::getFileSize)
|
||||||
|
.sum();
|
||||||
|
|
||||||
FileListResponse response = FileListResponse.builder()
|
FileListResponse response = FileListResponse.builder()
|
||||||
.files(userFiles.getFiles())
|
.files(paginatedFiles)
|
||||||
.totalCount(userFiles.getTotalCount())
|
.totalCount(filteredFiles.size())
|
||||||
.totalSize(userFiles.getTotalSize())
|
.totalSize(totalSize)
|
||||||
.formattedTotalSize(fileEntityService.formatFileSize(userFiles.getTotalSize()))
|
.formattedTotalSize(fileEntityService.formatFileSize(totalSize))
|
||||||
.page(page)
|
.page(page)
|
||||||
.pageSize(pageSize)
|
.pageSize(pageSize)
|
||||||
.sortBy(sortBy)
|
.sortBy(sortBy)
|
||||||
.sortOrder(sortOrder)
|
.sortOrder(sortOrder.getValue())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
return new BaseResponse(request.getMsgId(),
|
return new BaseResponse(request.getMsgId(),
|
||||||
|
|||||||
Reference in New Issue
Block a user