package io.loli.sc.server.entity.pan; import io.loli.sc.server.entity.User; import java.io.Serializable; import java.util.Date; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; import com.fasterxml.jackson.annotation.JsonIgnore; @Table(name = "storage_file") @Entity @NamedQueries(value = { @NamedQuery(name = "FileEntity.listByUserIdAndFolderId", query = "SELECT f FROM FileEntity f WHERE f.user.id=:userId and f.folder.id=:folderId and f.delFlag=:delFlag") }) public class FileEntity implements Serializable { private static final long serialVersionUID = -2369576302405913467L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; @Column(name = "file_name") private String originName; @Column(name = "sharing_status") private String sharingStatus; public static final String SHARING = "sharing"; public static final String PRIVATE = "private"; @Column(name = "new_name") private String newName; @Column(name = "file_key") private String key; @Column(name = "length") private Long length; @Column(name = "del_flag") private Boolean delFlag = false; @OneToMany(mappedBy = "file") private List<LinkEntity> links; public List<LinkEntity> getLinks() { return links; } public void setLinks(List<LinkEntity> links) { this.links = links; } public Boolean getDelFlag() { return delFlag; } public void setDelFlag(Boolean delFlag) { this.delFlag = delFlag; } public Long getLength() { return length; } public void setLength(Long length) { this.length = length; } @Transient private String size; public String getSize() { if (length == null) { return ""; } String size = ""; if (length < 1024) { size = length + " Byte"; } if (1024 <= length && length < 1024 * 1024) { size = String.format("%.2f", (double) length / 1024) + "KB"; } if (1024 * 1024 <= length && length < 1024 * 1024 * 1024) { size = String.format("%.2f", (double) length / 1024 / 1024) + "MB"; } if (1024 * 1024 * 1024 <= length && length < 1024 * 1024 * 1024 * 1024) { size = String.format("%.2f", (double) length / 1024 / 1024) + "GB"; } return size; } @Column private String md5; @Temporal(TemporalType.TIMESTAMP) @Column(name = "create_date") private Date createDate; // 所属的父文件夹 @ManyToOne @JoinColumn(name = "folder_id") private FolderEntity folder; @ManyToOne @JoinColumn(name = "user_id") @JsonIgnore private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getMd5() { return md5; } public void setMd5(String md5) { this.md5 = md5; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } public FolderEntity getFolder() { return folder; } public void setFolder(FolderEntity folder) { this.folder = folder; } public String getOriginName() { return originName; } public void setOriginName(String originName) { this.originName = originName; } public String getNewName() { return newName; } public void setNewName(String newName) { this.newName = newName; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getSharingStatus() { return sharingStatus; } public void setSharingStatus(String sharingStatus) { this.sharingStatus = sharingStatus; } public void setSize(String size) { this.size = size; } }