|
|
@@ -0,0 +1,207 @@
|
|
|
+package com.x.general.core.entity.general;
|
|
|
+
|
|
|
+import com.x.base.core.entity.JpaObject;
|
|
|
+import com.x.base.core.entity.Storage;
|
|
|
+import com.x.base.core.entity.StorageObject;
|
|
|
+import com.x.base.core.entity.StorageType;
|
|
|
+import com.x.base.core.entity.annotation.CheckPersist;
|
|
|
+import com.x.base.core.entity.annotation.ContainerEntity;
|
|
|
+import com.x.base.core.project.annotation.FieldDescribe;
|
|
|
+import com.x.base.core.project.tools.DateTools;
|
|
|
+import com.x.general.core.entity.PersistenceProperties;
|
|
|
+import org.apache.commons.io.FilenameUtils;
|
|
|
+import org.apache.commons.lang3.BooleanUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.apache.openjpa.persistence.jdbc.Index;
|
|
|
+
|
|
|
+import javax.persistence.*;
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+@ContainerEntity(dumpSize = 10, type = ContainerEntity.Type.content, reference = ContainerEntity.Reference.strong)
|
|
|
+@Entity
|
|
|
+@Table(name = PersistenceProperties.General.File.table, uniqueConstraints = {
|
|
|
+ @UniqueConstraint(name = PersistenceProperties.General.File.table + JpaObject.IndexNameMiddle
|
|
|
+ + JpaObject.DefaultUniqueConstraintSuffix, columnNames = { JpaObject.IDCOLUMN,
|
|
|
+ JpaObject.CREATETIMECOLUMN, JpaObject.UPDATETIMECOLUMN, JpaObject.SEQUENCECOLUMN }) })
|
|
|
+@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
|
|
|
+@Storage(type = StorageType.general)
|
|
|
+public class File extends StorageObject {
|
|
|
+
|
|
|
+ private static final long serialVersionUID = -8883987079043800355L;
|
|
|
+
|
|
|
+ private static final String TABLE = PersistenceProperties.General.File.table;
|
|
|
+
|
|
|
+ public String getId() {
|
|
|
+ return id;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setId(String id) {
|
|
|
+ this.id = id;
|
|
|
+ }
|
|
|
+
|
|
|
+ @FieldDescribe("数据库主键,自动生成.")
|
|
|
+ @Id
|
|
|
+ @Column(length = length_id, name = ColumnNamePrefix + id_FIELDNAME)
|
|
|
+ private String id = createId();
|
|
|
+
|
|
|
+ /* 以上为 JpaObject 默认字段 */
|
|
|
+
|
|
|
+ public void onPersist() throws Exception {
|
|
|
+ this.lastUpdateTime = new Date();
|
|
|
+ /* 如果扩展名为空去掉null */
|
|
|
+ this.extension = StringUtils.trimToEmpty(extension);
|
|
|
+ }
|
|
|
+
|
|
|
+ /* 更新运行方法 */
|
|
|
+
|
|
|
+ public File() {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public File(String storage, String name, String person) throws Exception {
|
|
|
+ if (StringUtils.isEmpty(storage)) {
|
|
|
+ throw new Exception("storage can not be empty.");
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(name)) {
|
|
|
+ throw new Exception("name can not be empty.");
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(person)) {
|
|
|
+ throw new Exception("person can not be empty.");
|
|
|
+ }
|
|
|
+ this.storage = storage;
|
|
|
+ Date now = new Date();
|
|
|
+ this.setCreateTime(now);
|
|
|
+ this.lastUpdateTime = now;
|
|
|
+ this.name = name;
|
|
|
+ this.extension = StringUtils.lowerCase(FilenameUtils.getExtension(name));
|
|
|
+ this.person = person;
|
|
|
+ if (null == this.extension) {
|
|
|
+ throw new Exception("extension can not be null.");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String path() throws Exception {
|
|
|
+ if (StringUtils.isEmpty(id)) {
|
|
|
+ throw new Exception("id can not be empty.");
|
|
|
+ }
|
|
|
+ String str = DateTools.compactDate(this.getCreateTime());
|
|
|
+ str += PATHSEPARATOR;
|
|
|
+ str += this.id;
|
|
|
+ str += StringUtils.isEmpty(this.extension) ? "" : ("." + this.extension);
|
|
|
+ return str;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getStorage() {
|
|
|
+ return storage;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setStorage(String storage) {
|
|
|
+ this.storage = storage;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Long getLength() {
|
|
|
+ return length;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setLength(Long length) {
|
|
|
+ this.length = length;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getName() {
|
|
|
+ return name;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setName(String name) {
|
|
|
+ this.name = name;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getExtension() {
|
|
|
+ return extension;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setExtension(String extension) {
|
|
|
+ this.extension = extension;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Date getLastUpdateTime() {
|
|
|
+ return lastUpdateTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setLastUpdateTime(Date lastUpdateTime) {
|
|
|
+ this.lastUpdateTime = lastUpdateTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean getDeepPath() {
|
|
|
+ return BooleanUtils.isTrue(this.deepPath);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setDeepPath(Boolean deepPath) {
|
|
|
+ this.deepPath = deepPath;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static final String person_FIELDNAME = "person";
|
|
|
+ @FieldDescribe("上传用户.")
|
|
|
+ @Column(length = length_255B, name = ColumnNamePrefix + person_FIELDNAME)
|
|
|
+ @Index(name = TABLE + IndexNameMiddle + person_FIELDNAME)
|
|
|
+ @CheckPersist(allowEmpty = true)
|
|
|
+ private String person;
|
|
|
+
|
|
|
+ public static final String name_FIELDNAME = "name";
|
|
|
+ @FieldDescribe("文件名称.")
|
|
|
+ @Column(length = length_255B, name = ColumnNamePrefix + name_FIELDNAME)
|
|
|
+ @Index(name = TABLE + IndexNameMiddle + name_FIELDNAME)
|
|
|
+ @CheckPersist(allowEmpty = false)
|
|
|
+ private String name;
|
|
|
+
|
|
|
+ public static final String extension_FIELDNAME = "extension";
|
|
|
+ @FieldDescribe("扩展名,必须要有扩展名的文件才允许上传.")
|
|
|
+ @Column(length = JpaObject.length_64B, name = ColumnNamePrefix + extension_FIELDNAME)
|
|
|
+ @CheckPersist(allowEmpty = false, fileNameString = true)
|
|
|
+ private String extension;
|
|
|
+
|
|
|
+ public static final String storage_FIELDNAME = "storage";
|
|
|
+ @FieldDescribe("存储器的名称,也就是多个存放节点的名字.")
|
|
|
+ @Column(length = JpaObject.length_64B, name = ColumnNamePrefix + storage_FIELDNAME)
|
|
|
+ @CheckPersist(allowEmpty = false, simplyString = true)
|
|
|
+ private String storage;
|
|
|
+
|
|
|
+ public static final String length_FIELDNAME = "length";
|
|
|
+ @FieldDescribe("文件大小.")
|
|
|
+ @Column(name = ColumnNamePrefix + length_FIELDNAME)
|
|
|
+ @CheckPersist(allowEmpty = true)
|
|
|
+ private Long length;
|
|
|
+
|
|
|
+ public static final String lastUpdateTime_FIELDNAME = "lastUpdateTime";
|
|
|
+ @FieldDescribe("最后更新时间")
|
|
|
+ @Column(name = ColumnNamePrefix + lastUpdateTime_FIELDNAME)
|
|
|
+ @Index(name = TABLE + IndexNameMiddle + lastUpdateTime_FIELDNAME)
|
|
|
+ @CheckPersist(allowEmpty = false)
|
|
|
+ private Date lastUpdateTime;
|
|
|
+
|
|
|
+ public static final String deepPath_FIELDNAME = "deepPath";
|
|
|
+ @FieldDescribe("是否使用更深的路径.")
|
|
|
+ @CheckPersist(allowEmpty = true)
|
|
|
+ @Column(name = ColumnNamePrefix + deepPath_FIELDNAME)
|
|
|
+ private Boolean deepPath;
|
|
|
+
|
|
|
+ public String getPerson() {
|
|
|
+ return person;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPerson(String person) {
|
|
|
+ this.person = person;
|
|
|
+ }
|
|
|
+}
|