Files
zfile/src/main/java/im/zhaojun/common/util/FileComparator.java
2019-10-01 09:00:48 +08:00

48 lines
1.2 KiB
Java

package im.zhaojun.common.util;
import im.zhaojun.common.enums.FileTypeEnum;
import im.zhaojun.common.model.FileItem;
import java.util.Comparator;
/**
* 文件比较器
*
* - 文件夹始终比文件排序高
* - 默认按照名称排序
* - 默认排序为升序
* - 按名称排序不区分大小写
*/
public class FileComparator implements Comparator<FileItem> {
private String sortBy;
private String order;
public FileComparator(String sortBy, String order) {
this.sortBy = sortBy;
this.order = order;
}
@Override
public int compare(FileItem o1, FileItem o2) {
FileTypeEnum o1Type = o1.getType();
FileTypeEnum o2Type = o2.getType();
if (o1Type.equals(o2Type)) {
int result;
switch (sortBy) {
case "time": result = o1.getTime().compareTo(o2.getTime()); break;
case "size": result = o1.getSize().compareTo(o2.getSize()); break;
default: result = o1.getName().compareToIgnoreCase(o2.getName());
}
return "asc".equals(order) ? result : -result;
}
if (o1Type.equals(FileTypeEnum.FOLDER)) {
return -1;
} else {
return 1;
}
}
}